当前位置: 首页 > news >正文

Maven的使用

1. Maven 简介

https://maven.apache.org/

Maven 是一个强大的项目管理和构建工具,广泛应用于 Java 项目中,旨在简化项目的依赖管理、构建、测试、部署等工作。Maven 主要通过定义 pom.xml(Project Object Model 文件)来管理项目的依赖和配置。

2. Maven 的核心概念

  • POM (Project Object Model):定义项目的基本信息、依赖、插件以及构建过程。位于项目根目录下的 pom.xml 文件是 Maven 项目的核心。
  • 依赖管理:Maven 自动下载、更新项目中引用的库和插件,并管理其版本。
  • 生命周期:Maven 的构建周期分为若干阶段,如编译、测试、打包、安装、部署等。
  • 仓库:Maven 中,依赖的库或插件来自不同的仓库,分为本地仓库、中央仓库和远程仓库(如公司内部的私服)。
    • 本地仓库:存放开发者机器上已经下载的依赖。
    • 中央仓库:Maven 官方仓库,存储广泛使用的开源库。
    • 远程仓库/私服 (Nexus、Artifactory):用于企业内部存放私有组件或镜像中央仓库,优化下载速度。

3. Maven 私服的配置

Maven 私服(Nexus、Artifactory 等)可以用于缓存依赖,发布内部库和管理版本。配置私服可以减少从中央仓库下载依赖的时间,便于在公司内部共享私有依赖。

1. 安装私服

以 Nexus Repository Manager 为例:

  • 下载 Nexus 的发行包并安装到服务器。
  • 启动 Nexus,默认端口为 8081
  • 通过 http://localhost:8081 访问 Nexus UI,登录默认的管理员账号 admin 进行配置。
2. 在 Maven 中配置私服

在 Maven 项目的 settings.xml 中配置私服的地址。settings.xml 文件一般位于以下位置:

  • Windows:C:\Users\{username}\.m2\settings.xml
  • Linux/macOS:~/.m2/settings.xml

修改 settings.xml 添加私服仓库配置

<settings><mirrors><!-- 配置私服作为中央仓库的镜像 --><mirror><id>nexus</id><mirrorOf>*</mirrorOf> <!-- 所有请求都会通过私服 --><url>http://localhost:8081/repository/maven-public/</url></mirror></mirrors><servers><!-- 配置私服的认证信息 --><server><id>nexus</id><username>your-username</username><password>your-password</password></server></servers>
</settings>
  • mirrors:配置仓库的镜像地址。
  • servers:配置私服的用户名和密码,用于发布或获取私有库。
3. 在 pom.xml 中配置私服仓库

在项目的 pom.xml 文件中配置使用私服的仓库:

<project><repositories><!-- 配置私服的远程仓库 --><repository><id>nexus-releases</id><url>http://localhost:8081/repository/maven-releases/</url></repository><repository><id>nexus-snapshots</id><url>http://localhost:8081/repository/maven-snapshots/</url><snapshots><enabled>true</enabled></snapshots></repository></repositories><distributionManagement><!-- 配置发布时使用的仓库 --><repository><id>nexus-releases</id><url>http://localhost:8081/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>
</project>
4. 将项目发布到私服

执行以下命令将项目发布到私服中:

mvn clean deploy

确保项目的 pom.xml 文件中已经配置了正确的 groupIdartifactIdversion,并且私服已经正确配置。


4. 常见问题及解决办法

  1. 私服无法访问

    • 检查私服的 IP 地址和端口是否正确。
    • 确保防火墙规则允许访问私服。
  2. 依赖下载失败

    • 检查 pom.xmlsettings.xml 中的私服配置是否正确。
    • 确认私服中的依赖版本是否存在,若是内部库,确保已经成功发布。
  3. 权限问题

    • 确保 settings.xml 中的认证信息正确。
    • 检查 Nexus 或其他私服的用户权限配置。

5. 总结

