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

CI/CD基础知识

什么是CI/CD

CI:持续集成,开发人员频繁地将代码集成到主干(主分支)中每次集成都通过自动化构建和测试来验证,从而尽早发现集成错误,常用的CI工具包括Jenkins、Travis CI、CircleCI、GitLab CI等

CD: 持续交付或持续部署,持续交付是指在持续集成的基础上,自动化将代码部署到生产环境或预生产环境的过程。它确保代码在任何时候都可以安全地部署到生产环境。自动化部署:通过自动化脚本将应用程序部署到服务器,减少手动操作的错误。可随时发布:代码经过测试后,可以随时选择将其发布到生产环境。环境一致性:确保开发、测试和生产环境的一致性,以减少环境差异带来的问题。工具:常用的持续交付工具包括Spinnaker、Octopus Deploy、AWS CodeDeploy等。

1、常用的CI/CD工具

特性GitLab CI/CDTravis CIJenkins
部署模式内置于 GitLab(SaaS/自托管)纯 SaaS(无自托管版)自托管为主(支持云托管)
配置方式.gitlab-ci.yml 文件.travis.yml 文件Jenkinsfile(Groovy DSL)
执行环境GitLab Runner(可自定义)预置的虚拟机环境Agent/Node 自由扩展
依赖管理自带 Artifact 存储有限缓存机制需插件(如 Nexus 集成)
网络拓扑原生 Kubernetes 集成固定环境无集群管理支持混合云集群调度

第三方服务集成

服务类型GitLab CITravis CIJenkins
代码质量内置 SAST/DAST 扫描需通过插件扩展需安装 SonarQube 插件
通知渠道20+ 内置通知方式基础邮件/Slack500+ 通知插件
安全扫描集成 Dependency Scanning依赖第三方脚本需配置安全工具链
K8s 集成原生支持 Auto DevOps需手动配置 kubectl通过 Kubernetes 插件

2、CI/CD中的jenkins

1、jenkins的基本知识

Jenkins是一款开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)过程。它提供了一系列功能,帮助开发团队自动化软件构建、测试和部署。

主要功能

持续集成:自动化构建和测试代码,确保每次提交都能快速反馈

插件支持

Jenkins有丰富的插件生态系统,支持与各种工具和技术集成如Git、Maven、Docker、K8s等

构建自动化

支持多种构建工具和语言,能够自动化构建过程,生成可执行文件或其他工件。

分布式构建

支持在多台机器上并行构建,提升构建效率,适用于大型项目。

可视化界面提供用户友好的Web界面,方便用户配置和监控构建任务
定时构建支持定时触发构建任务,能够根据预设的时间表自动执行
通知和报告提供构建状态通知功能,可以通过电子邮件、Slack等方式发送构建结果
集成测试支持自动化测试框架,能够在构建过程中运行单元测试和集成测试

优势:开源和免费:灵活性和可扩展性:社区支持:跨平台支持:提高开发效率:快速反馈:

2、在jenkins如何配置实现CI/CD

一:安装Jenkins

1、下载和安装Jenkins:2、启动Jenkins并完成初始配置。3、安装必要的插件:git、docker、“Pipeline”插件(通常默认已安装)

二:创建流水线项目

新建流水线项目:在Jenkins主页,点击“新建任务”。输入项目名称,选择“流水线”,然后点击“确定”。 配置流水线:在项目配置页面,找到“流水线”部分。

三:编写流水线脚本Jenkins支持两种类型的流水线:声明式流水线和脚本式流水线。
四:保存和构建

保存配置:完成流水线脚本的编写后,点击“保存”。
构建流水线:在项目主页,点击“立即构建”按钮,开始执行流水线。
可以在“构建历史”中查看构建状态和日志。

五:监控和通知

监控构建状态:Jenkins提供了实时的构建日志和状态监控,可以查看每个阶段的执行情况。
设置通知:可以通过邮件、Slack等方式配置构建通知,确保团队及时了解构建状态

1、实现重点

- Pipeline脚本

在Jenkins中,Pipeline脚本主要有两种类型:声明式流水线(Declarative Pipeline)和脚本式流水线(Scripted Pipeline)。

