【ai学习笔记】GitLab

CI/CD(持续集成/持续交付)是现代软件开发中的关键实践,通过自动化工具可以大幅提升开发效率和软件质量。下面为你介绍CI/CD的核心概念、常用工具以及示例配置:

1. CI/CD 核心概念

  • 持续集成(CI):开发人员提交代码后,自动触发构建和测试流程,确保新代码与现有代码集成时不会产生冲突。
  • 持续交付(CD):在CI的基础上,自动将通过测试的代码部署到预生产环境或生产环境。

2. 常用CI/CD工具

Jenkins
  • 特点:开源、插件丰富、社区活跃。
  • 适用场景:需要高度定制化的复杂CI/CD流程。
GitLab CI/CD
  • 特点:与GitLab深度集成,配置简单。
  • 适用场景:基于GitLab仓库的项目。
GitHub Actions
  • 特点:与GitHub无缝集成,开箱即用。
  • 适用场景:GitHub托管的项目。
CircleCI
  • 特点:云原生、并行执行速度快。
  • 适用场景:需要快速构建和测试的项目。
Jenkinsfile 示例
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}stage('Test') {steps {sh 'mvn test'}}stage('Deploy') {when {branch 'main'}steps {sh 'deploy-to-prod.sh'}}}
}
GitHub Actions 示例
name: CIon:push:branches: [ main ]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Pythonuses: actions/setup-python@v4with:python-version: 3.9- name: Install dependenciesrun: |python -m pip install --upgrade pippip install -r requirements.txt- name: Run testsrun: pytest

3. CI/CD 流程最佳实践

  1. 原子提交:每次提交代码专注于解决一个问题。
  2. 自动化测试:包括单元测试、集成测试和端到端测试。
  3. 环境隔离:开发、测试、生产环境保持一致。
  4. 版本控制:所有配置文件和脚本纳入版本控制。
  5. 监控与回滚:部署后监控系统状态,异常时能快速回滚。

4. 部署策略

  • 蓝绿部署:同时维护两个环境(蓝/绿),切换流量完成部署。
  • 金丝雀发布:先向少量用户发布新版本,验证后再全量部署。
  • 滚动更新:逐步替换旧版本实例,适用于无状态服务。

5. 工具选择建议

  • 若项目已托管在GitHub,优先使用GitHub Actions。
  • 复杂场景或企业级需求,考虑Jenkins或GitLab CI/CD。
  • 云原生项目可选择CircleCI或GitLab CI/CD。

根据具体需求选择合适的工具和部署策略,能有效提升开发效率和软件质量。选择适合项目的CI/CD工具需要综合考虑团队规模、技术栈、集成需求、预算和使用习惯等因素。以下是关键决策维度和建议:

1. 项目规模与复杂度

  • 小型项目/个人项目

    • GitHub Actions:与GitHub无缝集成,配置简单,适合快速上手。
    • GitLab CI/CD:如果使用GitLab作为代码托管平台,内置CI/CD无需额外配置。
  • 中大型项目/企业级

    • Jenkins:高度可定制,支持复杂工作流,但需要专业维护。
    • GitLab CI/CD:支持自托管和云版本,适合需要统一DevOps平台的团队。

2. 技术栈兼容性

  • 特定语言支持

    • GitHub Actions:提供官方和社区Action支持主流语言(Python、Java、Node.js等)。
    • CircleCI:预配置的Docker镜像简化了特定语言环境的搭建。
  • 容器与云原生

    • Jenkins:需自行配置Kubernetes插件或Docker集成。
    • GitLab CI/CD:内置容器注册表和Kubernetes集成。
    • CircleCI:原生支持并行构建和Docker镜像构建。

3. 集成需求

  • 代码托管平台

    • GitHub → GitHub Actions
    • GitLab → GitLab CI/CD
    • Bitbucket → Bitbucket Pipelines或Jenkins
  • 外部工具集成

    • 测试工具(Jest、JUnit)
    • 代码质量工具(SonarQube)
    • 部署目标(AWS、GCP、Azure)

4. 预算与维护成本

  • 开源免费:Jenkins、GitLab CE
  • 云服务
    • GitHub Actions(免费额度有限,超出需付费)
    • CircleCI(按构建分钟数计费)
    • GitLab Premium/Ultimate(按用户数计费)