Maven 私服配置可以提高项目的依赖管理效率,减少中央仓库下载的时间,特别是在企业环境中,它可以帮助存储私有的库和共享内部组件。通过正确配置 settings.xmlpom.xml,可以让项目平稳地依赖于私有仓库。

微服务架构通常采用分布式部署,每个服务都独立开发、打包、部署和运行。微服务的 Maven 项目部署涉及多个服务的管理,每个服务通常是一个独立的项目,打包为 JAR、WAR 或其他形式,并通过容器化、CI/CD 管道、自动化部署工具等方式进行管理。

以下是微服务架构下 Maven 项目的典型部署流程,重点介绍如何打包和部署微服务的 JAR 包,以及常见的自动化部署方式。


微服务架构中的 Maven 项目结构

在微服务架构中,每个服务通常是一个独立的项目,并且都有各自的 pom.xml。项目可能有以下几种类型:

  1. 基础服务:提供通用功能(如用户管理、订单处理等),通常打包为 JAR。
  2. API 网关:负责请求路由和服务聚合,通常打包为 JAR。
  3. 配置中心:集中管理配置,通常打包为 JAR。
  4. 服务注册与发现:使用如 Eureka、Consul 的服务,打包为 JAR。
  5. 负载均衡:使用 Ribbon 或其他负载均衡器实现,打包为 JAR。

在 Maven 项目中,线上部署通常涉及将构建后的项目包(如 JAR、WAR、EAR 等)上传或发布到线上服务器,或将项目部署到远程仓库(如 Nexus、Artifactory)以供其他项目引用。以下是常见的 Maven 项目线上部署的流程。


1. JAR 包部署到线上服务器

如果项目打包为 JAR 并需要在服务器上运行,以下是步骤:

步骤 1:Maven 打包

首先,将项目打包为 JAR 文件:

mvn clean package

这会在 target/ 目录下生成 JAR 包。

步骤 2:上传 JAR 包到服务器

使用工具(如 scprsync)将 JAR 包上传到线上服务器:

scp target/your-project-name.jar user@your-server-ip:/path/to/deploy/
步骤 3:远程服务器上运行 JAR

登录到远程服务器,并使用 java -jar 命令运行 JAR 包:

java -jar /path/to/deploy/your-project-name.jar

为了保证服务长期运行,可以通过以下方式来管理运行的 JAR 包:

  • 后台运行:使用 nohup 命令或 screen/tmux 来保持服务后台运行。

    nohup java -jar /path/to/deploy/your-project-name.jar > log.out 2>&1 &
    
  • 使用 systemd 管理服务:编写 systemd 服务文件来管理 Java 应用的启动和停止。

步骤 4:设置自动化部署

如果希望每次代码更新后自动部署,通常会使用 CI/CD 工具,如 Jenkins、GitLab CI、GitHub Actions 来自动打包并将 JAR 包部署到服务器。


2. WAR 包部署到线上服务器

如果项目是 Web 应用(WAR 包),通常需要将 WAR 包部署到 Servlet 容器(如 Tomcat)中:

步骤 1:Maven 打包 WAR

打包项目为 WAR 文件:

mvn clean package

这会在 target/ 目录下生成 WAR 包。

步骤 2:上传 WAR 包到服务器

将 WAR 包上传到线上服务器:

scp target/your-project-name.war user@your-server-ip:/path/to/tomcat/webapps/
步骤 3:部署到 Tomcat

将 WAR 包放入 Tomcat 的 webapps/ 目录,Tomcat 会自动解压并部署该 WAR 包。

  • WAR 包的名称会决定应用访问的上下文路径。例如,your-project-name.war 在浏览器中可以通过 http://your-server-ip:8080/your-project-name/ 访问。
步骤 4:重启 Tomcat

上传 WAR 包后,如果需要手动重启 Tomcat,可以运行以下命令:

sudo systemctl restart tomcat

3. 通过 CI/CD 自动部署

为了简化线上部署流程,可以使用 CI/CD 工具来自动化打包、测试和部署。