声明式流水线(Declarative Pipeline)脚本式流水线(Scripted Pipeline)
易读性:声明式流水线的语法更为简洁和直观。
结构化:使用固定的结构,便于理解和维护。
内置功能:提供了一些内置的功能,如post、options等,简化了常见的任务。
灵活性:使用Groovy语言编写,提供了更大的灵活性和控制能力
复杂逻辑:适合需要复杂逻辑和条件判断的场景
不规则结构:没有固定的结构,可能会导致可读性降低,尤其是对于大型项目

组成元素

pipeline:整个流水线的定义。
agent:指定代理上执行流水线,特定或任何可用的节点
stages:流水线的各个阶段,包含多个stage
stage:每个阶段的定义,表示流水线中的一个步骤
steps:在每个阶段中执行的具体操作可以是命令、脚本等
post:定义在流水线执行后的操作如成功、失败时的处理

 组成元素:
node:定义在某个代理节点上执行的代码块。
stage:定义流水线中的一个阶段。
steps:在每个阶段中执行的具体操作。
try-catch-finally:用于处理异常和控制流程。
environment:定义环境变量。
声明式流水线
pipeline {agent anyenvironment {// 定义环境变量NODE_ENV = 'production'}stages {stage('Checkout') {steps {// 从Git仓库检出代码git url: 'https://github.com/your-repo.git', branch: 'main'}}stage('Build') {steps {// 执行构建命令sh 'npm install'sh 'npm run build'}}stage('Code Quality') {steps {// 运行代码质量检查sh 'npm run lint'}}stage('Test') {steps {// 执行单元测试sh 'npm test'}}stage('Deploy') {steps {script {// 根据环境变量决定部署目标if (NODE_ENV == 'production') {sh 'scp -r dist/* user@production-server:/path/to/deploy'} else {sh 'scp -r dist/* user@staging-server:/path/to/deploy'}}}}}post {success {// 构建成功后的操作echo 'Build succeeded!'}failure {// 构建失败后的操作echo 'Build failed!'}always {// 无论成功与否都执行的操作cleanWs() // 清理工作区}}
}
脚本式流水线
node {// 定义环境变量def NODE_ENV = 'production'stage('Checkout') {echo 'Checking out code...'// 从Git仓库检出代码git url: 'https://github.com/your-repo.git', branch: 'main'}stage('Build') {echo 'Building the application...'// 执行构建命令sh 'npm install'sh 'npm run build'}stage('Code Quality') {echo 'Running code quality checks...'// 运行代码质量检查sh 'npm run lint'}stage('Test') {echo 'Running tests...'// 执行单元测试sh 'npm test'}stage('Deploy') {echo 'Deploying the application...'// 根据环境变量决定部署目标if (NODE_ENV == 'production') {sh 'scp -r dist/* user@production-server:/path/to/deploy'} else {sh 'scp -r dist/* user@staging-server:/path/to/deploy'}}// 后处理步骤try {// 这里可以添加一些后处理逻辑} catch (Exception e) {echo 'An error occurred: ' + e.getMessage()} finally {// 清理工作区cleanWs()}
}

2、多分支流水线管理

1、安装pipline和multibranch pipline插件;

2、创建multobranch pipline项目;

3、配置git仓库,指定git的url配置凭证;

4、配置分支发现,添加branch Sources配置发现策略,按命名发现和按分支发现。

5、在git存储的每个分支根目录下添加jenkinsfile定义该分支的流水线逻辑;

6、保存并构建:jenkins会自动扫描git存储库的分支找到分支创建对应的pipline。

3、jenkins配置git集成出发自动集成

Webhook 自动触发(推荐方案)1、安装jenkins和git插件;2、创建jenkins任务配置git仓库url;3、Git 设置 Webhook: URL: http://jenkins.example.com/project/my-pipeline;Secret Token: 与Jenkins全局配置一致;触发事件: Push events, Merge Request events;4、验证配置提交代码观察是否自动构建。

4、jenkins如何配置构建参数实现不同环境的部署

在Jenkins中,可以通过配置构建参数来实现不同环境的部署。这通常涉及到使用参数化构建,使得用户在触发构建时可以选择目标环境。

1、创建参数化构建  步骤:1)创建或配置一个Pipeline项目:2)启用参数化构建:在项目配置页面,找到“参数化构建过程”选项,勾选“参数化构建过程”。点击“添加参数”,选择合适的参数类型。例如,可以选择“选择参数”(Choice Parameter)或“字符串参数”(String Parameter)。3)配置参数:如果选择“选择参数”,可以在“选择参数”字段中输入不同的环境选项,例如:development;staging;production 如果选择“字符串参数”,可以设置一个默认值,用户可以在构建时输入目标环境。

