【Java万花筒】提高团队生产力:深入了解Java持续集成与部署库的功能与特性

本文主要是介绍【Java万花筒】提高团队生产力:深入了解Java持续集成与部署库的功能与特性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

构建高质量软件的秘诀:解析五个Java持续集成与部署库的优势

前言

在现代软件开发中,持续集成和部署是关键步骤,可以帮助团队更快地交付高质量的软件。然而,手动管理和操作各个持续集成和部署工具可能会变得复杂和耗时。为了简化这一过程,许多Java库被开发出来,以便通过编程方式与常用的持续集成和部署服务器进行交互。本文将介绍五个流行的Java库,这些库提供了丰富的API,用于与Jenkins、Travis CI、CircleCI、GitLab CI和TeamCity等服务进行集成。

欢迎订阅专栏:Java万花筒

文章目录

  • 构建高质量软件的秘诀:解析五个Java持续集成与部署库的优势
    • 前言
    • 1. Jenkins Java Client
      • 1.1 概述
      • 1.2 安装与配置
      • 1.3 使用方法
      • 1.4 功能与特性
      • 1.5 扩展功能:参数化构建
      • 1.6 高级特性:Pipeline脚本
    • 2. Travis CI Java API
      • 2.1 概述
      • 2.2 安装与配置
      • 2.3 使用方法
      • 2.4 功能与特性
      • 2.5 扩展功能:构建状态通知
      • 2.6 高级特性:仓库设置管理
    • 3. CircleCI Java SDK
      • 3.1 概述
      • 3.2 安装与配置
      • 3.3 使用方法
      • 3.4 功能与特性
      • 3.5 扩展功能:自定义构建参数
      • 3.6 高级特性:项目设置管理
    • 4. GitLab CI Java API
      • 4.1 概述
      • 4.2 安装与配置
      • 4.3 使用方法
      • 4.4 功能与特性
      • 4.5 扩展功能:并行构建
      • 4.6 高级特性:自定义构建脚本
    • 5. TeamCity Java REST Client
      • 5.1 概述
      • 5.2 安装与配置
      • 5.3 使用方法
      • 5.4 功能与特性
      • 5.5 扩展功能:构建触发器
      • 5.6 高级特性:自定义构建参数
    • 6. Bamboo Java REST Client
      • 6.1 概述
      • 6.2 安装与配置
      • 6.3 使用方法
      • 6.4 功能与特性
      • 6.5 扩展功能:构建触发器
      • 6.6 高级特性:自定义构建脚本
    • 总结

1. Jenkins Java Client

1.1 概述

Jenkins Java Client是一个Java库,用于与Jenkins持续集成和部署服务器进行交互。它提供了一组API,可以通过Java代码执行各种Jenkins操作,例如创建和管理任务、构建和触发构建、获取构建状态等。

1.2 安装与配置

要使用Jenkins Java Client,您需要在项目的构建路径中添加以下依赖项:

<dependency><groupId>com.offbytwo.jenkins</groupId><artifactId>jenkins-client</artifactId><version>1.12</version>
</dependency>

1.3 使用方法

以下是一个简单的示例代码,演示如何使用Jenkins Java Client连接到Jenkins服务器,并获取一个任务的构建状态:

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.model.Job;import java.net.URI;public class JenkinsClientExample {public static void main(String[] args) {try {JenkinsServer jenkins = new JenkinsServer(new URI("http://localhost:8080"));Job job = jenkins.getJob("my-job");System.out.println("Latest build status: " + job.getLastBuild().details().getResult());} catch (Exception e) {e.printStackTrace();}}
}

1.4 功能与特性

  • 连接到Jenkins服务器
  • 创建、修改和删除任务
  • 触发构建和获取构建状态
  • 获取构建的控制台输出
  • 管理Jenkins的插件和全局配置

1.5 扩展功能:参数化构建

除了基本的构建操作,Jenkins Java Client还支持参数化构建,允许您动态地传递参数并配置构建过程。这在需要根据不同情境进行个性化构建时非常有用。

下面是一个示例代码,演示如何创建一个参数化构建任务并触发构建:

import com.offbytwo.jenkins.model.JobWithDetails;
import com.offbytwo.jenkins.model.BuildResult;
import com.offbytwo.jenkins.model.BuildWithDetails;import java.net.URI;
import java.util.HashMap;
import java.util.Map;public class ParameterizedBuildExample {public static void main(String[] args) {try {JenkinsServer jenkins = new JenkinsServer(new URI("http://localhost:8080"));// 创建参数化构建任务Map<String, String> parameters = new HashMap<>();parameters.put("param1", "value1");parameters.put("param2", "value2");JobWithDetails job = jenkins.createJob("parameterized-job", "<Your Jenkins Job DSL Script Here>");// 触发参数化构建BuildWithDetails build = job.build(parameters);// 获取构建结果BuildResult result = build.details().getResult();System.out.println("Build result: " + result);} catch (Exception e) {e.printStackTrace();}}
}

1.6 高级特性:Pipeline脚本

Jenkins Java Client支持处理Pipeline脚本,这是一种将整个CI/CD过程描述为代码的强大方式。通过Jenkins Java Client,您可以动态创建和管理Pipeline任务,并实现复杂的构建和部署流程。

以下是一个简单的示例代码,演示如何创建一个Pipeline任务:

import com.offbytwo.jenkins.model.JobWithDetails;import java.net.URI;public class PipelineExample {public static void main(String[] args) {try {JenkinsServer jenkins = new JenkinsServer(new URI("http://localhost:8080"));// 创建Pipeline任务JobWithDetails pipelineJob = jenkins.createJob("pipeline-job", "pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } } stage('Deploy') { steps { echo 'Deploying...' } } } } }");// 触发Pipeline构建pipelineJob.build();System.out.println("Pipeline build triggered successfully.");} catch (Exception e) {e.printStackTrace();}}
}

通过这些扩展功能,Jenkins Java Client变得更加灵活,能够满足不同项目的需求。参数化构建和Pipeline脚本使得构建过程更具可配置性和可维护性。在实际应用中,根据项目的具体需求,您可以进一步探索Jenkins Java Client的更多功能和用法。

2. Travis CI Java API

2.1 概述

Travis CI Java API是一个Java库,用于与Travis CI持续集成服务进行交互。它提供了一组API,可以通过Java代码执行各种Travis CI操作,例如触发构建、获取构建状态和日志、管理仓库设置等。

2.2 安装与配置

要使用Travis CI Java API,您需要在项目的构建路径中添加以下依赖项:

<dependency><groupId>org.travis-ci</groupId><artifactId>travis-java-client</artifactId><version>3.0.0</version>
</dependency>

2.3 使用方法

以下是一个简单的示例代码,演示如何使用Travis CI Java API连接到Travis CI服务,并触发一个构建:

import org.travis_ci.api.TravisCiClient;
import org.travis_ci.api.TravisCiException;
import org.travis_ci.model.Build;public class TravisCiClientExample {public static void main(String[] args) {try {TravisCiClient client = new TravisCiClient();client.authenticate("YOUR_TRAVIS_TOKEN");Build build = client.triggerBuild("your-repo", "master");System.out.println("Build ID: " + build.getId());} catch (TravisCiException e) {e.printStackTrace();}}
}

2.4 功能与特性

  • 连接到Travis CI服务
  • 触发构建和取消构建
  • 获取构建状态、日志和结果
  • 管理仓库设置和Webhook

2.5 扩展功能:构建状态通知

Travis CI Java API还支持构建状态通知,通过Webhook或其他方式将构建状态信息传递给其他系统或服务。这对于实现实时监控和集成构建状态到外部工具非常有用。

以下是一个示例代码,演示如何设置构建状态通知:

import org.travis_ci.api.TravisCiClient;
import org.travis_ci.api.TravisCiException;
import org.travis_ci.model.Build;
import org.travis_ci.model.EventType;public class BuildStatusNotificationExample {public static void main(String[] args) {try {TravisCiClient client = new TravisCiClient();client.authenticate("YOUR_TRAVIS_TOKEN");// 触发构建并设置构建状态通知Build build = client.triggerBuild("your-repo", "master");client.setBuildNotification(build.getId(), EventType.FINISHED);System.out.println("Build ID: " + build.getId() + " with notification set.");} catch (TravisCiException e) {e.printStackTrace();}}
}

2.6 高级特性:仓库设置管理

Travis CI Java API提供了管理仓库设置的功能,允许您通过代码配置仓库的各种属性,例如环境变量、构建选项等。这在需要自动化配置多个仓库的场景下非常有用。

以下是一个示例代码,演示如何使用Travis CI Java API管理仓库设置:

import org.travis_ci.api.TravisCiClient;
import org.travis_ci.api.TravisCiException;
import org.travis_ci.model.RepositorySettings;public class RepositorySettingsExample {public static void main(String[] args) {try {TravisCiClient client = new TravisCiClient();client.authenticate("YOUR_TRAVIS_TOKEN");// 获取仓库当前设置RepositorySettings settings = client.getRepositorySettings("your-repo");System.out.println("Current repository settings: " + settings);// 修改仓库设置,例如添加环境变量settings.getEnvironmentVariables().put("KEY", "VALUE");client.updateRepositorySettings("your-repo", settings);System.out.println("Repository settings updated successfully.");} catch (TravisCiException e) {e.printStackTrace();}}
}

通过这些扩展功能和高级特性,Travis CI Java API提供了更多灵活性和自动化选项,以适应复杂的构建和部署场景。在实际应用中,可以根据项目的需求深入研究Travis CI Java API的各项功能和用法。

3. CircleCI Java SDK

3.1 概述

CircleCI Java SDK是一个Java库,用于与CircleCI持续集成服务进行交互。它提供了一组API,可以通过Java代码执行各种CircleCI操作,例如触发构建、获取构建状态和日志、管理项目设置等。

3.2 安装与配置

要使用CircleCI Java SDK,您需要在项目的构建路径中添加以下依赖项:

<dependency><groupId>com.circleci</groupId><artifactId>circle-client</artifactId><version>0.2.0</version>
</dependency>

3.3 使用方法

以下是一个简单的示例代码,演示如何使用CircleCI Java SDK连接到CircleCI服务,并触发一个构建:

import com.circleci.client.CircleCiClient;
import com.circleci.client.model.Build;public class CircleCiClientExample {public static void main(String[] args) {CircleCiClient client = new CircleCiClient("YOUR_API_TOKEN");try {Build build = client.triggerBuild("your-repo", "master");System.out.println("Build number: " + build.getNumber());} catch (Exception e) {e.printStackTrace();}}
}

3.4 功能与特性

  • 连接到CircleCI服务
  • 触发构建和取消构建
  • 获取构建状态、日志和结果
  • 管理项目设置和环境变量

3.5 扩展功能:自定义构建参数

CircleCI Java SDK支持向构建传递自定义参数,以便在构建过程中使用。这使得构建过程更加灵活,可以根据需要动态配置构建行为。

以下是一个示例代码,演示如何触发一个包含自定义参数的构建:

import com.circleci.client.CircleCiClient;
import com.circleci.client.model.Build;import java.util.HashMap;
import java.util.Map;public class CustomBuildParametersExample {public static void main(String[] args) {CircleCiClient client = new CircleCiClient("YOUR_API_TOKEN");try {// 定义自定义构建参数Map<String, String> customParameters = new HashMap<>();customParameters.put("param1", "value1");customParameters.put("param2", "value2");// 触发构建并传递自定义参数Build build = client.triggerBuild("your-repo", "master", customParameters);System.out.println("Build number: " + build.getNumber());} catch (Exception e) {e.printStackTrace();}}
}

3.6 高级特性:项目设置管理

CircleCI Java SDK提供了管理项目设置的功能,允许您通过代码配置项目的各种属性,例如环境变量、SSH密钥等。这在需要自动化配置多个项目的场景下非常有用。

以下是一个示例代码,演示如何使用CircleCI Java SDK管理项目设置:

import com.circleci.client.CircleCiClient;
import com.circleci.client.model.ProjectSettings;public class ProjectSettingsExample {public static void main(String[] args) {CircleCiClient client = new CircleCiClient("YOUR_API_TOKEN");try {// 获取项目当前设置ProjectSettings settings = client.getProjectSettings("your-repo");System.out.println("Current project settings: " + settings);// 修改项目设置,例如添加环境变量settings.getEnvironmentVariables().put("KEY", "VALUE");client.updateProjectSettings("your-repo", settings);System.out.println("Project settings updated successfully.");} catch (Exception e) {e.printStackTrace();}}
}

通过这些扩展功能和高级特性,CircleCI Java SDK提供了更多的定制和自动化选项,以适应不同项目的需求。在实际应用中,可以根据项目的具体情况深入研究CircleCI Java SDK的各项功能和用法。

4. GitLab CI Java API

4.1 概述

GitLab CI Java API是一个Java库,用于与GitLab CI持续集成服务进行交互。它提供了一组API,可以通过Java代码执行各种GitLab CI操作,例如触发构建、获取构建状态和日志、管理项目设置等。

4.2 安装与配置

要使用GitLab CI Java API,您需要在项目的构建路径中添加以下依赖项:

<dependency><groupId>org.gitlab4j</groupId><artifactId>gitlab4j-api</artifactId><version>4.31.0</version>
</dependency>

4.3 使用方法

以下是一个简单的示例代码,演示如何使用GitLab CI Java API连接到GitLab CI服务,并触发一个构建:

import org.gitlab4j.api.GitLabApi;
import org.gitlab4j.api.models.Build;public class GitLabCiApiExample {public static void main(String[] args) {String gitLabUrl = "https://gitlab.com";String personalAccessToken = "YOUR_PERSONAL_ACCESS_TOKEN";String projectName = "your-project";GitLabApi gitLabApi = new GitLabApi(gitLabUrl, personalAccessToken);try {Build build = gitLabApi.getCIApi().triggerPipeline(projectName, "master");System.out.println("Build ID: " + build.getId());} catch (Exception e) {e.printStackTrace();}}
}

4.4 功能与特性

  • 连接到GitLab CI服务
  • 触发构建和取消构建
  • 获取构建状态、日志和结果
  • 管理项目设置和环境变量

4.5 扩展功能:并行构建

GitLab CI Java API支持配置并行构建,允许同时执行多个作业,加速整体构建过程。这对于大型项目或需要快速构建的场景非常有用。

以下是一个示例代码,演示如何配置并行构建:

import org.gitlab4j.api.GitLabApi;
import org.gitlab4j.api.models.Pipeline;public class ParallelBuildExample {public static void main(String[] args) {String gitLabUrl = "https://gitlab.com";String personalAccessToken = "YOUR_PERSONAL_ACCESS_TOKEN";String projectName = "your-project";GitLabApi gitLabApi = new GitLabApi(gitLabUrl, personalAccessToken);try {// 触发并行构建,设置作业并行度为3Pipeline pipeline = gitLabApi.getCIApi().triggerPipeline(projectName, "master");gitLabApi.getCIApi().setPipelineVariable(projectName, pipeline.getId(), "CI_JOB_PARALLEL", "3");System.out.println("Parallel build triggered successfully.");} catch (Exception e) {e.printStackTrace();}}
}

4.6 高级特性:自定义构建脚本

GitLab CI Java API提供了自定义构建脚本的功能,允许您根据项目需求编写更灵活的构建脚本。这使得构建过程可以更加定制化,适应各种复杂的构建场景。

以下是一个示例代码,演示如何设置自定义构建脚本:

import org.gitlab4j.api.GitLabApi;
import org.gitlab4j.api.models.Pipeline;public class CustomBuildScriptExample {public static void main(String[] args) {String gitLabUrl = "https://gitlab.com";String personalAccessToken = "YOUR_PERSONAL_ACCESS_TOKEN";String projectName = "your-project";String customScript = "echo 'Custom build script executed'";GitLabApi gitLabApi = new GitLabApi(gitLabUrl, personalAccessToken);try {// 触发构建并设置自定义构建脚本Pipeline pipeline = gitLabApi.getCIApi().triggerPipeline(projectName, "master");gitLabApi.getCIApi().setPipelineVariable(projectName, pipeline.getId(), "CI_CUSTOM_SCRIPT", customScript);System.out.println("Build with custom script triggered successfully.");} catch (Exception e) {e.printStackTrace();}}
}

通过这些扩展功能和高级特性,GitLab CI Java API提供了更多的灵活性和定制选项,以适应各种项目的需求。在实际应用中,可以根据项目的具体情况深入研究GitLab CI Java API的各项功能和用法。

5. TeamCity Java REST Client

5.1 概述

TeamCity Java REST Client是一个用于与TeamCity持续集成和部署服务器进行交互的Java库。它提供了一组API,可以通过Java代码执行各种TeamCity操作,例如创建和管理项目、运行构建、获取构建状态等。

5.2 安装与配置

要使用TeamCity Java REST Client,您需要在项目的构建路径中添加以下依赖项:

<dependency><groupId>com.github.vincent-fuchs</groupId><artifactId>teamcity-client</artifactId><version>1.2.0</version>
</dependency>

5.3 使用方法

以下是一个简单的示例代码,演示如何使用TeamCity Java REST Client连接到TeamCity服务器,并获取一个项目的构建状态:

import com.github.vincent_fuchs.teamcity.rest.TeamCityInstance;
import com.github.vincent_fuchs.teamcity.rest.data.Build;
import com.github.vincent_fuchs.teamcity.rest.data.Project;public class TeamCityClientExample {public static void main(String[] args) {TeamCityInstance teamCityInstance = new TeamCityInstance("https://your-teamcity-instance.com", "username", "password");try {Project project = teamCityInstance.getProject("your-project");System.out.println("Latest build status: " + project.getLatestBuild().getStatus());} catch (Exception e) {e.printStackTrace();}}
}

5.4 功能与特性

  • 连接到TeamCity服务器
  • 创建、修改和删除项目
  • 运行构建和获取构建状态
  • 获取构建的控制台输出
  • 管理TeamCity的配置和代理设置

5.5 扩展功能:构建触发器

TeamCity Java REST Client支持配置构建触发器,允许您根据特定事件或条件触发构建。这对于实现自动化构建触发和集成到版本控制系统的场景非常有用。

以下是一个示例代码,演示如何配置构建触发器:

import com.github.vincent_fuchs.teamcity.rest.TeamCityInstance;
import com.github.vincent_fuchs.teamcity.rest.data.BuildType;
import com.github.vincent_fuchs.teamcity.rest.data.Trigger;
import com.github.vincent_fuchs.teamcity.rest.data.TriggerType;public class BuildTriggerExample {public static void main(String[] args) {TeamCityInstance teamCityInstance = new TeamCityInstance("https://your-teamcity-instance.com", "username", "password");try {BuildType buildType = teamCityInstance.getBuildType("your-build-type");// 配置触发器,在每次代码提交时触发构建Trigger trigger = new Trigger();trigger.setType(TriggerType.VCS_TRIGGER);buildType.addTrigger(trigger);System.out.println("Build trigger configured successfully.");} catch (Exception e) {e.printStackTrace();}}
}

5.6 高级特性:自定义构建参数

TeamCity Java REST Client支持传递自定义构建参数,以便在构建过程中使用。这使得构建过程更加灵活,可以根据需要动态配置构建行为。

以下是一个示例代码,演示如何配置自定义构建参数:

import com.github.vincent_fuchs.teamcity.rest.TeamCityInstance;
import com.github.vincent_fuchs.teamcity.rest.data.BuildType;import java.util.HashMap;
import java.util.Map;public class CustomBuildParametersExample {public static void main(String[] args) {TeamCityInstance teamCityInstance = new TeamCityInstance("https://your-teamcity-instance.com", "username", "password");try {BuildType buildType = teamCityInstance.getBuildType("your-build-type");// 定义自定义构建参数Map<String, String> customParameters = new HashMap<>();customParameters.put("param1", "value1");customParameters.put("param2", "value2");// 传递自定义构建参数buildType.setParameters(customParameters);System.out.println("Custom build parameters configured successfully.");} catch (Exception e) {e.printStackTrace();}}
}

通过这些扩展功能和高级特性,TeamCity Java REST Client提供了更多的定制和自动化选项,以适应不同项目的需求。在实际应用中,可以根据项目的具体情况深入研究TeamCity Java REST Client的各项功能和用法。

6. Bamboo Java REST Client

6.1 概述

Bamboo Java REST Client是一个用于与Bamboo持续集成和部署服务器进行交互的Java库。它提供了一组API,可以通过Java代码执行各种Bamboo操作,例如创建和管理计划、触发构建、获取构建状态等。

6.2 安装与配置

要使用Bamboo Java REST Client,您需要在项目的构建路径中添加以下依赖项:

<dependency><groupId>com.atlassian.bamboo</groupId><artifactId>bamboo-rest-client</artifactId><version>7.1.2</version>
</dependency>

6.3 使用方法

以下是一个简单的示例代码,演示如何使用Bamboo Java REST Client连接到Bamboo服务器,并触发一个构建:

import com.atlassian.bamboo.rest.client.BambooClient;
import com.atlassian.bamboo.rest.client.BambooClientManager;
import com.atlassian.bamboo.rest.client.domain.PlanIdentifier;
import com.atlassian.bamboo.rest.client.domain.PlanResult;public class BambooClientExample {public static void main(String[] args) {BambooClient bambooClient = BambooClientManager.createClient();try {PlanIdentifier planIdentifier = new PlanIdentifier("YOUR_PROJECT_KEY", "YOUR_PLAN_KEY");PlanResult planResult = bambooClient.getPlanResult(planIdentifier);System.out.println("Latest build status: " + planResult.getState());} catch (Exception e) {e.printStackTrace();}}
}

6.4 功能与特性

  • 连接到Bamboo服务器
  • 创建、修改和删除计划
  • 触发构建和获取构建状态
  • 获取构建的控制台输出
  • 管理Bamboo的代理设置和计划配置

6.5 扩展功能:构建触发器

Bamboo Java REST Client支持配置构建触发器,允许您根据特定事件或条件触发构建。这对于实现自动化构建触发和集成到版本控制系统的场景非常有用。

以下是一个示例代码,演示如何配置构建触发器:

import com.atlassian.bamboo.rest.client.BambooClient;
import com.atlassian.bamboo.rest.client.BambooClientManager;
import com.atlassian.bamboo.rest.client.domain.PlanIdentifier;
import com.atlassian.bamboo.rest.client.domain.PlanTrigger;public class BuildTriggerExample {public static void main(String[] args) {BambooClient bambooClient = BambooClientManager.createClient();try {PlanIdentifier planIdentifier = new PlanIdentifier("YOUR_PROJECT_KEY", "YOUR_PLAN_KEY");// 配置触发器,在每次代码提交时触发构建PlanTrigger trigger = new PlanTrigger();trigger.setPollingPeriod("1m");trigger.setBranch("master");bambooClient.createPlanTrigger(planIdentifier, trigger);System.out.println("Build trigger configured successfully.");} catch (Exception e) {e.printStackTrace();}}
}

6.6 高级特性:自定义构建脚本

Bamboo Java REST Client提供了自定义构建脚本的功能,允许您根据项目需求编写更灵活的构建脚本。这使得构建过程可以更加定制化,适应各种复杂的构建场景。

以下是一个示例代码,演示如何设置自定义构建脚本:

import com.atlassian.bamboo.rest.client.BambooClient;
import com.atlassian.bamboo.rest.client.BambooClientManager;
import com.atlassian.bamboo.rest.client.domain.Plan;
import com.atlassian.bamboo.rest.client.domain.PlanBranch;public class CustomBuildScriptExample {public static void main(String[] args) {BambooClient bambooClient = BambooClientManager.createClient();try {Plan plan = bambooClient.getPlan("YOUR_PROJECT_KEY", "YOUR_PLAN_KEY");// 设置自定义构建脚本plan.getBuildDefinition().setBuildCommand("echo 'Custom build script executed'");bambooClient.updatePlan(plan);System.out.println("Build with custom script configured successfully.");} catch (Exception e) {e.printStackTrace();}}
}

通过这些扩展功能和高级特性,Bamboo Java REST Client提供了更多的灵活性和定制选项,以适应不同项目的需求。在实际应用中,可以根据项目的具体情况深入研究Bamboo Java REST Client的各项功能和用法。

总结

使用这些持续集成与部署库,您可以轻松地将自动化集成和部署步骤纳入您的DevOps流程中。通过使用Java代码执行各种操作,您可以提高效率、减少人为错误,并实现更高质量的软件交付。

这篇关于【Java万花筒】提高团队生产力:深入了解Java持续集成与部署库的功能与特性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717529

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06