常用工具
  • Jenkins:集成构建、测试和部署,适用于企业环境。
  • GitLab CI:与 GitLab 配合使用,可自动化从代码提交到部署的全过程。
  • GitHub Actions:直接在 GitHub 仓库内创建 CI/CD 流程,支持自动化测试和部署。
GitLab CI 示例
stages:- build- deploybuild_job:stage: buildscript:- mvn clean packageartifacts:paths:- target/your-project-name.jardeploy_job:stage: deployscript:- scp target/your-project-name.jar user@your-server-ip:/path/to/deploy/- ssh user@your-server-ip 'nohup java -jar /path/to/deploy/your-project-name.jar > log.out 2>&1 &'
Jenkins 示例
  1. 配置一个 Jenkins Pipeline。
  2. 创建以下 Jenkinsfile,自动完成 Maven 构建并部署到远程服务器:
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}stage('Deploy') {steps {sshagent(['your-ssh-credentials-id']) {sh 'scp target/your-project-name.jar user@your-server-ip:/path/to/deploy/'sh 'ssh user@your-server-ip nohup java -jar /path/to/deploy/your-project-name.jar > log.out 2>&1 &'}}}}
}

4. 将 Maven 项目发布到远程仓库(私服)

如果要将 Maven 项目发布到公司私有的 Maven 仓库(如 Nexus 或 Artifactory),其他项目可以通过依赖引用这个包。以下是将 Maven 项目部署到远程仓库的流程:

步骤 1:配置 distributionManagement

在项目的 pom.xml 文件中添加远程仓库的配置:

<distributionManagement><repository><id>nexus-releases</id><url>http://nexus.example.com/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><url>http://nexus.example.com/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>
步骤 2:配置认证信息

~/.m2/settings.xml 中配置远程仓库的用户名和密码:

<servers><server><id>nexus-releases</id><username>your-username</username><password>your-password</password></server><server><id>nexus-snapshots</id><username>your-username</username><password>your-password</password></server>
</servers>
步骤 3:发布到远程仓库

通过 Maven 部署命令将项目发布到私有仓库:

mvn clean deploy

成功后,项目的 JAR 包会上传到指定的远程仓库,其他项目可以通过 Maven 依赖管理引入该包。


总结

Maven 项目线上部署通常包括以下几种方式:

  1. 手动将 JAR 或 WAR 上传到服务器并运行或部署。
  2. 使用 CI/CD 工具自动化打包和部署流程。
  3. 将项目发布到远程 Maven 仓库供其他项目使用。

选择合适的部署方式取决于项目的规模、团队协作的需求以及基础设施的复杂度。

线上部署

在 Maven 项目中,线上部署通常涉及将构建后的项目包(如 JAR、WAR、EAR 等)上传或发布到线上服务器,或将项目部署到远程仓库(如 Nexus、Artifactory)以供其他项目引用。以下是常见的 Maven 项目线上部署的流程。


1. JAR 包部署到线上服务器

如果项目打包为 JAR 并需要在服务器上运行,以下是步骤:

步骤 1:Maven 打包

首先,将项目打包为 JAR 文件:

mvn clean package

这会在 target/ 目录下生成 JAR 包。

步骤 2:上传 JAR 包到服务器

使用工具(如 scprsync)将 JAR 包上传到线上服务器:

scp target/your-project-name.jar user@your-server-ip:/path/to/deploy/
步骤 3:远程服务器上运行 JAR

登录到远程服务器,并使用 java -jar 命令运行 JAR 包:

java -jar /path/to/deploy/your-project-name.jar

为了保证服务长期运行,可以通过以下方式来管理运行的 JAR 包:

  • 后台运行:使用 nohup 命令或 screen/tmux 来保持服务后台运行。

    nohup java -jar /path/to/deploy/your-project-name.jar > log.out 2>&1 &
    
  • 使用 systemd 管理服务:编写 systemd 服务文件来管理 Java 应用的启动和停止。

步骤 4:设置自动化部署

