Nexus私有仓库+IDEA配置远程推送

news2024/11/24 11:27:54

目录

一、docker安装nexus本地私服,Idea通过maven配置deploy本地jar包(简单)

二、docker push镜像到第三方nexus远程私服(shell命令操作)

三、springboot通过maven插件自动生成docker镜像并push到nexus私服(难)


代码有代码的管理平台,比如GitHub、GitLab、码云等。镜像也有镜像的管理平台,比如DockerHub,以及本文中的nexus。 Nexus是当前最流行的Maven仓库管理软件。本文讲解使用nexus作为docker镜像仓库。

在这里插入图片描述

SNAPSHOT
快照版本,在 maven 中 SNAPSHOT 版本代表正式发布(release)的版本之前的开发版本,在 pom 中用 x.y-SNAPSHOT 表示。

RELEASE
发布版本,稳定版本,在 maven 中 RELEASE 代表着稳定的版本,unchange,不可改变的,在 maven 中 SNAPSHOT 与 RELEASE 版本在策略上是完全不同的方式,SNAPSHOT 会根据你的配置不同,频繁的从远程仓库更新到本地仓库;而 RELEASE 则只会在第一次下载到本地仓库,以后则会先直接从本地仓库中寻找。


一、docker安装nexus本地私服,Idea通过maven配置deploy本地jar包(简单)


使用docker将nexus拉取到本地,启动nexus容器,即可本地访问(注意初始登录密码在容器的哪个位置)。然后在Idea中进行settings.xml文件和pom.xml文件的配置。

1. 拉取nexus镜像

docker pull sonatype/nexus3

2. 启动容器

docker run -tid -p 8081:8081 --privileged=true --name nexus3 -v /docker/nexus/nexus-data:/var/nexus-data --restart=always docker.io/sonatype/nexus3
-tid  :创建守护式容器 。
-p 8081:8081 :宿主机端口(对外访问端口):容器映射端口。
               这2个端口可不一样。浏览器访问URL用前面个端口 。
--privileged=true :容器访问宿主机的多级目录时可能会权限不足,故给 root 权限 。
--name nexus3 :给容器取名,可任意设定。
-v $PWD/nexus-data:/var/nexus-data :
    把容器中的 nexus-data 目录挂载到宿主机当前路径下的 nexus-data 下。
    方便以后查看相关数据。
    $PWD :取当前路径。此处可以写死为某个完整的确定的目录。 
    挂载格式为: -v  宿主机目录 :容器目录 。         
--restart=always :服务挂后,自动重启 。
docker.io/sonatype/nexus3 :镜像名 。

3. 通过启动日志查看启动是否成功

docker logs -f nexus3

4. 本地访问并登陆(初始密码在容器的etc文件下,登录账户为admin)

http://ip:8081

5. 在idea的运行使用的settings文件上进行私服配置

<?xml version="1.0" encoding="UTF-8"?>
 
