持续集成/持续交付——JenkinsFile详细使用教程

news2024/11/16 8:58:51

在这里插入图片描述

JenkinsFile详细使用教程

  • 一、BlueOcean
    • 1、BlueOcean 概念
    • 2、BlueOcean 特性
    • 3、BlueOcean 安装
  • 二、Pipeline 简介
    • 1、Jenkins Pipeline 概念
    • 2、Jenkinsfile 语法类型:
    • 3、采用Jenkins 任务页面输入
      • a. Jenkins中创建一个 pipeline 任务
      • b. Definition 中选择 Pipeline Script
      • c. 在 Pipeline 模块添加Pipeline代码
      • d. 运行
    • 4、利用Git源码库导入 Jenkins Pipeline
      • a. 在Jenkins Pipeline 任务中选择 Pipeline script from SCM,
      • b. 然后添加 git 源码地址,
      • c. 在Script Path中填写需要运行的Jenkinsfile文件所在的地址
      • d. 运行
  • 三、Jenkinsfile 语法简介
    • 1、Jenkinsfile 支持两种语法形式 :
    • 2、Jenkinsfile 语法一:Declarative Pipeline
    • 3、Declarative Pipeline - agent
    • 4、Declarative Pipeline - stages
    • 5、Declarative Pipeline - stage
    • 6、Declarative Pipeline - steps
    • 7、Declarative Pipeline - stages, stage, steps 代码举例
    • 8、代码演示
  • 四、JenkinsFile语法参数post
    • 案例1-执行失败
    • 案例2-执行成功
  • 五、JenkinsFile 语法参数 options
    • 1、正常情况
    • 2、异常情况
  • 六、JenkinsFile 语法参数 parameters
    • 1、Declarative Pipeline - parameters 代码举例
    • 2、案例:以默认值构建
    • 3、案例:非默认值构建
    • 3、解决第一次运行失败的问题
  • 七、JenkinsFile 语法参数 env_tools(有问题)
    • 1、Scripts pipeline: 环境变量定义与引用
      • 1.1、环境变量定义1: JDK Home的定义
      • 1.2、环境变量定义2: Maven Home的定义
    • 2、Script 代码中引用环境变量,调用java、maven工具
  • 八、JenkinsFile 语法参数 if-else
    • 1、Jenkinsfile 语法二:Scripts pipeline
    • 2、Scripts pipeline: 流程控制之 – if/else
    • 3、采用master构建
    • 4、采用非master构建
  • 九、JenkinsFile 语法参数 try-catch
    • 1、Scripts pipeline: 流程控制之 – try/catch
    • 2、演示出现异常
    • 3、演示正常
  • 十、JenkinsFile 语法参数 environment
    • 1、Declarative Pipeline - environment
    • 2、Declarative Pipeline - environment代码举例
    • 3、environment 运行演示
  • 十一、JenkinsFile 语法参数 triggers
    • 1、Declarative Pipeline - triggers
    • 2、Declarative Pipeline - triggers 代码举例
    • 3、triggers 运行演示
  • 十二、Pipeline 总结

一、BlueOcean

1、BlueOcean 概念

提供了一套可视化操作界面来帮助创建、编辑 Pipeline 任务
它为开发人员提供了更具乐趣的Jenkins使用方式
实现了一种全新的、现代风格的用户界面
有助于任何规模的团队实现持续交付

2、BlueOcean 特性

流水线编辑器:是一种直观并可视化的流水线编辑器
流水线的可视化:对流水线的可视化表示
流水线的诊断:即刻定位任务问题
个性化仪表盘:用户可以自定义仪表盘,只显示与自身相关的流水线

3、BlueOcean 安装

需要在 Jenkins plugin 中安装 BlueOcean
在这里插入图片描述

二、Pipeline 简介

1、Jenkins Pipeline 概念

a、借用Unix 中的Pipeline思路,一种高内聚低耦合的工具
b、Jenkins 2.0 以上才会有
c、一系列 Jenkins 插件将整个持续集成用解释性代码 Jenkinsfile 来描述
d、Jenkinsfile 使用方法:

Jenkins 任务页面输入
源代码工程中编辑