如果希望每次代码更新后自动部署,通常会使用 CI/CD 工具,如 Jenkins、GitLab CI、GitHub Actions 来自动打包并将 JAR 包部署到服务器。


2. WAR 包部署到线上服务器

如果项目是 Web 应用(WAR 包),通常需要将 WAR 包部署到 Servlet 容器(如 Tomcat)中:

步骤 1:Maven 打包 WAR

打包项目为 WAR 文件:

mvn clean package

这会在 target/ 目录下生成 WAR 包。

步骤 2:上传 WAR 包到服务器

将 WAR 包上传到线上服务器:

scp target/your-project-name.war user@your-server-ip:/path/to/tomcat/webapps/
步骤 3:部署到 Tomcat

将 WAR 包放入 Tomcat 的 webapps/ 目录,Tomcat 会自动解压并部署该 WAR 包。

  • WAR 包的名称会决定应用访问的上下文路径。例如,your-project-name.war 在浏览器中可以通过 http://your-server-ip:8080/your-project-name/ 访问。
步骤 4:重启 Tomcat

上传 WAR 包后,如果需要手动重启 Tomcat,可以运行以下命令:

sudo systemctl restart tomcat

3. 通过 CI/CD 自动部署

为了简化线上部署流程,可以使用 CI/CD 工具来自动化打包、测试和部署。

常用工具
  • Jenkins:集成构建、测试和部署,适用于企业环境。
  • GitLab CI:与 GitLab 配合使用,可自动化从代码提交到部署的全过程。
  • GitHub Actions:直接在 GitHub 仓库内创建 CI/CD 流程,支持自动化测试和部署。
GitLab CI 示例
stages:- build- deploybuild_job:stage: buildscript:- mvn clean packageartifacts:paths:- target/your-project-name.jardeploy_job:stage: deployscript:- scp target/your-project-name.jar user@your-server-ip:/path/to/deploy/- ssh user@your-server-ip 'nohup java -jar /path/to/deploy/your-project-name.jar > log.out 2>&1 &'
Jenkins 示例
  1. 配置一个 Jenkins Pipeline。
  2. 创建以下 Jenkinsfile,自动完成 Maven 构建并部署到远程服务器:
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}stage('Deploy') {steps {sshagent(['your-ssh-credentials-id']) {sh 'scp target/your-project-name.jar user@your-server-ip:/path/to/deploy/'sh 'ssh user@your-server-ip nohup java -jar /path/to/deploy/your-project-name.jar > log.out 2>&1 &'}}}}
}

4. 将 Maven 项目发布到远程仓库(私服)

如果要将 Maven 项目发布到公司私有的 Maven 仓库(如 Nexus 或 Artifactory),其他项目可以通过依赖引用这个包。以下是将 Maven 项目部署到远程仓库的流程:

步骤 1:配置 distributionManagement

在项目的 pom.xml 文件中添加远程仓库的配置:

<distributionManagement><repository><id>nexus-releases</id><url>http://nexus.example.com/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><url>http://nexus.example.com/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>
步骤 2:配置认证信息

~/.m2/settings.xml 中配置远程仓库的用户名和密码:

<servers><server><id>nexus-releases</id><username>your-username</username><password>your-password</password></server><server><id>nexus-snapshots</id><username>your-username</username><password>your-password</password></server>
</servers>
步骤 3:发布到远程仓库

通过 Maven 部署命令将项目发布到私有仓库:

mvn clean deploy

成功后,项目的 JAR 包会上传到指定的远程仓库,其他项目可以通过 Maven 依赖管理引入该包。


总结

Maven 项目线上部署通常包括以下几种方式:

  1. 手动将 JAR 或 WAR 上传到服务器并运行或部署。
  2. 使用 CI/CD 工具自动化打包和部署流程。
  3. 将项目发布到远程 Maven 仓库供其他项目使用。

选择合适的部署方式取决于项目的规模、团队协作的需求以及基础设施的复杂度。

微服务打包与部署

在 Maven 项目中,每个微服务会根据需求选择不同的打包方式。大部分情况下,微服务会打包为 JAR 并在容器化环境(如 Docker)中运行。常见的步骤包括:

1. Maven 打包为 JAR

微服务项目通常打包为 JAR(包括依赖的所有库),以独立运行。可以使用 Spring Boot、Dropwizard 等框架,简化构建自包含的可执行 JAR 包。

pom.xml 中,配置 Spring Boot 打包为 JAR:

<packaging>jar</packaging><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

执行以下命令打包:

mvn clean package

生成的 JAR 文件位于 target/ 目录,例如:target/your-service-name.jar

2. 将 JAR 部署到服务器

将 JAR 上传到服务器并运行。通常通过 SSH 将文件上传到远程服务器,或者使用自动化工具完成上传和部署。

scp target/your-service-name.jar user@your-server-ip:/path/to/deploy/

在服务器上运行 JAR 包:

java -jar /path/to/deploy/your-service-name.jar
3. 容器化部署(Docker)

为了便于管理和扩展,微服务通常使用容器化工具如 Docker。使用 Docker 可以将微服务及其依赖一起打包为容器镜像,便于在云端或其他基础设施上部署。

步骤 1:创建 Dockerfile

为微服务项目创建 Dockerfile,将 JAR 文件放入容器中并指定启动命令:

# 基础镜像
FROM openjdk:17-jdk-alpine# 指定 JAR 文件名和路径
ARG JAR_FILE=target/your-service-name.jar# 将 JAR 文件添加到容器中
COPY ${JAR_FILE} app.jar# 启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

步骤 2:构建 Docker 镜像

使用 Docker 构建微服务的镜像:

docker build -t your-service-name .

步骤 3:运行 Docker 容器

使用生成的 Docker 镜像启动服务:

docker run -d -p 8080:8080 your-service-name
4. CI/CD 管道部署(Jenkins、GitLab CI 等)

为了实现持续集成和持续交付(CI/CD),可以使用工具如 Jenkins、GitLab CI、GitHub Actions 来自动化微服务的构建和部署。

Jenkins Pipeline 示例:

  1. 配置 Jenkins 来构建项目,并生成 JAR 包和 Docker 镜像。
  2. 定义 Jenkins Pipeline,自动化从代码提交到部署的全过程。
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}stage('Docker Build') {steps {script {docker.build("your-service-name")}}}stage('Deploy') {steps {script {docker.withRegistry('https://your-docker-registry.com', 'docker-credentials-id') {docker.image("your-service-name").push('latest')}}}}}
}

GitLab CI 示例:

.gitlab-ci.yml 中定义构建和部署步骤:

stages:- build- deploybuild:stage: buildscript:- mvn clean package- docker build -t your-service-name .artifacts:paths:- target/your-service-name.jardeploy:stage: deployscript:- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY- docker push $CI_REGISTRY/your-group/your-service-name

CI/CD 管道能够确保在每次代码更新时,自动完成测试、构建、打包并部署到线上环境中,减少人为错误并提高效率。

5. 服务注册与发现

在微服务架构中,通常需要服务注册与发现机制。服务可以自动注册到注册中心(如 Eureka、Consul),客户端通过这些注册中心发现并调用其他服务。

Spring Cloud Eureka 示例:

  1. Eureka 服务器

    • 在微服务架构中,可以使用 Spring Cloud Netflix Eureka 作为服务注册与发现组件。
    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
  2. Eureka 客户端

    • 各个微服务在启动时,自动注册到 Eureka 服务器,并通过该服务器发现其他微服务。
    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
6. 配置管理

对于配置管理,可以使用 Spring Cloud Config 或其他集中化配置工具。配置中心可以集中管理各个微服务的配置,并动态更新。

Spring Cloud Config 示例:

  1. Config Server:集中管理配置,并将配置保存在 Git 或文件系统中。

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    
  2. 客户端配置:各个微服务从配置中心读取配置,而不是本地配置文件。

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    

总结