<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>D:\mvn_repo\repository</localRepository>
 
 
    <!-- 以下配置为上传jar包配置 -->
    <pluginGroups>
 
    </pluginGroups>
 
    <proxies>
 
    </proxies>
 
    <servers>
        <server>
            <!-- id,对应项目里面pom.xml里面distributionManagement配置的id -->
            <id>maven-releases</id>
            <!-- 登录nexus的用户名 -->
            <username>admin</username>
            <!-- 登录nexus的密码 -->
            <password>admin123</password>
        </server>
        <server>
            <!-- id,对应项目里面pom.xml里面distributionManagement配置的id -->
            <id>maven-snapshots</id>
            <!-- 登录nexus的用户名 -->
            <username>admin</username>
            <!-- 登录nexus的密码 -->
            <password>admin123</password>
        </server>
        <!-- 配置拦截器mirror登录的用户名密码。他会拦截所有的请求到mirror指定的地址下载jar包 如果只需要去私服下载jar包则只需配置此项 -->
        <server>
            <!-- id,对应mirror中id -->
            <id>nexus</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
 
 
    <!-- 以下配置为下载jar包配置 通用 -->
 
    <mirrors>
        <!-- 强制让jar包下载走私服 -->
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://192.168.65.129:8081/repository/maven-public/</url>
        </mirror>
    </mirrors>
 
    <profiles>
        <profile>
            <!-- 对应activeProfiles-activeProfile的内容 -->
            <id>nexus</id>
            <!-- 仓库地址 -->
            <repositories>
                <repository>
                    <!-- 私服id,覆盖maven-model模块下的父id,让maven不走中央仓库下载,走私服下载 -->
                    <id>central</id>
                    <!-- 名字 -->
                    <name>Nexus</name>
                    <!-- 私服地址,写central后,会去mirror里面找 -->
                    <url>http://central</url>
                    <!-- 支持releases版本 -->
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <!-- 支持snapshots版本 -->
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <!-- 插件地址 -->
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <name>Nexus Plugin Repository</name>
                    <url>http://central</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
            <!-- 配置全局的url地址 供上传jar包时动态获取 -->
            <properties>
                <ReleaseRepository>http://192.168.65.129:8081/repository/maven-releases/</ReleaseRepository>
                <SnapshotRepository>http://192.168.65.129:8081/repository/maven-snapshots/</SnapshotRepository>
            </properties>
        </profile>
    </profiles>
 
    <!-- 选择使用的profile -->
    <activeProfiles>
        <activeProfile>nexus</activeProfile>
        <!-- <activeProfile>rdc</activeProfile>-->
    </activeProfiles>
 
 
</settings>

6. 在项目的pom.xml文件中配置推送url地址

 <distributionManagement>
    <repository>
      <id>nexus</id>
      <name>nexus</name>
      <url>http://xxxx:port/repository/maven-snapshots/</url>
    </repository>

    <snapshotRepository>
      <id>maven-snapshots</id>
      <name>maven-snapshots</name>
      <url>http://xxxx:port/repository/maven-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

7. 执行命令,推送 jar 到私服

 mvn  clean  deploy -Dmaven.test.skip=true 

二、docker push镜像到第三方nexus远程私服(shell命令操作)

这里的nexus私服是公司配的,用于组内项目的jar包、镜像管理仓库。

   step1: 本地登录nexus(输入用户名和密码)

docker login nexus.***.com:8012/

说明:8081是nexus的访问地址,8012端口是在nexus上设置的推送地址,也可用于登录。

   step2:查看本地镜像(以镜像openjdk:8-jdk-alpine为例)

   step3:tag镜像

  • docker tag openjdk:8-jdk-alpine nexus.***.com:8012/ddpt/openjdk:8-jdk-alpine
    

    step4:push镜像

  • docker push nexus.***.com:8012/ddpt/openjdk:8-jdk-alpine
    

    三、springboot通过maven插件自动生成docker镜像并push到nexus私服(难)

          需求:在Springboot项目中通过maven配置+Dockerfile文件+setting文件配置,实现Springboot项目的自动打包镜像,自动推送到远程nexus私服。

step1:Dockerfile文件编写。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
#把当前项目下web-app-template-1.0.0.jar 改名为web-app-template.jar添加到镜像中
ADD web-app-template-1.0.0.jar web-app-template.jar
#指定端口,最好写与项目配置的端口
EXPOSE 8081
#在镜像中运行/web-app-template.jar包,这样在运行镜像的时候就可以启动好web-app-template.jar
#-Djava.security.egd=file:/dev/./urandom 是一个启动参数的优化,用于解决应用可能(在需要大量使用随机数的情况下)启动慢的问题
#(应用的sessionID是通过该参数的配置快速产生的随机数)
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/web-app-template.jar"]

step2:settings.xml文件中配置用户名、密码和邮箱

 <server>
      <id>docker-nexus</id>
      <username>p****DockerUser</username>
      <password>l****pB</password>
      <configuration>
              <email>liu****@***.***.com</email>
      </configuration>
 </server>