2. 修改Jenkinsfile: 在Jenkinsfile中,使用传入的参数来决定部署的目标环境。

pipeline {agent anyparameters {choice(name: 'DEPLOY_ENV', choices: ['development', 'staging', 'production'], description: '选择部署环境')}stages {stage('Checkout') {steps {git url: 'https://github.com/your-repo.git', branch: 'main'}}stage('Build') {steps {sh 'npm install'sh 'npm run build'}}stage('Deploy') {steps {script {// 根据选择的环境进行部署if (params.DEPLOY_ENV == 'production') {sh 'scp -r dist/* user@production-server:/path/to/deploy'} else if (params.DEPLOY_ENV == 'staging') {sh 'scp -r dist/* user@staging-server:/path/to/deploy'} else {sh 'scp -r dist/* user@development-server:/path/to/deploy'}}}}}post {success {echo 'Deployment succeeded!'}failure {echo 'Deployment failed!'}}
}

3)触发构建:当用户在Jenkins界面中触发构建时,会看到一个下拉菜单或输入框,允许他们选择或输入目标环境。Jenkins会根据用户选择的环境执行相应的部署步骤。

相关文章:

CI/CD基础知识

什么是CI/CD CI:持续集成,开发人员频繁地将代码集成到主干(主分支)中每次集成都通过自动化构建和测试来验证,从而尽早发现集成错误,常用的CI工具包括Jenkins、Travis CI、CircleCI、GitLab CI等 CD&#…...

MySQL 的 SQL 语句执行顺序

MySQL 的 SQL 语句执行顺序并不完全按照代码的书写顺序执行,而是遵循一套固定的逻辑流程 1. FROM 和 JOIN 作用:确定查询的数据来源,包括表和它们的连接方式(如 INNER JOIN, LEFT JOIN 等)。 细节: 先执行…...

Dubbo(21)如何配置Dubbo的注册中心?

在分布式系统中,注册中心是一个关键组件,用于服务的注册和发现。Dubbo 支持多种注册中心,包括 ZooKeeper、Nacos、Consul、Etcd 等。下面详细介绍如何配置 Dubbo 的注册中心,以 ZooKeeper 为例。 配置步骤 引入依赖:…...

AISEO中的JSON 如何部署?

一、JSON 是什么? JSON(JavaScript Object Notation) 是一种轻量级的数据格式,用于在不同系统之间传递结构化信息。它的核心特点是: 易读:用简单的 {键: 值} 对表示数据,例如: json…...

力扣hot100——最长连续序列(哈希unordered_set)

题目链接&#xff1a;最长连续序列 1、错解&#xff1a;数组做哈希表&#xff08;内存超出限制&#xff09; int longestConsecutive(vector<int>& nums) {vector<bool> hash(20000000010, false);for(int i0; i<nums.size();i){hash[1000000000nums[i]]t…...

几种常见的.NET单元测试模拟框架介绍

目录 1. Moq 2. NSubstitute 3. AutoFixture 4. FakeItEasy 总结对比 单元测试模拟框架是一种在软件开发中用于辅助单元测试的工具。 它的主要作用是创建模拟对象来替代真实对象进行测试。在单元测试中&#xff0c;被测试的代码可能依赖于其他组件或服务&#xff0c;如数…...

装饰器模式与模板方法模式实现MyBatis-Plus QueryWrapper 扩展

pom <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 --> </dependency>MPJLambdaWrapperX /*** 拓展 MyBatis Plus Join QueryWrapper 类&…...

11-SpringBoot3入门-整合aop

1、概念&#xff08;个人理解&#xff09; AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;面向切面编程。 1&#xff09;切面&#xff08;Aspect&#xff09;&#xff1a;提供切入连接点的方法 2&#xff09;连接点&#xff08;Joinpoint&#xff09;…...

naive_admin项目实战03 基于Go语言的后端

01.使用Goland打开项目 02.使用Goland连接MySQL 03.执行SQL脚本 set names utf8mb4; set foreign_key_checks 0;-- ---------------------------- -- table structure for permission -- ---------------------------- drop table if exists permission; create table permiss…...

基于卷积神经网络的眼疾识别系统,resnet50,efficentnet(pytorch框架,python代码)

更多图像分类、图像识别、目标检测、图像分割等项目可从主页查看 功能演示&#xff1a; 眼疾识别系统resnet50&#xff0c;efficentnet&#xff0c;卷积神经网络&#xff08;pytorch框架&#xff0c;python代码&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介…...

Python数据可视化-第1章-数据可视化与matplotlib

环境 开发工具 VSCode库的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本书为《Python数据可视化》一书的配套内容&#xff0c;本章为第1章 数据可视化与matplotlib 本文主要介绍了什么是数据集可视化&#xff0c;数据可视化的目的&#xff0c;常见的数据可视化方式…...

Ansible playbook-ansible剧本

一.playbook介绍 便于功能的重复使用 本质上就是文本文件&#xff0c;一般都是以.yml结尾的文本文件。 1.遵循YAML语法 1.要求同级别代码要有相同缩进&#xff0c;建议4个空格。【同级别代码是同一逻辑的代码】 在计算机看来空格和Tob键是两个不同的字符。 2.一个键对应一…...

UDP网络通信

UDP网络通信&#xff1a; 步骤1 创建套接字&#xff1a; #include <sys/types.h> #include <sys/socket.h>int socket(int domain, int type, int protocol);参数一 domain&#xff1a; AF_UNIX Local communication unix(7) 本地通信 AF_INET IPv4 Inte…...

【学习笔记】计算机网络(六)

第6章应用层 文章目录 第6章应用层6.1 域名系统DNS6.1.1 域名系统概述6.1.2 互联网的域名结构6.1.3 域名服务器域名服务器的分区管理DNS 域名服务器的层次结构域名服务器的可靠性域名解析过程-两种查询方式DNS 高速缓存机制 6.2 文件传送协议6.2.1 FTP 概述6.2.2 FTP 的基本工作…...

RK3588使用笔记:系统算法依赖库安装

一、前言 嵌入式设备随着需求的提升&#xff0c;不再仅仅只只运行个单机程序那么简单了&#xff0c;社会发展设备升级&#xff0c;都会逐步引用人工智能&#xff0c;涉及到算法模型&#xff0c;这里基础的部分就是算法环境的安装&#xff0c;有的算法是C&#xff0c;大部分算法…...

数据结构C语言练习(单双链表)

本篇练习题(单链表)&#xff1a; 1.力扣 203. 移除链表元素 2.力扣 206. 反转链表 3.力扣 876. 链表的中间结点 4.力扣 21. 合并两个有序链表 5. 牛客 链表分割算法详解 6.牛客 链表回文结构判断 7. 力扣 160. 相交链表 8. 力扣 141 环形链表 9. 力扣 142 环形链表 II…...

Linux驱动开发 中断处理

目录 序言 1.中断的概念 2.如何使用中断 中断处理流程 中断上下文限制 屏蔽中断/使能 关键区别与选择 上半部中断 下半部中断 软中断&#xff08;SoftIRQ&#xff09; 小任务(Tasklet) 工作队列&#xff08;Workqueue&#xff09; 线程 IRQ&#xff08;Threaded IRQ…...

C++ set map

1.set和map是什么 set和map是 C STL 提供的容器&#xff0c;用于高效的查找数据&#xff0c;底层采用红黑树实现&#xff0c;其中set是Key模型&#xff0c;map是Key-Value模型 set和map的基本使用较为简单&#xff0c;这里不再叙述&#xff0c;直接进入实现环节 2.set和map的…...

Vue2和Vue3响应式的基本实现

目录 简介Vue2 响应式Vue2 响应式的局限性 Vue3 响应式Vue3 响应式的优点 Vue2 和 Vue3 响应式对比 简介 在 Vue 框架中&#xff0c;数据的响应式是其核心特性之一。当页面数据发生变化时&#xff0c;我们希望界面能自动更新&#xff0c;而不是手动操作 DOM。这就需要对数据进…...

PyQt6实例_批量下载pdf工具_界面开发

目录 前置&#xff1a; 代码&#xff1a; 视频&#xff1a; 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本系列涉及到的PyQt6知识点&#xff1a; 线程池&#xff1a;QThreadPool,QRunnable&#xff1b; 信号…...

FOC 控制笔记【三】磁链观测器

一、磁链观测器基础 1.1 什么是磁链 磁链&#xff08;magnetic linkage&#xff09;是电磁学中的一个重要概念&#xff0c;指导电线圈或电流回路所链环的磁通量。单位为韦伯&#xff08;Wb&#xff09;&#xff0c;又称磁通匝。 公式为&#xff1a; 线圈匝数 穿过单匝数的…...

前端Material-UI面试题及参考答案

目录 Material-UI 的设计理念与 Material Design 规范的关系是什么? 如何通过 npm/yarn/pnpm 安装 Material-UI 的核心依赖? Material-UI 的默认主题系统如何实现全局样式管理? 如何在项目中配置自定义字体和颜色方案? 什么是 emotion 和 styled-components,它们在 Ma…...

【LeetCode基础算法】链表所有类型

1. 遍历链表 二进制链表转整数找出临界点之间的最小和最大距离 2. 删除节点 移除链表元素从链表中移除在数组中存在的节点删除排序链表中的重复元素删除排序链表中的重复元素 II 3. 插入节点 在链表中插入最大公约数 计算最大公约数的内置函数gcd(a,b)&#xff0c;也可以m…...

备赛蓝桥杯之第十六届模拟赛第1期职业院校组第五题:回忆画廊

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

51 驱动 INA219 电流电压功率测量

文章目录 一、INA219简介二、引脚功能三、寄存器介绍1.配置寄存器 0x002.分流电压寄存器 0x013.总线电压寄存器 0x024.功率寄存器 0x035.电流寄存器 0x046.基准寄存器 0x05 四、IIC 时序说明1.写时序2.读时序 五、程序六、实验现象1.线路图2.输出数据 一、INA219简介 INA219是…...

JavaScript弹出框的使用:对话框、确认框、提示框、弹窗操作

关于 Window对象和 Document 对象的详细使用,系列文章: 《Window对象的常用属性和方法》 《Document对象的常用属性和方法:getElementById()、getElementsByName()、createElement()方法》 《Document获取元素并修改内容:getElementById()方法、value属性、innerHTML属性、…...

【设计模式】深入解析设计模式:门面模式(外观模式)的定义、优点和代码实现

门面模式&#xff08;外观模式&#xff09; SLF4J是门面模式的典型应用&#xff08;但不仅仅使用了门面模式&#xff09;。 门面模式定义 门面模式&#xff08;Facade Pattern&#xff09;又称为外观模式&#xff0c;提供了一个统一的接口&#xff0c;用来访问子系统中的一群…...

UE5学习笔记 FPS游戏制作34 触发器切换关卡

文章目录 搭建关卡制作触发器传送门显示加载界面 搭建关卡 首先搭建两个关卡&#xff0c;每个关卡里至少要有一个角色 制作触发器传送门 1 新建一个蓝图&#xff0c;父类为actor&#xff0c;命名为portal&#xff08;传送门&#xff09; 2 为portal添加一个staticMesh&#…...

UE5学习笔记 FPS游戏制作26 UE中的UI

文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式(Text、Image)函数绑定属性绑定事件绑定 九宫格分割图片按钮设置图片绑定按下事件 下拉框创建添加数据修改样式常用函数 滚动框创建添加数…...

Spring Boot分布式项目重试实战:九种失效场景与正确打开方式

在分布式系统架构中&#xff0c;网络抖动、服务瞬时过载、数据库死锁等临时性故障时有发生。本文将通过真实项目案例&#xff0c;深入讲解Spring Boot项目中如何正确实施重试机制&#xff0c;避免因简单粗暴的重试引发雪崩效应。 以下是使用Mermaid语法绘制的重试架构图和决策…...

首个物业plus系列展 2025上海国际智慧物业博览会开幕

AI赋能服务升级&#xff01;首个“物业plus”系列展 2025上海国际智慧物业博览会盛大开幕 3月31日&#xff0c;2025上海国际智慧物业博览会&#xff08;简称“上海物博会”&#xff09;在上海新国际博览中心N4馆隆重开幕。本届展会由广州旭杨国际展览有限公司主办&#xff0c…...

《C++多线程下单例 “锁钥” 法则》

一、概述 本文章介绍了一段 C 代码&#xff0c;该代码实现了在多线程环境下的单例模式。单例模式确保一个类只有一个实例&#xff0c;并提供全局访问点。在多线程场景中&#xff0c;需要额外的同步机制来保证单例对象创建的线程安全性。单例模式在许多场景中都有重要应用&#…...

WEB或移动端常用交互元素及组件 | Axure / 元件类型介绍(表单元件、菜单和表格 、流程元件、标记元件)

文章目录 引言I Axure / 元件类型介绍基本元件表单元件菜单和表格流程元件标记元件II Axure 基础Axure / 常用功能介绍Axure / 常用元素实例Axure / 动态交互实例Axure / 常用设计分辨率推荐III Axure / 创建自己的元件库元件库作用元件库的创建及使用引言 I Axure / 元件类型介…...

开发环境解决Secure Cookie导致302重定向

问题现象与根源分析 故障现象 前端本地开发时&#xff08;HTTP协议&#xff09;&#xff0c;调用接口返回302 Found状态码浏览器控制台警告&#xff1a;“Cookie被阻止&#xff0c;因为设置了Secure属性但未通过HTTPS传输”登录态无法保持&#xff0c;页面陷入重定向循环 技…...

华为三进制逻辑与高维量子计算的对比分析

此博客深入探讨华为三进制逻辑状态的技术意义&#xff0c;并与高维量子计算系统进行对比。文章将全面展开技术原理、实现机制、计算能力对比、未来应用前景等方面的内容。 目录 引言 华为三进制逻辑的创新意义 2.1 二进制逻辑的局限与历史探索 2.2 三进制逻辑的优势&#xff…...

网红指路机器人是否支持环境监测功能?

嘿呀&#xff0c;你可知道&#xff1f;如今的叁仟网红指路机器人那可太牛啦&#xff01;它们可不单单局限于为行人指明方向&#xff0c;还纷纷兼职当起了 “环境小卫士”&#xff0c;为咱们的城市生活注入了前所未有的超智能便利。就拿那个依托叁仟智慧杆打造的数智指路机器人来…...

【进阶】vscode 中使用 cmake 编译调试 C++ 工程

基于 MSYS2 的 MinGW-w64 GCC 工具链与 CMake 构建系统&#xff0c;结合VSCode及其扩展插件&#xff08; ms-vscode.cmake-tools&#xff09;&#xff0c;可实现高效的全流程C开发调试。既可通过 VSCode 可视化界面&#xff08;命令面板、状态栏按钮&#xff09;便捷完成配置、…...

突发,国行 iPhone 17,支持 eSIM

古人云“无心生大用”&#xff0c;往往你感到绝望的时候&#xff0c;转机就莫名其妙的来了。 根据供应链的最新消息&#xff0c;国行 iPhone 17 Air&#xff0c;有望用上 eSIM。 不仅如此&#xff0c;国产手机厂商&#xff0c;也计划推出类似iPhone 17 Air的超薄机型&#xf…...

红宝书第二十二讲:详解JavaScript类型化数组与二进制数据处理

红宝书第二十二讲&#xff1a;详解JavaScript类型化数组与二进制数据处理 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、为什么需要类型化数组&#xff1f; 普通JavaScript数组&#xff08;Array&#xff0…...

Elasticsearch安全与权限控制指南

在Elasticsearch维护中&#xff0c;安全管理是保障数据合规性和集群稳定性的关键。本文将详细介绍用户与角色管理、索引/字段级权限控制、HTTPS加密通信、审计日志与合规性检查等核心安全实践&#xff0c;希望可以帮助你构建更安全的Elasticsearch环境。 1 用户与角色管理 1.1…...

SAP 学习笔记 - 系统移行业务 - MALSY(由Excel 移行到SAP 的收费工具)

以前有关移行&#xff0c;也写过一些文章&#xff0c;比如 SAP 学习笔记 - 系统移行业务 - Migration cockpit工具 - 移行Material&#xff08;品目&#xff09;-CSDN博客 SAP 学习笔记 - 系统移行业务 - Migration cockpit工具2 - Lot导入_sap cockpit-CSDN博客 SAP学习笔记…...

【群智能算法改进】一种改进的蜣螂优化算法IDBO[3](立方混沌映射Cubic、融合鱼鹰勘探策略、混合高斯柯西变异)【Matlab代码#92】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始DBO算法2. 改进后的IDBO算法2.1 立方混沌映射Cubic种群初始化2.2 融合鱼鹰勘探策略2.3 混合高斯柯西变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始DB…...

《异常检测——从经典算法到深度学习》30. 在线服务系统中重复故障的可操作和可解释的故障定位

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …...

座舱与智驾“双轮驱动”,芯擎科技打造智能汽车“芯”标杆

在比亚迪、吉利、奇瑞等各大主机厂打响“全民智驾”的关键时期&#xff0c;以芯擎科技为代表中国芯片厂商开始“放大招”。 2025年3月27日&#xff0c;芯擎科技在南京举办了“擎随芯动、智融万象”生态科技日&#xff0c;重磅发布了“星辰一号”、“星辰一号Lite”&#xff0c…...

观察者模式在Java单体服务中的运用

观察者模式主要用于当一个对象发生改变时&#xff0c;其关联的所有对象都会收到通知&#xff0c;属于事件驱动类型的设计模式&#xff0c;可以对事件进行监听和响应。下面简单介绍下它的使用&#xff1a; 1 定义事件 import org.springframework.context.ApplicationEvent;pu…...

html5时钟升级!支持切换深浅模式 Canvas实现现代化动态时钟

HTML5 Canvas实现现代化动态时钟 这里写目录标题 HTML5 Canvas实现现代化动态时钟项目介绍技术实现1. 项目架构2. Canvas绘图实现2.1 表盘绘制2.2 刻度绘制2.3 指针绘制 3. 动画效果4. 主题切换 项目亮点技术要点总结项目收获改进方向结语 项目介绍 本项目使用HTML5 Canvas技术…...

Scala(2)

For循环控制 循环守卫 基本语法 for(i <- 1 to 3 if i ! 2) { print(i " ") }println() 说明&#xff1a; 循环守卫&#xff0c;即循环保护式&#xff08;也称条件判断式&#xff0c;守卫&#xff09;。保护式为 true 则进入循环体内部&#xff0c;为false 则跳…...

DataGear 5.3.0 制作支持导出表格数据的数据可视化看板

DataGear 内置表格图表底层采用的是DataTable表格组件&#xff0c;默认并未引入导出数据的JS支持库&#xff0c;如果有导出表格数据需求&#xff0c;则可以在看板中引入导出相关JS支持库&#xff0c;制作具有导出CSV、Excel、PDF功能的表格数据看板。 在新发布的5.3.0版本中&a…...

项目-苍穹外卖(十六) Apache ECharts+数据统计

一、介绍 二、营业额统计 需求分析和设计&#xff1a; Controller: Service: /*** 营业额统计* param begindate* param enddate* return* */Overridepublic TurnoverReportVO turnoverStatistics(LocalDate begindate, LocalDate enddate) {//创建时间集合List<LocalDate&…...

使用 PowerShell 脚本 + FFmpeg 在 Windows 系统中批量计算 MP4视频 文件的总时长

步骤 1&#xff1a;安装 FFmpeg 访问 FFmpeg 官网(Download FFmpeg)&#xff0c;下载 Windows 版编译包&#xff08;如 ffmpeg-release-full.7z&#xff09;。或者到&#xff08;https://download.csdn.net/download/zjx2388/90539014&#xff09;下载完整资料 解压文件&#…...