微服务的 Maven 项目部署流程大致如下:

  1. Maven 构建和打包:将微服务打包为 JAR 或 Docker 容器。
  2. 容器化:将微服务放入 Docker 容器,便于管理和部署。
  3. 自动化部署(CI/CD):通过 Jenkins、GitLab CI 等自动化工具完成构建和部署。
  4. 服务注册与发现:使用 Eureka、Consul 等工具实现服务自动注册和发现。
  5. 配置管理:集中管理微服务配置,支持动态更新。

通过这些方式,微服务项目能够实现高效的开发、独立部署和弹性扩展。

相关文章:

Maven的使用

1. Maven 简介 https://maven.apache.org/ Maven 是一个强大的项目管理和构建工具&#xff0c;广泛应用于 Java 项目中&#xff0c;旨在简化项目的依赖管理、构建、测试、部署等工作。Maven 主要通过定义 pom.xml&#xff08;Project Object Model 文件&#xff09;来管理项…...

C++开发进阶1:C++编程命名规范

进行C开发时最基础且最重要的是命名规范&#xff0c;掌握良好的命名规范能增加代码的可读性。 认识文件&#xff1a; .cpp&#xff1a;C 源文件. .h或.hpp&#xff1a;C 头文件 .tpp模板实现文件&#xff08;如果模板定义和实现分开&#xff09; .inl内联文件&#xff0c;…...

Android 图片相识度比较(pHash)

概述 在 Android 中&#xff0c;要比对两张 Bitmap 图片的相似度&#xff0c;常见的方法有基于像素差异、直方图比较、或者使用一些更高级的算法如 SSIM&#xff08;结构相似性&#xff09;和感知哈希&#xff08;pHash&#xff09;。 1. 基于像素的差异比较 可以逐像素比较…...

Gitlab 完全卸载–亲测可行

1、停止gitlab gitlab-ctl stop2.卸载gitlab&#xff08;注意这里写的是gitlab-ce&#xff09; rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程&#xff08;就是带有好多.............的进程&#xff09; 5、删除所有包含gitlab文件 find / …...

gitlab操作和管理

详细的说明下这几条指令&#xff1a; Git global setup git config --global user.name “” git config --global user.email “” Create a new repository git clone ssh://git12/letect.git cd vlm-event-secondary-detect git switch -c main touch README.md git add RE…...

ctfshow-web入门-反序列化(web254-web258)

目录 1、web254 2、web255 3、web256 4、web257 5、web258 1、web254 传入符合要求的用户名和密码即可&#xff1a; ?usernamexxxxxx&passwordxxxxxx 拿到 flag&#xff1a;ctfshow{e4795ccd-6bff-44b6-a15c-6c679d802e61} 2、web255 整体逻辑代码和上一道差不多 新…...

repo 命令大全详解(第十一篇 repo init)

repo forall 命令用于在指定的项目上执行给定的命令&#xff0c;非常适合批量操作。 参数分类及解释 基本参数 [<project>...]: 可选&#xff0c;指定要操作的项目。如果不指定&#xff0c;则对所有项目执行命令。 示例: repo forall my_project -c "git status&q…...

ComfyUI | 全新ComfyUI前端操作指南:提升你的工作速度!

随着WebUI基本停更&#xff0c;越来越多的AI创作者转向了ComfyUI。 ComfyUI最大的优势是简洁、高效、占用显存低&#xff0c;工作流模式虽然有一点入门难度&#xff0c;但一旦上手&#xff0c;操作非常舒适。 由于原Stable Diffusion团队的参与&#xff0c;ComfyUI的易用度也…...

nginx解决非人类使用http打开的443,解决网安漏扫时误扫443端口带来的问题

一、问题描述 正常访问https的站点时&#xff0c;使用网址https://www.baidu.com&#xff0c;但会有一种错误的访问请求http://www.baidu.com:443&#xff0c;一般都是非人类所为&#xff0c;如漏洞扫描工具&#xff0c;那么请求以后带来的后果是个错误页面 400 Bad Request T…...

黑马 | Reids | 基础篇