step3:pom.xml文件配置

  <properties>
        <docker.repo>nexus.****.com:8012</docker.repo>
        <docker.repository>webapptemplate</docker.repository>
        <skipTests>true</skipTests>
  </properties>



 <!-- The configuration of maven-assembly-plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>${docker.repository}/${project.artifactId}:${project.version}_SNAPSHOT</imageName>
                    <!--指定dockerFile的路径 -->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    <!--docker server地址 docker服务端地址,即Docker安装地址,并开启2375端口(也可以安装在本地并开启2375端口)-->
                    <dockerHost>http://10.154.7.202:2375</dockerHost>
                    <serverId>docker-nexus</serverId>
                    <registryUrl>http://nexus.cmss.com:8082/webapptemplate/</registryUrl>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
                <executions>
                    <!--绑定Docker build镜像 命令到 Maven 的package阶段-->
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                    <!--绑定Docker tag镜像 命令到 Maven 的package阶段-->
                    <execution>
                        <id>tag-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>tag</goal>
                        </goals>
                        <configuration>
             <!--镜像名称--> <image>${docker.repository}/${project.artifactId}:${project.version}_SNAPSHOT</image>
          <!--镜像Tag名称--> <newName>${docker.repo}/${docker.repository}/${project.artifactId}:${project.version}_SNAPSHOT</newName>
                            <forceTags>true</forceTags>
                        </configuration>
                    </execution>
                    <!--绑定Docker push镜像 命令到 Maven 的package阶段-->
                    <execution>
                        <id>push-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>push</goal>
                        </goals>
                        <configuration>
                            <imageName>${docker.repo}/${docker.repository}/${project.artifactId}:${project.version}_SNAPSHOT</imageName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

step4:打包并自动推送镜像

mvn clean deploy -Dmaven.test.skip=true

成功运行日志

"D:\Program Files\Java\jdk1.8.0_191\bin\java.exe" -Dmaven.multiModuleProjectDirectory=D:\CMSSGitLab\dig-common\template\web-app-template "-Dmaven.home=C:\IntelliJ IDEA 2020.1\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\IntelliJ IDEA 2020.1\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=C:\IntelliJ IDEA 2020.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\IntelliJ IDEA 2020.1\lib\idea_rt.jar=12520:C:\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\IntelliJ IDEA 2020.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar" org.codehaus.classworlds.Launcher -Didea.version2020.1 --update-snapshots -s C:\Users\Administrator\.m2\settings.xml package -P dev
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.chinamobile.cmss.dig:web-app-template:jar:1.0.0
[WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.springframework.boot:spring-boot-maven-plugin @ line 279, column 21
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] 
[INFO] -------------< com.chinamobile.cmss.dig:web-app-template >--------------
[INFO] Building web-app-template 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ web-app-template ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 6 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ web-app-template ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 25 source files to D:\CMSSGitLab\dig-common\template\web-app-template\target\classes
[INFO] /D:/CMSSGitLab/dig-common/template/web-app-template/src/main/java/com/chinamobile/cmss/dig/interceptor/HttpResponseInterceptor.java: D:\CMSSGitLab\dig-common\template\web-app-template\src\main\java\com\chinamobile\cmss\dig\interceptor\HttpResponseInterceptor.java使用了未经检查或不安全的操作。
[INFO] /D:/CMSSGitLab/dig-common/template/web-app-template/src/main/java/com/chinamobile/cmss/dig/interceptor/HttpResponseInterceptor.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ web-app-template ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ web-app-template ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files to D:\CMSSGitLab\dig-common\template\web-app-template\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ web-app-template ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ web-app-template ---
[INFO] Building jar: D:\CMSSGitLab\dig-common\template\web-app-template\target\web-app-template-1.0.0.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.1.RELEASE:repackage (repackage) @ web-app-template ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.1.RELEASE:repackage (default) @ web-app-template ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- maven-assembly-plugin:3.3.0:single (make-assembly) @ web-app-template ---
[INFO] Reading assembly descriptor: profile/dev/package.xml
[INFO] Building tar: D:\CMSSGitLab\dig-common\template\web-app-template\target\web-app-template-1.0.0-server.tar.gz
[INFO] 
[INFO] --- docker-maven-plugin:0.4.13:build (build-image) @ web-app-template ---
[INFO] Copying D:\CMSSGitLab\dig-common\template\web-app-template\target\web-app-template-1.0.0.jar -> D:\CMSSGitLab\dig-common\template\web-app-template\target\docker\web-app-template-1.0.0.jar
[INFO] Copying D:\CMSSGitLab\dig-common\template\web-app-template\src\main\docker\Dockerfile -> D:\CMSSGitLab\dig-common\template\web-app-template\target\docker\Dockerfile
[INFO] Building image webapptemplate/web-app-template:1.0.0_SNAPSHOT
Step 1/5 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/5 : VOLUME /tmp
 ---> Using cache
 ---> 3a9992956a89