5. 团队技能与偏好

  • 若团队熟悉Docker和Kubernetes → GitLab CI/CDCircleCI
  • 若需要可视化编排 → Jenkins PipelineConcourse
  • 若追求简单易用 → GitHub Actions

6. 关键特性对比

工具并行构建缓存机制自托管矩阵构建社区支持
Jenkins丰富
GitHub Actions丰富
GitLab CI/CD良好
CircleCI良好

7. 评估方法

  1. 试用主流工具:在小型项目上实践对比(如GitHub Actions vs. GitLab CI/CD)。
  2. 参考行业案例:同类型项目的选择经验(如开源项目多用GitHub Actions)。
  3. 关注工具趋势:根据Stack Overflow、DevOps雷达等报告评估工具生命力。

8. 常见场景推荐

  • GitHub项目 + 云部署GitHub Actions
  • GitLab项目 + 容器化GitLab CI/CD
  • 复杂工作流 + 多技术栈Jenkins
  • 快速迭代 + 云原生CircleCI

通过以上维度的评估,结合项目的实际需求和团队现状,能更精准地选择合适的CI/CD工具。以下是GitLab CI/CD的常见使用示例,涵盖基本配置、测试、构建、部署等场景:

1. 基础配置示例(.gitlab-ci.yml

# 定义阶段顺序
stages:- test- build- deploy# 所有作业共享的配置
default:image: python:3.9  # 使用Python镜像# 测试作业
test:stage: testscript:- pip install -r requirements.txt- pytest  # 运行测试artifacts:paths:- test-results/  # 保存测试报告# 构建作业
build:stage: buildscript:- python setup.py sdist bdist_wheel  # 构建Python包artifacts:paths:- dist/  # 保存构建产物# 部署作业(仅主分支执行)
deploy:stage: deployenvironment: productionscript:- pip install twine- twine upload dist/*  # 上传到PyPIonly:- main  # 仅在main分支触发

2. 多环境部署示例

stages:- build- test- deploybuild:stage: buildscript:- docker build -t my-app:$CI_COMMIT_SHA .- docker push my-app:$CI_COMMIT_SHAdeploy_staging:stage: deployenvironment: stagingscript:- kubectl apply -f k8s/staging/  # 部署到测试环境- kubectl set image deployment/my-app my-app=my-app:$CI_COMMIT_SHAonly:- develop  # 开发分支部署到测试环境deploy_production:stage: deployenvironment: productionscript:- kubectl apply -f k8s/production/  # 部署到生产环境- kubectl set image deployment/my-app my-app=my-app:$CI_COMMIT_SHAonly:- main  # 主分支部署到生产环境when: manual  # 需要手动触发

3. 使用缓存加速构建

cache:paths:- node_modules/  # 缓存npm依赖stages:- build- testbuild:image: node:16stage: buildscript:- npm install  # 首次安装依赖会被缓存- npm run buildartifacts:paths:- dist/test:image: node:16stage: testscript:- npm install  # 从缓存中恢复依赖,加速测试- npm test

4. 并行执行测试

stages:- test# 定义矩阵构建
.test_template: &test_definitionstage: testscript:- pip install -r requirements.txt- pytest tests/ -k "$TEST_SUITE"  # 运行特定测试套件test_unit:<<: *test_definitionvariables:TEST_SUITE: "unit"  # 运行单元测试test_integration:<<: *test_definitionvariables:TEST_SUITE: "integration"  # 运行集成测试test_e2e:<<: *test_definitionvariables:TEST_SUITE: "e2e"  # 运行端到端测试

5. 部署到AWS ECS

deploy_to_ecs:stage: deployimage: amazon/aws-cliscript:- aws configure set region $AWS_REGION- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY# 登录ECR- $(aws ecr get-login --no-include-email)# 构建并推送Docker镜像- docker build -t $ECR_REPOSITORY:$CI_COMMIT_SHA .- docker tag $ECR_REPOSITORY:$CI_COMMIT_SHA $ECR_REPOSITORY:latest- docker push $ECR_REPOSITORY:$CI_COMMIT_SHA- docker push $ECR_REPOSITORY:latest# 更新ECS任务定义- aws ecs register-task-definition --cli-input-json file://task-definition.json- aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --task-definition $TASK_DEFINITION

6. 使用GitLab环境变量

stages:- deploydeploy:stage: deployscript:- echo "Deploying to $ENVIRONMENT_URL with API key $API_KEY"- ./deploy.sh  # 使用环境变量的部署脚本environment:name: productionurl: $PROD_URL  # 在GitLab中设置的环境变量only:- main

7. 触发外部Pipeline

trigger_downstream:stage: triggertrigger:project: my-group/downstream-project  # 下游项目路径branch: mainstrategy: depend  # 等待下游Pipeline完成

8. 自动合并请求检查

stages:- validatevalidate_merge_request:stage: validatescript:- git fetch origin $TARGET_BRANCH  # 获取目标分支- git checkout -b $CI_COMMIT_REF_NAME origin/$CI_COMMIT_REF_NAME- git merge origin/$TARGET_BRANCH --no-commit --no-ff  # 模拟合并- mvn verify  # 验证合并后的代码only:- merge_requests  # 仅在合并请求时触发variables:TARGET_BRANCH: main

使用提示

  1. 环境变量:在GitLab项目的Settings → CI/CD → Variables中配置敏感信息(如API密钥、密码)。
  2. Runner:确保有可用的Runner执行作业(可使用GitLab共享Runner或自建Runner)。
  3. 调试技巧:使用gitlab-ci-multi-runner exec在本地执行作业调试配置。

将以上示例根据项目需求调整后,放入项目根目录的.gitlab-ci.yml文件中即可触发CI/CD流程。配置GitLab Runner是执行CI/CD作业的关键步骤,以下是详细的配置指南:

1. 安装GitLab Runner

根据操作系统选择安装方式:

Linux(Debian/Ubuntu)
# 添加GitLab Runner仓库
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash# 安装最新版本
sudo apt-get install gitlab-runner
macOS
brew install gitlab-runner
Windows

下载并安装二进制文件:

Invoke-WebRequest -Uri "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe" -OutFile "gitlab-runner.exe"

2. 注册Runner到GitLab

  1. 获取注册令牌

    • 进入GitLab项目 → Settings → CI/CD → Runners → Expand → 复制Registration token。
  2. 执行注册命令

sudo gitlab-runner register
  1. 按提示输入信息
    • GitLab实例URL(如https://gitlab.com
    • 注册令牌
    • Runner描述(自定义名称)
    • 标签(用于匹配作业,如docker, python
    • 执行器(如docker, shell, kubernetes
Docker执行器示例
sudo gitlab-runner register \--non-interactive \--url "https://gitlab.com" \--registration-token "YOUR_TOKEN_HERE" \--description "docker-runner" \--tag-list "docker,build" \--executor "docker" \--docker-image alpine:latest

3. 配置Runner执行器

根据项目需求选择执行器:

Shell执行器

直接在Runner所在主机执行命令,适合简单项目:

# /etc/gitlab-runner/config.toml
[[runners]]name = "shell-runner"url = "https://gitlab.com"token = "YOUR_RUNNER_TOKEN"executor = "shell"
Docker执行器

使用Docker容器隔离环境,推荐使用:

# /etc/gitlab-runner/config.toml
[[runners]]name = "docker-runner"url = "https://gitlab.com"token = "YOUR_RUNNER_TOKEN"executor = "docker"[runners.docker]image = "docker:stable"privileged = true  # 允许Docker-in-Dockervolumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
Kubernetes执行器

在Kubernetes集群中动态创建Pod执行作业:

# /etc/gitlab-runner/config.toml
[[runners]]name = "k8s-runner"url = "https://gitlab.com"token = "YOUR_RUNNER_TOKEN"executor = "kubernetes"[runners.kubernetes]host = ""  # Kubernetes API地址namespace = "gitlab-runner"image = "alpine:latest"

4. 验证Runner配置

  1. 查看已注册的Runner
sudo gitlab-runner list
  1. 检查Runner状态
sudo gitlab-runner status
  1. 在GitLab界面确认
    • 进入项目 → Settings → CI/CD → Runners → 查看是否显示已激活的Runner。

5. 高级配置选项

缓存配置

加速依赖安装:

[[runners]]# ...其他配置[runners.cache]Type = "s3"ServerAddress = "s3.amazonaws.com"AccessKey = "YOUR_ACCESS_KEY"SecretKey = "YOUR_SECRET_KEY"BucketName = "gitlab-runner-cache"Insecure = false
并发限制

限制Runner同时执行的作业数:

concurrent = 2  # 全局并发数[[runners]]# ...其他配置limit = 1  # 单个Runner限制

6. 管理Runner服务

# 启动服务
sudo systemctl start gitlab-runner# 停止服务
sudo systemctl stop gitlab-runner# 重启服务
sudo systemctl restart gitlab-runner# 设置开机自启
sudo systemctl enable gitlab-runner

7. 常见问题排查

  1. Runner未显示在线

    • 检查Runner服务是否运行
    • 确认令牌和URL配置正确
  2. 作业执行失败

    • 查看GitLab CI/CD日志获取详细错误
    • 检查Runner权限(如Docker执行器需要访问docker.sock
  3. 缓存失效

    • 验证缓存路径和权限
    • 尝试清除并重建缓存

8. 使用GitLab共享Runner

若不想自建Runner,可使用GitLab提供的共享Runner:

  1. 进入项目 → Settings → CI/CD → Runners
  2. 启用"Shared runners"开关
  3. .gitlab-ci.yml中使用标签匹配共享Runner

配置完成后,Runner会自动拾取符合标签条件的CI/CD作业并执行。根据项目需求调整执行器和资源配置,以达到最佳性能。以下是在GitLab上创建项目并启用CI/CD的完整步骤:

1. 创建新项目

  1. 登录GitLab账户,点击右上角的New project
  2. 选择项目类型:
    • Create blank project:创建空项目
    • Create from template:从模板创建(含CI/CD配置)
  3. 填写项目信息:
    • Project name:项目名称
    • Project description:项目描述
    • Visibility Level:公开/内部/私有
  4. 点击Create project完成创建。

2. 添加代码到项目

方法1:从本地推送现有代码
# 初始化本地仓库
git init
git add .
git commit -m "Initial commit"# 添加GitLab远程仓库
git remote add origin git@gitlab.com:username/project-name.git# 推送代码
git push -u origin main
方法2:使用GitLab Web IDE创建文件
  1. 进入项目主页,点击Web IDE
  2. 创建文件(如README.md)。
  3. 点击Commit changes提交。

3. 添加CI/CD配置文件

在项目根目录创建.gitlab-ci.yml文件:

示例1:Python项目
image: python:3.9stages:- test- deploytest:stage: testscript:- pip install -r requirements.txt- pytestdeploy:stage: deployscript:- echo "Deploying to production..."only:- main
示例2:Node.js项目
image: node:16stages:- install- test- buildinstall:stage: installscript:- npm installcache:paths:- node_modules/test:stage: testscript:- npm testbuild:stage: buildscript:- npm run buildartifacts:paths:- dist/

4. 配置Runner

确保项目有可用的Runner执行CI/CD作业:

方法1:使用GitLab共享Runner
  1. 进入项目 → SettingsCI/CDRunners
  2. 启用Shared runners
方法2:注册专用Runner
  1. 按前文指南安装并注册Runner。
  2. 为Runner添加匹配标签(如python, docker)。
  3. .gitlab-ci.yml中指定标签:
test:stage: testtags:- python  # 匹配具有"python"标签的Runnerscript:- pytest

5. 触发CI/CD Pipeline

  1. 提交代码:每次push到仓库时自动触发Pipeline。
  2. 手动触发
    • 进入项目 → CI/CDPipelines
    • 点击Run pipeline

查看Pipeline状态:

  • 绿色√:所有作业成功
  • 黄色●:作业正在运行
  • 红色×:作业失败,点击查看详细日志

6. 查看CI/CD结果

  1. Pipeline视图:查看所有阶段和作业的执行状态。
  2. 作业日志:点击作业名称查看详细输出。
  3. Artifacts:下载作业生成的文件(如测试报告、构建产物)。

7. 高级配置

环境变量

在GitLab中设置敏感信息:

  1. 进入项目 → SettingsCI/CDVariables
  2. 添加变量(如API_KEY, DB_PASSWORD)。
  3. .gitlab-ci.yml中使用:
deploy:script:- ./deploy.sh $API_KEY  # 使用环境变量
分支策略
deploy_prod:stage: deployscript:- deploy-to-prod.shonly:- main  # 仅主分支触发except:- tags  # 排除标签
手动触发作业
deploy_staging:stage: deployscript:- deploy-to-staging.shwhen: manual  # 需要手动触发

8. 故障排查

  1. Runner未运行

    • 检查Runner状态:sudo gitlab-runner status
    • 确认Runner已注册并激活
  2. 权限问题

    • 确保Runner有足够权限(如Docker执行器需要访问/var/run/docker.sock
  3. 依赖失败

    • .gitlab-ci.yml中添加依赖安装步骤
    • 使用缓存加速依赖下载

9. 示例项目结构

my-project/
├── .gitlab-ci.yml      # CI/CD配置文件
├── src/                # 源代码
├── tests/              # 测试代码
├── requirements.txt    # Python依赖
├── package.json        # Node.js依赖
└── README.md           # 项目说明

通过以上步骤,你可以在GitLab上创建项目并配置完整的CI/CD流程。根据项目需求调整.gitlab-ci.yml中的阶段、作业和脚本,实现自动化构建、测试和部署。在GitLab上管理项目分支是协作开发的核心环节,以下是常用的分支管理操作指南:

1. 创建分支

方法1:Web界面创建
  1. 进入项目主页 → RepositoryBranches
  2. 点击New branch
  3. 输入分支名称(如feature/add-login)。
  4. 选择源分支(通常为mainmaster)。
  5. 点击Create branch
方法2:命令行创建并推送
# 创建本地分支
git checkout -b feature/add-login# 推送至远程仓库
git push origin feature/add-login

2. 查看和切换分支

Web界面查看
  • 进入项目主页 → RepositoryBranches,查看所有分支列表。
命令行切换
# 查看本地分支
git branch# 查看远程分支
git branch -r# 切换到已有分支
git checkout feature/add-login# 创建并切换到新分支
git checkout -b hotfix/bug-123

3. 合并分支

使用Merge Request(推荐)
  1. 进入项目 → Merge requestsNew merge request
  2. 选择源分支(如feature/add-login)和目标分支(如main)。
  3. 填写标题和描述,设置Assignee和Labels。
  4. 点击Submit merge request
  5. 等待CI/CD Pipeline通过后,点击Merge完成合并。
命令行合并(直接提交)
# 切换到目标分支
git checkout main# 合并源分支
git merge feature/add-login# 推送至远程
git push origin main

4. 删除分支

Web界面删除
  1. 进入项目 → RepositoryBranches
  2. 找到要删除的分支,点击Delete图标。
命令行删除
# 删除本地分支
git branch -d feature/add-login# 删除远程分支
git push origin --delete feature/add-login

5. 分支保护规则

限制对重要分支(如main)的修改权限:

  1. 进入项目 → SettingsRepositoryProtected branches
  2. 配置保护规则:
    • Branch name:输入要保护的分支名(如main)。
    • Allowed to push:选择允许推送的角色(如Maintainers)。
    • Allowed to merge:选择允许合并的角色。
    • Require code owner approval:启用代码所有者审批。
  3. 点击Protect

6. 处理合并冲突

当合并分支时发生冲突:

  1. Web界面解决

    • 在Merge Request中点击Resolve conflicts
    • 使用在线编辑器手动修改冲突部分。
    • 点击Commit changes
  2. 命令行解决

# 拉取最新代码
git pull# 合并分支触发冲突
git merge feature/add-login# 手动编辑冲突文件
vim conflict-file.txt# 标记冲突已解决
git add conflict-file.txt# 提交合并
git commit -m "Resolve conflicts"

7. 分支策略推荐

Git Flow
  • master:生产环境代码
  • develop:开发主分支
  • feature/*:功能开发分支
  • release/*:版本发布分支
  • hotfix/*:紧急修复分支
GitHub Flow
  • 单一main分支
  • 所有功能通过Pull Request合并
  • 频繁部署
GitLab Flow
  • 上游优先(Upstream First)原则
  • 使用环境分支(如staging, production

8. 常用分支管理命令

# 查看分支历史
git log --oneline --graph --decorate --all# 重命名本地分支
git branch -m old-name new-name# 查看分支差异
git diff main..feature/add-login# 撤销未提交的修改
git checkout -- file.txt# 重置到远程分支状态
git reset --hard origin/main

9. 可视化分支管理工具

  • GitLab Web界面:内置分支管理和可视化工具
  • SourceTree:跨平台图形化Git客户端
  • GitKraken:功能强大的Git可视化工具
  • VS Code:集成Git功能,支持分支管理

通过合理使用分支策略和GitLab的分支管理功能,可以有效组织团队开发流程,避免代码冲突,提高协作效率。

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

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

相关文章

Solidity 从 0 到 1 |Web3 开发入门免费共学营

开启你的 Web3 开发之旅&#xff0c;从 Sonic 开始&#xff01; 想进入区块链开发的世界&#xff0c;却不知道从哪里开始&#xff1f;选择对的语言和平台&#xff0c;才能事半功倍。 Solidity 是 Web3 中最主流、最通用的智能合约开发语言&#xff0c;被广泛应用于以太坊及其…

【unitrix】 4.4 类型级整数比较系统(cmp.rs)

一、源码 这段代码实现了一个类型级别的整数比较系统&#xff0c;允许在编译时进行整数比较操作。它定义了一套类型来表示比较结果&#xff0c;并为不同类型的整数实现了比较逻辑。 use core::cmp::Ordering; use core::default::Default; use crate::sealed::Sealed; use cr…

2025年渗透测试面试题总结-2025年HW(护网面试) 14(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 1. SQL注入原理 &#x1f4a5; 2. XXE攻击&#xff08;XML外部实体注入&#xff09; &#x1f9e9; 3. SQ…

Android开发根据滑动距离标题栏进行渐变

Android开发根据滑动距离标题栏进行渐变 假设滑动控件是NestedScrollView。 先监听NestedScrollView的滑动距离&#xff1a; nslv_preview_me.setOnScrollChangeListener(object :NestedScrollView.OnScrollChangeListener{override fun onScrollChange(v: NestedScrollView…

高中成绩可视化平台开发笔记

高中成绩可视化平台&#xff08;1&#xff09; 一、项目概述 本系统是一个基于 PyQt5 和 Matplotlib 的高中成绩数据可视化分析平台&#xff0c;旨在帮助教师快速了解学生成绩分布、班级对比、学科表现等关键指标。平台支持文科与理科的数据切换&#xff0c;并提供多个维度的图…

自动化按需导入组件库的工具rust版本完成开源了

背景 当我为每个Vue项目使用ui组件库的时候&#xff0c;都会使用按需导入的方式来使用ui组件库。但是每次按需导入&#xff0c;不可避免的就需要做以下三步。我们以element plus ui组件库为例。 1. 安装依赖 第一步&#xff0c;当然是需要安装依赖。命令如下: pnpm add unp…

Linux内核中TCP分段的核心机制:tcp_fragment函数解析

引言:TCP分段的必要性 在TCP/IP协议栈中,MSS(最大分段大小) 限制了单次传输的数据量。当应用层发送的数据超过当前路径的MSS时,内核必须执行分段操作。tcp_fragment函数正是Linux内核中处理TCP分段的核心机制,它巧妙地在协议合规性、内存安全和性能效率之间取得平衡。 一…

【赵渝强老师】OceanBase OBServer节点的SQL层

OceanBase OBServer节点的SQL层将用户的SQL请求转化成对一个或多个Tablet的数据访问。SQL层会按照以下顺序经过一系列组件来处理一个SQL&#xff1a; Parser -->Resolver-->Transformer-->Optimizer-->CodeGenerator-->Executor。视频讲解如下 【赵渝强老师】O…

从“高配”到“普惠”,黑芝麻智能携手Nullmax打造辅助驾驶主流量产方案

近日&#xff0c;黑芝麻智能携手Nullmax打造的辅助驾驶主流量产方案正式发布。该方案面向8-15万元级别主流车型&#xff0c;基于单颗黑芝麻智能武当C1236跨域计算芯片&#xff0c;集成Nullmax全栈自研的软件技术架构&#xff0c;结合领先的视觉感知算法&#xff0c;打造高性能辅…

信息安全认证体系全解析:从资质证明到行业准入的实践指南

Hello&#xff01;大家好&#xff0c;小编是一名专注IT领域的资深探索家&#xff0c;大家发现了吗&#xff1f;现在刷招聘软件&#xff0c;国企安全岗必标 "CISP 优先"&#xff0c;外企招聘悄悄写着 "CISSP 加分"—— 这些带字母的证书到底是啥&#xff1f…

优雅地创建实体类——Builder 链式调用

我们来看以下的代码。改造前构造实体类用重载构造器或用 setter 对变量进行赋值&#xff0c;一旦变量变多则需要对每个变量进行 set 赋值&#xff0c;并且有可能会赋值错对象。 private static void test() {//1.构造器赋值Task task1 new Task("2023000000009439"…

如何轻松将照片从 iPhone 传输到 Android?

从 iPhone 换到 Android 手机后&#xff0c;你肯定不想丢掉珍贵的照片回忆吧&#xff1f;好在&#xff0c;本文分享了 6 种有效的解决方案&#xff0c;教你如何轻松地将照片从 iPhone 传输到 Android。 第 1 部分&#xff1a;如何通过 iReaShare Phone Transfer 将照片从 iPhon…

AI编程:[体验]存量微服务架构下植入WebSocket的“踩坑”与“填坑”

一、核心需求 功能需求&#xff1a;用户可以通过语音与AI对话&#xff0c;并实现类似ChatGPT的实时交互&#xff08;流式响应&#xff0c;打字机效果&#xff09;技术需求&#xff1a;在现有微服务架构中进行扩展&#xff08;SpringCloud&#xff09; 二、技术盲点 陌生领域 …

uniapp事件onLoad区分大小写

区分大小写。不然会不起作用。onLoad方法中的功能均不会被执行。 除了功能逻辑要检查外。大小写是要认真检查的一部分

《打破微前端困局:样式冲突与资源隔离破局指南》

微前端架构凭借其独特优势&#xff0c;正逐渐成为众多大型项目的首选架构模式。它将一个庞大的前端应用拆解为多个相对独立的子应用&#xff0c;每个子应用可以独立开发、部署和维护&#xff0c;极大地提升了开发效率与团队协作的灵活性。然而&#xff0c;随着微前端架构的广泛…

OpenCV——边缘检测

边缘检测 一、边缘检测二、边缘检测算子2.1、Sobel算子2.2、Scharr算子2.3、Laplacian算子 三、Canny边缘检测3.1、Canny边缘检测的步骤3.2、Canny算法的实现 一、边缘检测 边缘是指图像中像素的灰度值发生剧烈变化的区域&#xff1a; 图像中的边缘主要有以下几种成因&#x…

2506认证资讯|工信部出手整治多品牌充电宝,WMC上海稍逊往年,RED修订Common Charger,WiFi7 FCC测试

01 — 中国 工信部拟制定移动电源强制性国家标准 该标准将从以下方面全面提升移动电源安全性&#xff1a; 1. 拟在GB 31241、GB 4943.1基础上&#xff0c;新增或加严过充电、针刺等试验要求。 2. 拟提出影响电池安全的正负极材料、隔膜等关键材料要求。 3. 拟规范锂离子电池…

Linux Regulator 子系统核心逻辑与关键问题全解析

Linux Regulator 子系统核心逻辑与关键问题全解析 一、什么是 regulator 子系统&#xff1f;核心作用&#xff1f; regulator 子系统是 Linux 内核为板级/SoC 多路可控电源设计的统一电源管理框架。它的主要作用是&#xff1a; 为每一路可控电源&#xff08;Buck、LDO、DCDC …

制造业官网3D应用,让产品会“说话”

在当今数字化时代&#xff0c;装备制造业正经历着前所未有的变革。随着消费升级和国内经济的蓬勃发展&#xff0c;中国社会的经济格局从传统的“工业经济”向多元化的“服务经济”转型。装备制造业作为制造业与服务业融合的核心领域&#xff0c;积极探索全新的“服务化”发展模…

SCAU15--气球狂欢节

15 气球狂欢节 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G;GCC 描述&#xff1a; 一个充满魔法的国度中&#xff0c;存在一场年度的节日&#xff0c;名为“气球狂欢节”。在这个节日中&#xff0c;有一个传统的比赛&#xff0c;那就是“气球挑战赛”…