黑马reids基础篇 文章目录 黑马reids基础篇一.初始Redis1.1SQL 和 NoSql的区别1.1.1结构化和非结构化1.1.2关联和非关联1.1.3查询方式1.1.4 事务1.1.5总结 1.2 认识Redis1.3 Redis安装启动默认启动&#xff1a;后台启动&#xff1a;开机自启 1.4 Redis客户端1.4.1.Redis命令行客…...

SAP-换登录界面图片

SMW0 二、SM30 &#xff08;将value值删除&#xff0c;登录图片恢复默认&#xff09; 重新登录&#xff0c;更改成功。...

移动 Web核心笔记(二)

空间转换 空间&#xff1a;是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间&#xff0c;Z 轴位置与视线方向相同。 空间转换也叫 3D转换 属性&#xff1a;transform 平移 /*单独设置 z轴效果不明显*/ transform: translate3d(x, y, z); transform: translateX(…...

MySQL创建和管理表

1. 基础知识 存储数据是处理数据的第一步&#xff0c;只有正确地把数据存储起来&#xff0c;才能进行有效的处理和分析。 在 MySQL 中&#xff0c;一个完整的数据存储过程总共有 4 步&#xff0c;分别是创建数据库、确认字段、创建数据表、插入数据。 从系统架构的层次上看…...

【从零开始的LeetCode-算法】910. 最小差值 II

给你一个整数数组 nums&#xff0c;和一个整数 k 。 对于每个下标 i&#xff08;0 < i < nums.length&#xff09;&#xff0c;将 nums[i] 变成 nums[i] k 或 nums[i] - k 。 nums 的 分数 是 nums 中最大元素和最小元素的差值。 在更改每个下标对应的值之后&#xf…...

周报 | 24.10.14-24.10.20文章汇总

为了更好地整理文章和发表接下来的文章&#xff0c;以后每周都汇总一份周报。 周报 | 24.10.7-24.10.13文章汇总-CSDN博客 OpenCV与AI深度学习 | T-Rex Label &#xff01;超震撼 AI 自动标注工具&#xff0c;开箱即用、检测一切-CSDN博客 计算机视觉与机器学习 | 目标检测 …...

Codeforce 980 Div2 A-D 题解

A. Profitable Interest Rate 原题 A. Profitable Interest Rate 思路 易推出公式 2 * a - b 代码 #include <bits/stdc.h> //#define int long long#define F(i, a, b) for (int i (a); i < (b); i) #define dF(i, a, b) for (int i (a); i > (b); i--)usi…...

一次代码优化的过程

场景说明&#xff1a; wpf项目&#xff0c;有4个不同的页面&#xff0c;共用一个next按钮&#xff0c;实现点击后跳转到下一个页面。 第一个页面是导入文件&#xff0c;当有2个及以上文件时&#xff0c;会弹窗提示。如下图所示&#xff1a; 之前和之后的代码对比&#xff1a; 之…...

多线程的学习(1)

线程的创建方式 1.继承Thread类 package duoXianCheng;public class MyThread extends Thread{public void run(){System.out.println("hoh");}public static void main(String[] args) {MyThread m1 new MyThread();m1.start();//start启动线程&#xff0c;调用重…...

PyCharm借助MobaXterm跳板机连接服务器

服务器信息&#xff1a; Step 1 MovaXterm→Session→SSH输入服务器信息 Step 2 MovaXterm→Session→SSH→Network setting→SSG gateway(jump host) 输入跳板机信息 键入密码即可 Step 3 MovaXterm→Tunneling→New SSH tunnel 依次输入&#xff1a;A本机端口&#xff0c…...

计算机毕业论文基于Android 的签到系统设计与实现

计算机专业本科毕业设计(论文)开题报告 毕业设计(论文)题目:基于Android的签到系统设计与实现 文章目录 毕业设计论文开题报告一、课题的目的及意义(含国内外的研究现状分析):二、课题任务、重点研究内容、实现途径、条件:摘 要1. 绪论1.1. 研究背景1.2. 研究现状1.3.…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...