Step 3/5 : ADD web-app-template-1.0.0.jar web-app-template.jar
 ---> 30b7fcaf08ed
Removing intermediate container c555a3b04b5a
Step 4/5 : EXPOSE 8081
 ---> Running in d15cfd67a278
 ---> 5d6a58f1218c
Removing intermediate container d15cfd67a278
Step 5/5 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /web-app-template.jar
 ---> Running in 2fbb8ceefe70
 ---> c8cb14dd046c
Removing intermediate container 2fbb8ceefe70
Successfully built c8cb14dd046c
[INFO] Built webapptemplate/web-app-template:1.0.0_SNAPSHOT
[INFO] 
[INFO] --- docker-maven-plugin:0.4.13:tag (tag-image) @ web-app-template ---
[INFO] Creating tag nexus.cmss.com:8012/webapptemplate/web-app-template:1.0.0_SNAPSHOT from webapptemplate/web-app-template:1.0.0_SNAPSHOT
[INFO] 
[INFO] --- docker-maven-plugin:0.4.13:push (push-image) @ web-app-template ---
[INFO] Pushing nexus.cmss.com:8012/webapptemplate/web-app-template:1.0.0_SNAPSHOT
The push refers to a repository [nexus.cmss.com:8012/webapptemplate/web-app-template]
107680152efb: Preparing 
ceaf9e1ebef5: Preparing 
9b9b7f3d56a0: Preparing 
f1b5933fe4b5: Preparing 
ceaf9e1ebef5: Layer already exists 
9b9b7f3d56a0: Layer already exists 
f1b5933fe4b5: Layer already exists 
107680152efb: Pushing [>                                                  ] 524.8 kB/58.48 MB
107680152efb: Pushing [=>                                                 ] 2.196 MB/58.48 MB
107680152efb: Pushing [===>                                               ] 3.867 MB/58.48 MB
107680152efb: Pushing [====>                                              ] 5.538 MB/58.48 MB
107680152efb: Pushing [======>                                            ] 7.209 MB/58.48 MB
107680152efb: Pushing [========>                                          ] 9.438 MB/58.48 MB
107680152efb: Pushing [=========>                                         ] 11.11 MB/58.48 MB
107680152efb: Pushing [===========>                                       ] 13.34 MB/58.48 MB
107680152efb: Pushing [=============>                                     ] 15.57 MB/58.48 MB
107680152efb: Pushing [==============>                                    ] 17.24 MB/58.48 MB
107680152efb: Pushing [================>                                  ] 19.46 MB/58.48 MB
107680152efb: Pushing [==================>                                ] 21.69 MB/58.48 MB
107680152efb: Pushing [====================>                              ] 23.92 MB/58.48 MB
107680152efb: Pushing [======================>                            ] 26.15 MB/58.48 MB
107680152efb: Pushing [========================>                          ] 28.38 MB/58.48 MB
107680152efb: Pushing [==========================>                        ] 30.61 MB/58.48 MB
107680152efb: Pushing [============================>                      ] 32.83 MB/58.48 MB
107680152efb: Pushing [=============================>                     ] 35.06 MB/58.48 MB
107680152efb: Pushing [===============================>                   ] 37.29 MB/58.48 MB
107680152efb: Pushing [=================================>                 ] 39.52 MB/58.48 MB
107680152efb: Pushing [===================================>               ] 41.75 MB/58.48 MB
107680152efb: Pushing [=====================================>             ] 43.98 MB/58.48 MB
107680152efb: Pushing [=======================================>           ]  46.2 MB/58.48 MB
107680152efb: Pushing [========================================>          ] 47.87 MB/58.48 MB
107680152efb: Pushing [==========================================>        ]  50.1 MB/58.48 MB
107680152efb: Pushing [============================================>      ] 52.33 MB/58.48 MB
107680152efb: Pushing [==============================================>    ] 54.56 MB/58.48 MB
107680152efb: Pushing [================================================>  ] 56.23 MB/58.48 MB
107680152efb: Pushing [=================================================> ] 58.46 MB/58.48 MB
107680152efb: Pushing [==================================================>] 58.48 MB
107680152efb: Pushed 
1.0.0_SNAPSHOT: digest: sha256:769e960e2d4981611f4312cfa1da2f752829a7d799e63bee0d7d4d139ca5fec2 size: 1159
null: null 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  48.692 s
[INFO] Finished at: 2020-07-09T10:14:03+08:00
[INFO] ------------------------------------------------------------------------

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

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