2、Jenkinsfile 语法类型:

Declarative pipeline
Scripts pipeline

3、采用Jenkins 任务页面输入

a. Jenkins中创建一个 pipeline 任务

在这里插入图片描述

b. Definition 中选择 Pipeline Script

c. 在 Pipeline 模块添加Pipeline代码

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

在这里插入图片描述

d. 运行

在这里插入图片描述

4、利用Git源码库导入 Jenkins Pipeline

a. 在Jenkins Pipeline 任务中选择 Pipeline script from SCM,

b. 然后添加 git 源码地址,

c. 在Script Path中填写需要运行的Jenkinsfile文件所在的地址

在这里插入图片描述

d. 运行

在这里插入图片描述
在这里插入图片描述


三、Jenkinsfile 语法简介

1、Jenkinsfile 支持两种语法形式 :

Declarative pipeline - v2.5之后引入,结构化方式
Scripts pipeline - 基于 groovy 的语法

在这里插入图片描述

2、Jenkinsfile 语法一:Declarative Pipeline

a.必须包含在一个pipeline块内,具体来说是:
pipeline {
}

b.基本的部分是“steps”,steps 告诉Jenkins要做什么
c.语句分类具体包含Sections, Steps,赋值等几大类

在这里插入图片描述

3、Declarative Pipeline - agent

agent :定义pipeline执行节点
必须出现的指令
参数

any:可以在任意agent上执行pipeline
none:pipeline将不分配全局agent, 每个stage分配自己的agent
label:指定运行节点的Label
node:自定义运行节点配置,

指定 label
指定 customWorkspace

docker:控制目标节点上的docker运行相关内容

Declarative Pipeline - agent 代码举例

pipeline {
    agent {
        label 'master'
        customWorkspace 'myWorkspace'
    }
}

4、Declarative Pipeline - stages

必须出现的指令
无参数
包含一个或多个stage的序列,Pipeline的大部分工作在此执行;
每个Pipeline 代码区间中必须只有一个stages

5、Declarative Pipeline - stage

必须出现的指令
无参数
包含在stages中
Pipeline完成的所有实际工作都需要包含到stage中
需要定义stage的名字

6、Declarative Pipeline - steps

必须出现的指令
无参数
具体执行步骤,包含在 stage 代码区间中

7、Declarative Pipeline - stages, stage, steps 代码举例

 stages {
    stage('pull source code'){
        steps {
            echo 'pull source code'
            sleep 5
        }
    }
 }

8、代码演示

pipeline {
    agent any
    
    stages {
        stage("pull source code"){
            steps {
                echo "pull source code"
                sleep 5
            }
        }
        
        stage("build"){
            steps{
                echo "build source code"
                sleep 5
            }
        }
        
        stage("test"){
            steps{
                echo "run unit test"
            
            }
        }
        
        stage("deploy"){
            steps{
                echo "deploy to the website"
            
            }
    }
}
}

在这里插入代码片
在这里插入图片描述

在这里插入图片描述

四、JenkinsFile语法参数post

post :定义Pipeline或stage运行结束时的操作
不是必须出现的指令
参数:

always:无论Pipeline运行的完成状态如何都会运行
changed:只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能运行
failure:仅当当前Pipeline处于“失败”状态时才运行
success :仅当当前Pipeline具有“成功”状态时才运行
unstable:只有当前Pipeline具有“不稳定”状态才能运行
aborted:只有当前Pipeline处于“中止”状态时才能运行

案例1-执行失败

pipeline{
    agent any
    
    stages {
        stage('Test'){
            steps{
                echo "This is test code"
                sleep 2
                sh 'exit -1'
            }
        }
    }
    
    post{
        always{
            echo 'say goodby'
        }
        success{
            echo 'This is success exit'
        }
        failure{
            echo 'This is failure exit'
        }
    }
}

在这里插入图片描述

案例2-执行成功

pipeline{
    agent any
    
    stages {
        stage('Test'){
            steps{
                echo "This is test code"
                sleep 2
                sh 'exit 0'
            }
        }
    }
    
    post{
        always{
            echo 'say goodby'
        }
        success{
            echo 'This is success exit'
        }
        failure{
            echo 'This is failure exit'
        }
    }
}