相关文章

哈夫曼编码:高效的数据压缩方案

在计算机科学中&#xff0c;数据的压缩与编码一直是重要的研究领域。哈夫曼编码&#xff08;Huffman Coding&#xff09;作为一种常用的数据压缩方法&#xff0c;以其高效的压缩率和广泛的应用而闻名。本文将介绍哈夫曼编码的原理、构建过程以及代码实现&#xff0c;并通过符号…

日常Debug之:智子攻陷了我的MCU!!!

环境&#xff1a;AT32F403AVGT7、IAR8.30、J-LINK 现象&#xff1a;定时器中断里遇到 -1 < 0 返回false的情况。如图&#xff1a; 出现了if(-1 > 0){}为True的情况。 尼马&#xff01;&#xff01;&#xff01;是不是被智子监控了呢&#xff1f; 经过分析&#xff1a;…

点亮社交新篇章:探索 WeTalk 新增的头像与群聊功能

目录 引言&#xff1a; 引入头像功能&#xff1a; 头像功能的优势&#xff1a; 引入群聊功能&#xff1a; 群聊功能的优势&#xff1a; 引入头像功能&#xff1a; 查看头像&#xff1a; ​编辑 上传头像&#xff1a; 引入群聊功能&#xff1a; 创建群聊&#xff1a…

scp命令用于Windows和Linux之间复制文件

scp使用 简述Windows和Linux之间复制文件使用示例从本地复制到远程复制文件复制文件夹 从远程复制到本地复制文件复制文件夹 在Linux下&#xff08;从Linux复制到Windows&#xff09;复制文件复制文件夹 在Windows下&#xff08;从Windows复制到Linux&#xff09;复制文件复制文…

Mybatis中的分页查询,以及对于特殊符号的处理

目录 一.分页查询 1.老版本的分页查询 &#xff08;通过工具类BaseDao来实现&#xff09; 2.利用Mybatis实现分页效果 2.1最低级版本&#xff08;利用limit实现&#xff09; 首先在xml定义分页需要的方法 然后在bookbiz实现方法 其次在bookbizImpl继承此方法&#xff0c;并…

2023 CCPC 华为云计算挑战赛 D-塔

首先先来看第一轮的 假如有n个,每轮那k个 他们的高度的可能性分别为 n 1/C(n,k) n1 C(n-(k-11),1)/C(n,k) n2 C(n-(k-21),2)/C(n,k) ni C(n-(k-i1,i)/C(n,k) 通过概率和高度算出第一轮增加的期望 然后乘上m轮增加的高度加上初始高度&#xff0c;就是总共增加的高度 下面是…

YOLOv7-tracker 目标追踪 输入视频帧

参考项目&#xff1a;https://github.com/JackWoo0831/Yolov7-tracker/tree/master github链接&#xff1a;https://github.com/Whiffe/Yolov7-tracker 码云链接&#xff1a;https://gitee.com/YFwinston/Yolov7-tracker 1 项目安装 1.1 环境搭建 平台&#xff1a;AutoDL 选…

学习网络编程No.4【socket编程实战】

引言 北京时间&#xff1a;2023/8/19/23:01&#xff0c;耍了好几天&#xff0c;主要归咎于《我欲封天》这本小说&#xff0c;听了几个晚上之后逐渐入门&#xff0c;在闲暇时间又看了一下&#xff0c;小高潮直接来临&#xff0c;最终在三个昼夜下追完了&#xff0c;哈哈哈&…

Android 11 Display亮灭屏

系统休眠唤醒的时候会涉及到亮灭屏&#xff0c;下面分析下系统&#xff08;高通8155平台&#xff09;Display亮灭屏流程 1. 点亮屏幕 点亮屏幕入口在framework/base/下面LightsService.java&#xff0c;然后通过调用SurfaceControl.java ,最终调用到framework/native下面的Sur…

4.5 TCP优化

TCP 三次握手的性能提升 三次握手的过程在一个 HTTP 请求的平均时间占比 10% 以上&#xff0c;所以要正确使用三次握手的中参数&#xff0c;需要先用netstat命令查看是哪个握手阶段出了问题&#xff0c;主动发起连接的客户端优化相对简单些&#xff0c;而服务端需要监听端口&a…

【算法专题突破】双指针 - 移动零(1)

目录 写在前面 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 写在前面 在进行了剑指Offer和LeetCode hot100的毒打之后&#xff0c; 我决心系统地学习一些经典算法&#xff0c;增强我的综合算法能力。 1. 题目解析 题目链接&#xff1a;283. 移动零 - 力…

26-非父子通信 - provide inject

provide & inject 作用: 跨层级 共享数据 1. 父组件 provide 提供数据 export default{provide () {return {// 普通类型 (非响应式)color: this.color// 复杂类型 (响应式)userInfo: this.userInfo}}} 2. 子 / 孙组件 inject 取值使用 export default {inject: ["…

docker搭建owncloud,Harbor,构建镜像

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取镜像 docker pull owncloud docker pull mysql:5.6 2、安装搭建私有仓库 Harbor 1.下载docker-compose 2.安装harbor 3.编辑 harbor.yml文件 使用./intall.sh安装 4.登录 3、编写Dockerfile制作Web应用系…

优美而高效:解决服务器通信问题

题目背景 在这个问题中&#xff0c;我们面临着一幅服务器分布图。图中的每个单元格可能有服务器&#xff08;标记为1&#xff09;或者没有&#xff08;标记为0&#xff09;。我们的任务是找出能够与至少一台其他服务器进行通信的服务器数量。 算法思路 为了解决这个问题&…

Python使用pyqt5写windows桌面应用实战教程

本篇文章主要讲解,Python使用pyqt5写windows桌面应用的详细实战教程文章,主要涵盖单个界面的布局构建说明,表单构建说明,数据交互构建说明以及可直接开发的简易多界面框架实例构建说明,能够让你很快的了解pyqt在python中的使用和构建方式,快速实现一个简单的windows桌面图…

AI 绘画Stable Diffusion 研究(十五)SD Embedding详解

大家好&#xff0c;我是风雨无阻。 本期内容&#xff1a; Embedding是什么&#xff1f;Embedding有什么作用&#xff1f;Embedding如何下载安装&#xff1f;如何使用Embedding&#xff1f; 大家还记得 AI 绘画Stable Diffusion 研究&#xff08;七&#xff09; 一文读懂 Stab…

【C语言】动态内存管理,详细!!!

文章目录 前言一、为什么存在动态内存分配二、动态内存开辟函数的介绍1.malloc2.calloc3.realloc4.free 三、动态内存开辟中的常见错误1.误对NULL进行解引用操作2.对于动态开辟的空间进行了越界访问3.对于非动态开辟的内存进行了free操作4.只free掉动态开辟内存的一部分5.多次f…

vue2 vue中的常用指令

一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 **构建用户界面 ** 的 渐进式 …

Dapper

介绍 dapper是一款轻量级的ORM Dapper 被称为 ORM 之王。 以下是 Dapper 的主要功能&#xff1a; 速度快&#xff0c;性能快。 更少的代码行。 对象映射器。 静态对象绑定。 动态对象绑定。 轻松处理 SQL 查询。 易于处理存储过程。 直接对 IDBConnection 类进行操作&#xf…