在这里插入图片描述

五、JenkinsFile 语法参数 options

options :定义pipeline 的专有属性
不是必须出现的指令
参数:

buildDiscarder:保持构建的最大个数(历史构建个数)
disableConcurrentBuilds:不允许并行执行pipeline任务
timeout:pipeline 超时时间
retry:失败后,重试整个Pipeline的次数
timestamps:预定义由Pipeline生成的所有控制台输出时间
skipStagesAfterUnstable:一旦构建状态进入了“Unstable”状态,就跳过此stage

1、正常情况

pipeline{
    agent {
        node{
            label 'docker_node'
            customWorkspace "pipelineWorkspace"
        }
    }
    
    options {
        timeout(time: 10,unit:"SECONDS")    //构建超过10s,就会超时
        buildDiscarder(logRotator(numToKeepStr:"2"))    //最多保留2个最新的构建
        retry(5)    //失败后尝试运行5}
    stages {
        stage('begin'){
            steps{
                echo 'hello pipeline begin'
                sleep 2
            }
            
        }
        stage('running'){
            steps{
              echo 'hello pipeline running'
                sleep 2  
            }
            
        }
        stage('finsh'){
            steps{
                echo 'hello pipeline finsh'
                sleep 2
                sh "exit 0"
            }
            
        }
    }
        
    post{
        always{
            echo 'say goodby'
        }
        success{
            echo 'This is success exit'
        }
        failure{
            echo 'This is failure exit'
        }
    }
        
    
}

控制台输出

Started by user admin
[Pipeline] Start of Pipeline
[Pipeline] node
Running on docker_node in /root/jenkins_mulu/workspace/pipeline_demo_options
[Pipeline] {
[Pipeline] ws
Running in /root/jenkins_mulu/pipelineWorkspace
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 10 sec
[Pipeline] {
[Pipeline] retry
[Pipeline] {
[Pipeline] stage
[Pipeline] { (begin)
[Pipeline] echo
hello pipeline begin
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (running)
[Pipeline] echo
hello pipeline running
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (finsh)
[Pipeline] echo
hello pipeline finsh
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] sh
+ exit 0
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] echo
say goodby
[Pipeline] echo
This is success exit
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // retry
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
[Pipeline] // ws
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

2、异常情况

pipeline{
    agent {
        node{
            label 'docker_node'
            customWorkspace "pipelineWorkspace"
        }
    }
    
    options {
        timeout(time: 10,unit:"SECONDS")    //构建超过10s,就会超时
        buildDiscarder(logRotator(numToKeepStr:"2"))    //最多保留2个最新的构建
        retry(5)    //失败后尝试运行5}
    stages {
        stage('begin'){
            steps{
                echo 'hello pipeline begin'
                sleep 2
            }
            
        }
        stage('running'){
            steps{
              echo 'hello pipeline running'
                sleep 2  
            }
            
        }
        stage('finsh'){
            steps{
                echo 'hello pipeline finsh'
                sleep 2
                sh "exit -1"
            }
            
        }
    }
        
    post{
        always{
            echo 'say goodby'
        }
        success{
            echo 'This is success exit'
        }
        failure{
            echo 'This is failure exit'
        }
    }
        
    
}

在这里插入图片描述

六、JenkinsFile 语法参数 parameters

parameters :定义pipeline 的专有参数列表
不是必须出现的指令
参数:

支持数据类型:booleanParam, choice, credentials, file, text, password, run, string
类似参数化构建的选项

1、Declarative Pipeline - parameters 代码举例

parameters {
    string(name: 'PERSON', defaultValue: 'Jenkins', description: '输入的文本参数')
    choice(name: 'CHOICE', choices: ['One', 'Two', 'Three'], description: 'Pick something')
}

2、案例:以默认值构建

pipeline {
    agent{
        node{
            label 'docker_node'
            customWorkspace "myWorkspace"
        }
    }

    parameters{
        string(name:'PERSON',defaultValue:'Jenkins',description:'输入文本参数')
    }
    
    stages{
        stage('Test Parameters'){
            steps{
                echo "Hello ${PERSON}"
            }
        }
    }
}

在这里插入图片描述

在这里插入图片描述

3、案例:非默认值构建

在这里插入图片描述

在这里插入图片描述

3、解决第一次运行失败的问题

pipeline {
    agent{
        node{
            label 'docker_node'
            customWorkspace "myWorkspace"
        }
    }

    parameters{
        string(name:'PERSON',defaultValue:'Jenkins',description:'输入文本参数')
    }
    
    environment{
        PERSON ="$params.PERSON"
    }
    
    stages{
        stage('Test Parameters'){
            steps{
                echo "Hello ${PERSON}"
            }
        }
    }
}

七、JenkinsFile 语法参数 env_tools(有问题)

1、Scripts pipeline: 环境变量定义与引用

环境工具变量的定义
设置位置: “Manage Jenkins”——> “Global Tool Configuration”

1.1、环境变量定义1: JDK Home的定义

在这里插入图片描述

1.2、环境变量定义2: Maven Home的定义

在这里插入图片描述

2、Script 代码中引用环境变量,调用java、maven工具

stage('env tools') {
    node('docker_node'){        
        //定义maven java环境
        def mvnHome = tool 'maven'
        def jdkHome = tool 'jdk11'
        
        //引用环境变量,配置PATH变量
        env.PATH = "${mvnHome}/bin:${env.PATH}"
        env.PATH = "${jdkHome}/bin:${env.PATH}"
        
        //调用java mvn 工具
        sh "java -version"
        sh "mvn --version"
    }
}

运行结果

在这里插入图片描述

八、JenkinsFile 语法参数 if-else

1、Jenkinsfile 语法二:Scripts pipeline

基于 groovy 语法定制的一种DSL语言
灵活性更高
可扩展性更好
Script pipeline 与 Declarative pipeline 程序构成方式有雷同之处,基本语句也有相似之处

在这里插入图片描述

2、Scripts pipeline: 流程控制之 – if/else

node {
    stage('Example') {
        if (env.BRANCH_NAME == 'master') {
            echo 'I only execute on the master branch'
        } else {
            echo 'I execute elsewhere'
        }
    }
}

stage('Build'){
    node {
        echo 'this is build stage.'
    }
}

3、采用master构建

在这里插入图片描述
在这里插入图片描述

4、采用非master构建

在这里插入图片描述

在这里插入图片描述

九、JenkinsFile 语法参数 try-catch

1、Scripts pipeline: 流程控制之 – try/catch

场景:异常处理,在运行程序的时候,不希望代码的错误,导致程序的退出
使用try进行捕获,使用catch对异常的代码进行处理

2、演示出现异常

stage('Test') {
    node{
        echo "This is test stage which run on the slave agent."

        try {

            echo "This is in the try block."
            
            sh 'exit 1'

        }catch (exc) {

            echo "Something failed, I'm in the catch block."

        }finally {

            echo "Finally, I'm in the finally block."

        }
    }
}

在这里插入图片描述

3、演示正常

stage('Test') {
    node{
        echo "This is test stage which run on the slave agent."

        try {

            echo "This is in the try block."
            
            sh 'exit 0'

        }catch (exc) {

            echo "Something failed, I'm in the catch block."

        }finally {

            echo "Finally, I'm in the finally block."

        }
    }
}

在这里插入图片描述

十、JenkinsFile 语法参数 environment

1、Declarative Pipeline - environment

environment: 定义Pipeline或stage运行时的环境变量
不是必须出现的指令
无参数

2、Declarative Pipeline - environment代码举例

environment {
    hlw = 'hello world'
}

3、environment 运行演示

pipeline {
    agent  {
        node{
            label 'docker_node'
            customWorkspace "myWorkspace"
        }

    }

    environment {
        hlw = 'hello world'
    }

    stages {
        stage('Print environment_1'){
            steps {
                echo hlw
                sleep 1
            }
        }

        stage('Print environment_2'){
            steps {
                sh 'echo ${hlw}'
                sleep 1
            }
        }
    }

    post {
        success {
            echo 'goodbye pipeline success!'
            sleep 5
        }

        failure {
            echo 'ops!!! pipeline failed....'
            sleep 5
        }

        always {
            echo 'always say goodbye'
        }
    }
}

运行结果
在这里插入图片描述

十一、JenkinsFile 语法参数 triggers

1、Declarative Pipeline - triggers

triggers:定义了Pipeline自动化触发的方式
不是必须出现的指令
参数:

cron:接受一个cron风格的字符串来定义Pipeline触发的常规间隔
pollSCM:接受一个cron风格的字符串来定义 Jenkins 检查SCM源更改的常规间隔;如果存在新的更改,则Pipeline将被重新触发。

2、Declarative Pipeline - triggers 代码举例

triggers {
    cron('H/2 * * * *')
}

3、triggers 运行演示

pipeline {
    agent{
        node{
            label 'docker_node'
            customWorkspace "myWorkspace"
        }
    }

    triggers {
        cron('H/2 * * * *')
    }

    stages{
        stage('Test Parameters'){
            steps{
                echo "Hello"
            }
        }
    }
}

十二、Pipeline 总结

Pipeline 是 Jenkins 2.0之后推出的高阶工具
有了Pipeline之后,Jenkins任务可以实现从简单持续集成到全面CI/CD流水线升级的转变
可以选择在Jenkins 任务中填写Pipeline script
也可以选择利用源码库对Pipeline script进行管理
两种Jenkinsfile语法:Declarative Pipeline 与 Script Pipeline
语句上有相似之处,可扩展性不同,灵活性也不同

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

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

相关文章

电脑提示msvcp140.dll丢失的解决方法,msvcp140.dll丢失修复教程

msvcp140.dll是Microsoft Visual C Redistributable所需的一个动态链接库文件,它包含了Visual C运行库中的一些函数和类库。这个文件通常出现在Windows操作系统中,用于支持使用Visual C编写的程序的正常运行。如果系统缺少或损坏了这个文件,可…

计算机组成原理 4.2.1存储芯片连接

连接原理 主存储器 通过数据总线、地址总线和控制总线和CPU相连数据总线的位数正比于数据传输率地址总线的位数决定可寻址的最大地址空间控制总线(读/写)指出总线周期的类型和本次输入/输出完成的时刻 但是实际中存储芯片往往很小难以满足地址和数据的位数需求,此…

如何在云服务器上搭建ChatGLM

摘录:ChatGPT重新点燃了AI,然后OpenAI却没有向我们开放ChatGPT,虽然有些人通过了一下手段注册了账号,但是不久就被OpenAI拉入了黑名单。3月份我国的百度也推出了和ChatGPT对标的文言一心,随后阿里也推出了自己的文本对…

李雨浛:在数据、网络与民意之间——用计算社会科学方法探讨数字媒体与可持续未来 | 提升之路系列(八)...

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

创建并使用shell脚本

1,查询 bash解释器 所在位置 创建前,我们需要先知道 bash 解释器所在的位置,以方便在头部写声明。一般位置是在 /bin/bash 但是有的是在 /usr/bin/bash ,所以需要查找一下。 文件位置查找命令:whereis xxx rootarmb…

Probabilistic and Geometric Depth: Detecting Objects in Perspective 论文学习

论文地址:Probabilistic and Geometric Depth: Detecting Objects in Perspective Github 地址:Probabilistic and Geometric Depth: Detecting Objects in Perspective 1. 解决了什么问题? 3D 目标检测在许多应用中发挥着重要作用&#xf…

分析的四个维度

我们都听过这句格言“数据是新石油”——一种宝贵、丰富的资源,只有提炼后才有用。然而,最引人注目但又令人望而生畏的比较之一是将船只送入海洋进行石油勘探。有些会失败,有些会有重大发现。 深海勘探和钻探取决于精确测绘和对海底的清晰认…

【计算机网络】图解内容分发网络 CDN

【计算机网络】图解内容分发网络 CDN 参考资料: 用了CDN就一定比不用更快吗? 什么是内容分发网络 高性能利器:CDN我建议你好好学一下! 文章目录 【计算机网络】图解内容分发网络 CDN一、CDN 概述1.1、什么是 CDN1.2、为什么需要 …

数字化转型导师坚鹏:数字化转型背景下的企业人力资源管理

企业数字化转型背景下的企业人力资源管理 课程背景: 很多企业存在以下问题: 不清楚企业数字化转型目前的发展阶段与重要应用? 不知道企业数字化转型给企业人力资源管理带来哪些机遇与挑战? 不知道企业数字化转型背景下如何…

SpringBoot 项目如何实现动态配置多数据源?

简介: dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7, SpringBoot 1.4.x 1.5.x 2.x.x。 特性: 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持…

认识JavaBean

什么是JavaBean? JavaBean是指符合特定规范以及定义的Java类,通常用于封装数据,提供访问数据的方法和属性,并且可以被其他程序重用。它具有以下特点: 遵循特定编程规范:JavaBean必须要遵循JavaBean编程规范&#xff…

分层领域模型相关总结(DO/PO/VO/BO/DTO/Query等概念)

分层领域模型(DO/PO/VO/BO/DTO/Query等概念) 1. 为什么会有这么多O的概念? 各种分层概念的提出都是为了解耦,增加逻辑/代码的复用,便于后期维护/开发,提高团队开发效率;but,过多的细分也会使得开发过程相对…

Chrome 113 发布,默认启用 WebGPU

经过四周时间开发,Chrome 113 稳定版正式推出,新版本包括用于视频电话会议的 AV1 视频编码、WebGPU,以及其他增强功能。 默认启用 WebGPU WebGPU 是用于 Web 的新 API,它使用了现代的硬件功能,允许在 GPU 上进行渲染和…

Unable to import maven project: See logs for details错误的多种解决方法

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 解决方法一3.2 解决方法二 4. 补充说明 1. 复现错误 今天从gitlab上下载完项目后,无法启动项目,留意到右下角的Evnet Log,点开如下图所示: 即Unable to import maven project: See…

vue-element-admin快速搭建后台模板

快速搭建后台模板 环境以及会出现的问题安装目录结构基本配置路由配置 环境以及会出现的问题 node版本17.0.0 python版本2.7.10(node-sass依赖) 运行项目报错Error: error:0308010C:digital envelope routines::unsupport 请看这篇文章 https://blog.cs…

FM33A048B I2C

I2C 模块实现MCU 与外部I2C 接口器件之间的同步通信,硬件实现串并转换。支持I2C 的主机模式,不支持从机模式和多主机模式。 特点: ⚫ 只支持I2C 主机模式, 不支持从机模式和多主机模式 ⚫ 支持7 位或10 位从机地址 ⚫ 传输速度支持标准模式(1…

Java面试题总结 | Java面试题总结10- Feign和设计模式模块(持续更新)

文章目录 Feign项目中如何进行通信Feign原理简述 设计模式spring用到的设计模式项目的场景中运用了哪些设计模式写单例的时候需要注意什么工厂模式的理解设计模式了解么工厂设计模式单例设计模式代理设计模式策略模式**模板方法模式**观察者模式**适配器模式**观察者模式**适配…

TimeScaleDB食用手册

TimescaleDB食用手册 一 TimescaleDB介绍 TimescaleDB是一种用于处理时间序列数据的开源时序数据库,它是PostgreSQL的扩展。它可以处理大量的时间序列数据,并且支持SQL查询和连续聚合功能。 1.TimescaleDB的优点 分布式架构:TimescaleDB利…

类和对象上

文章目录 一、类的定义1、声明和定义全部放在类体中2、 类声明放在.h文件中,成员函数定义放在.cpp文件中 二、类的访问限定符三、类的作用域类及其实例化1、作用域2、实例化 四、类对象大小的计算1、计算对象(仅成员变量)2、计算方式&#xf…

iMazing2官方下载最新iPhone/iPad手机设备管理工具

iMazing 2最新版它可以完美地在 iOS 设备之间传输数据。 该软件专门设计用于为用户提供对 iPhone、iPod 和 iPad 的更多控制和管理能力。 它将所有这些高价值设备变成了外部存储,以便您可以交换各种数据,例如短信、通话记录、视频或照片。值得信赖的是&a…