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

Golang 应用的 CI/CD 与 K8S 自动化部署全流程指南

一、CI/CD 流程设计与工具选择

1. 技术栈选择
  • 版本控制:Git(推荐 GitHub/GitLab)
  • CI 工具:Jenkins/GitLab CI/GitHub Actions(本文以 GitHub Actions 为例)
  • 容器化:Docker + Docker Compose
  • 制品库:Harbor/Docker Hub(本文以 Harbor 为例)
  • K8S 管理:kubectl + Helm
  • 监控告警:Prometheus + Grafana + Alertmanager
2. CI/CD 流程架构
代码提交 -> GitHub Actions 触发 -> 单元测试 -> 代码检查 -> 构建 Docker 镜像 -> 
推送至 Harbor -> 部署到沙盒环境 -> 自动化测试 -> 部署到开发环境 -> K8S 滚动更新

二、Golang 应用容器化与 CI 流程实现

1. 编写 Dockerfile

在项目根目录创建 Dockerfile

# 构建阶段
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main .# 运行阶段
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]
2. 配置 GitHub Actions

在项目根目录创建 .github/workflows 目录,并添加 ci-cd.yml

name: Golang CI/CD Pipelineon:push:branches:- main- developpull_request:branches:- mainjobs:test:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v4- name: Set up Gouses: actions/setup-go@v5with:go-version: '1.20'- name: Install dependenciesrun: go mod download- name: Run unit testsrun: go test -v ./...- name: Code lintrun: |curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2$(go env GOPATH)/bin/golangci-lint runbuild-and-push:needs: testruns-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v4- name: Set up Docker Buildxuses: docker/setup-buildx-action@v3- name: Login to Harboruses: docker/login-action@v3with:registry: your-harbor-domain.comusername: ${{ secrets.HARBOR_USERNAME }}password: ${{ secrets.HARBOR_PASSWORD }}- name: Build and push Docker imageuses: docker/build-push-action@v5with:context: .push: truetags: |your-harbor-domain.com/your-project/your-app:${{ github.sha }}your-harbor-domain.com/your-project/your-app:latestlabels: |org.opencontainers.image.source=${{ github.repository }}org.opencontainers.image.revision=${{ github.sha }}
3. 配置 GitHub 仓库密钥

在 GitHub 仓库的 Settings > Secrets 中添加以下密钥:

  • HARBOR_USERNAME:Harbor 用户名
  • HARBOR_PASSWORD:Harbor 密码

三、K8S 部署与自动化流程

1. 准备 K8S 部署文件

创建 deployments/ 目录,包含以下文件:

# deployments/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: your-appnamespace: your-namespace
spec:replicas: 3selector:matchLabels:app: your-apptemplate:metadata:labels:app: your-appspec:containers:- name: your-appimage: your-harbor-domain.com/your-project/your-app:latestports:- containerPort: 8080resources:requests:cpu: 100mmemory: 128Milimits:cpu: 200mmemory: 256Mienv:- name: ENVvalue: "development"
# deployments/service.yaml
apiVersion: v1
kind: Service
metadata:name: your-appnamespace: your-namespace
spec:selector:app: your-appports:- protocol: TCPport: 80targetPort: 8080type: LoadBalancer
2. 配置 K8S 认证

在 GitHub Actions 中添加 K8S 认证步骤:

# ci-cd.yml 中添加 deploy 作业
deploy:needs: build-and-pushruns-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v4- name: Set up Kubeconfiguses: azure/k8s-set-context@v3with:method: kubeconfigkubeconfig: ${{ secrets.KUBE_CONFIG }}- name: Deploy to sandboxif: github.ref == 'refs/heads/develop'run: |kubectl apply -f deployments/ -n sandboxkubectl rollout status deployment/your-app -n sandbox- name: Deploy to developmentif: github.ref == 'refs/heads/main'run: |kubectl apply -f deployments/ -n developmentkubectl rollout status deployment/your-app -n development
3. 添加 Helm 支持(可选)

创建 charts/ 目录并初始化 Helm 模板:

helm create charts/your-app

更新 values.yaml,并修改 CI/CD 流程使用 Helm 部署:

# ci-cd.yml 中 deploy 作业更新
- name: Deploy with Helmuses: koslib/helm-action@v2with:helm_version: '3.12.0'command: upgradechart: charts/your-apprelease_name: your-appnamespace: ${{ env.NAMESPACE }}values: |image:repository: your-harbor-domain.com/your-project/your-apptag: ${{ github.sha }}flags: --install --wait

四、沙盒与开发环境部署策略

1. 环境隔离设计
  • 命名空间隔离:使用 K8S 命名空间(sandboxdevelopment)隔离环境
  • 配置管理:通过 ConfigMap 和 Secret 管理环境变量和敏感信息
  • 网络策略:限制不同环境间的网络访问
2. 部署流程
  1. 沙盒环境(develop 分支触发)

    • 自动部署最新代码
    • 运行集成测试
    • 代码质量分析(SonarQube)
  2. 开发环境(main 分支触发)

    • 需手动审批(可配置 GitHub Actions 工作流)
    • 灰度发布(先部署 1 个实例)
    • 健康检查通过后滚动更新全部实例

五、K8S 自动化管理最佳实践

1. 资源优化配置
  • 使用 Horizontal Pod Autoscaler (HPA) 自动扩缩容
  • 配置 PodDisruptionBudget 确保高可用性
  • 使用 NodeSelector/Taints/Tolerations 控制 Pod 调度
# HPA 配置示例
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: your-app-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: your-appminReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 70- type: Resourceresource:name: memorytarget:type: UtilizationaverageUtilization: 80
2. 监控与告警
  • 部署 Prometheus 和 Grafana 监控集群和应用
  • 配置 Alertmanager 发送告警
  • 使用 kube-state-metrics 收集 K8S 资源指标
3. 安全增强
  • 使用 NetworkPolicy 限制 Pod 间通信
  • 配置 PodSecurityPolicy 限制容器权限
  • 定期扫描容器镜像安全漏洞(Trivy/Snyk)

六、执行与验证步骤

  1. 环境准备

    • 搭建 K8S 集群(可使用 minikube 或云厂商服务)
    • 部署 Harbor 镜像仓库
    • 配置 GitHub 仓库与 Secrets
  2. 测试 CI/CD 流程

    • 提交代码到 develop 分支,触发沙盒环境部署
    • 验证沙盒环境应用可用性
    • 合并代码到 main 分支,触发开发环境部署
  3. 验证 K8S 管理

    • 使用 kubectl get pods -n development 查看应用状态
    • 模拟流量增长,验证 HPA 是否自动扩容
    • 查看 Grafana 监控面板,确认指标正常

七、优化与扩展建议

  1. 多环境部署:添加 staging 和 production 环境配置
  2. 蓝绿部署:使用 Helm 和 Ingress 实现零停机部署
  3. 自动化测试:添加端到端测试(如 Selenium)
  4. 成本优化:使用 Cluster Autoscaler 自动调整节点数量

通过这套方案,您可以实现 Golang 应用从代码提交到生产环境的全自动化流程,提高开发效率和系统稳定性。

相关文章:

Golang 应用的 CI/CD 与 K8S 自动化部署全流程指南

一、CI/CD 流程设计与工具选择 1. 技术栈选择 版本控制:Git(推荐 GitHub/GitLab)CI 工具:Jenkins/GitLab CI/GitHub Actions(本文以 GitHub Actions 为例)容器化:Docker Docker Compose制品库…...

Jenkins:库博静态工具CI/CD 的卓越之选

在当今快节奏的软件开发领域,高效的持续集成(CI)和持续交付(CD)流程对于项目的成功至关重要。Jenkins 作为开源 CI/CD 软件的领导者,以其强大的功能、丰富的插件生态和高度的可扩展性,成为众多开…...

Maven私服搭建与登录全攻略

目录 1.背景2.简介3.安装4.启动总结参考文献 1.背景 回顾下maven的构建流程,如果没有私服,我们所需的所有jar包都需要通过maven的中央仓库或者第三方的maven仓库下载到本地,当一个公司或者一个团队所有人都重复的从maven仓库下载jar包&#…...

大模型数据分析破局之路20250512

大模型数据分析破局之路 本文面向 AI 初学者、数据分析从业者与企业技术负责人,围绕大模型如何为数据分析带来范式转变展开,从传统数据分析困境谈起,延伸到 LLM MCP 的协同突破,最终落脚在企业实践建议。 🌍 开篇导语…...

数据结构-树(1)

一、树的基本概念 二&#xff0c;树的抽象数据结构 三&#xff0c;树的存储结构 1.双亲表示法 数组存储结点&#xff0c;含数据域和双亲下标&#xff08;根结点双亲为 - 1&#xff09; 代码示例 include <stdio.h> #include <stdlib.h>#define MAX_TREE_SIZE 10…...

什么是ERP?ERP有哪些功能?小微企业ERP系统源码,SpringBoot+Vue+ElementUI+UniAPP

什么是ERP&#xff1f; ERP翻译过来叫企业资源计划&#xff0c;通俗的讲&#xff0c;应该叫企业的全面预算控制&#xff0c;其通常包括三个部分&#xff1a;工程预算、投资预算和经营预算&#xff08;即产销存预算&#xff09;。之所以做预算控制&#xff0c;是因为企业运作的…...

视觉-语言-动作模型:概念、进展、应用与挑战(上)

25年5月来自 Cornell 大学、香港科大和希腊 U Peloponnese 的论文“Vision-Language-Action Models: Concepts, Progress, Applications and Challenges”。 视觉-语言-动作 (VLA) 模型标志着人工智能的变革性进步&#xff0c;旨在将感知、自然语言理解和具体动作统一在一个计…...

C++ 与 Go、Rust、C#:基于实践场景的语言特性对比

目录 ​编辑 一、语法特性对比 1.1 变量声明与数据类型 1.2 函数与控制流 1.3 面向对象特性 二、性能表现对比​编辑 2.1 基准测试数据 在计算密集型任务&#xff08;如 10⁷ 次加法运算&#xff09;中&#xff1a; 在内存分配测试&#xff08;10⁵ 次对象创建&#xf…...

RDB和AOF的区别

Redis提供两种主要的持久化机制&#xff1a;RDB&#xff08;Redis Database&#xff09;和AOF&#xff08;Append Only File&#xff09;&#xff0c;它们在数据持久化方式、性能影响及恢复策略上各有特点。以下是两者的对比分析及使用建议&#xff1a; RDB&#xff08;快照持久…...

因子分析基础指南:原理、步骤与地球化学数据分析应用解析

前言 在看深度学习成矿预测以及地球化学数据分析的文献的时候很多引言部分的内容会提到一些老的技术&#xff0c;正所谓&#xff1a;知其然知其所以然。所以我把关于一些老技术的基础铺垫的内容作为&#xff1a;研究生基础指南部分进行记录。 这部分讲述的是因子分析&#xf…...

采用AI神经网络降噪算法的通信语音降噪(ENC)模组性能测试和应用

采用AI降噪的语言通话环境抑制模组性能效果测试 随着AI时代来临.通话设备的环境噪音抑制也进入AI降噪算法时代. AI神经网络降噪技术是一款革命性的语音处理技术&#xff0c;他突破了传统单麦克风和双麦克风降噪的局限性,利用采集的各种日常环境中的噪音样本进行训练学习.让降噪…...

面试题 - Kafka、RabbitMQ、RocketMQ如何选型?

在当今的高并发、大数据时代&#xff0c;系统架构的复杂性呈指数级增长。你是否曾遇到过这样的问题&#xff1a;用户订单提交后&#xff0c;系统响应缓慢甚至卡顿&#xff1f;或者在业务高峰期&#xff0c;消息积压导致系统崩溃&#xff1f; 这些问题的背后&#xff0c;往往隐…...

【落羽的落羽 C++】stack和queue、deque、priority_queue、仿函数

文章目录 一、stack和queue1. 概述2. 使用3. 模拟实现 二、deque三、priority_queue1. 概述和使用2. 模拟实现 四、仿函数 一、stack和queue 1. 概述 我们之前学习的vector和list&#xff0c;以及下面要认识的deque&#xff0c;都属于STL的容器&#xff08;containers&#x…...

Golang 空结构体特性与用法

文章目录 1.简介2.核心特性2.1 零内存占用2.2 值比较语义2.3 类型隔离2.4 值地址 3.作用3.1 实现集合&#xff08;Set&#xff09;3.2 不发送数据的信道3.3 无状态方法接收者3.4 作为 context 的 value 的 key 4.小结参考文献 1.简介 在 Go 语言中&#xff0c;空结构体是一个不…...

企业对数据集成工具的需求及 ETL 工具工作原理详解

当下&#xff0c;数据已然成为企业运营发展过程中的关键生产要素&#xff0c;其重要性不言而喻。 海量的数据分散在企业的各类系统、平台以及不同的业务部门之中&#xff0c;企业要充分挖掘这些数据背后所蕴含的巨大价值&#xff0c;实现数据驱动的精准决策&#xff0c;数据集…...

基于HTTP头部字段的SQL注入:SQLi-labs第17-20关

前置知识&#xff1a;HTTP头部介绍 HTTP&#xff08;超文本传输协议&#xff09;头部&#xff08;Headers&#xff09;是客户端和服务器在通信时传递的元数据&#xff0c;用于控制请求和响应的行为、传递附加信息或定义内容类型等。它们分为请求头&#xff08;Request Headers&…...

Megatron系列——流水线并行

内容总结自&#xff1a;bilibili zomi 视频大模型流水线并行 注&#xff1a;这里PipeDream 1F1B对应时PP&#xff0c;Interleaved 1F1B对应的是VPP 1、朴素流水线并行 备注&#xff1a; &#xff08;1&#xff09;红色三个圈都为空泡时间&#xff0c;GPU没有做任何计算 &am…...

Android HttpAPI通信问题(待解决)

使用ClearTextTraffic是Android中一项重要的网络设置&#xff0c;它控制了应用程序是否允许在不使用HTTPS加密的情况下访问网络。在默认情况下&#xff0c;usescleartexttraffic的值为true&#xff0c;这意味着应用程序可以通过普通的HTTP协议进行网络通信。然而&#xff0c;这…...

WebFlux vs WebMVC vs Servlet 对比

WebFlux vs WebMVC vs Servlet 技术对比 WebFlux、WebMVC 和 Servlet 是 Java Web 开发中三种不同的技术架构&#xff0c;它们在编程模型、并发模型和适用场景上有显著区别。以下是它们的核心对比&#xff1a; 核心区别总览 特性ServletSpring WebMVCSpring WebFlux编程模型…...

Spring MVC参数传递

本内容采用最新SpringBoot3框架版本,视频观看地址:B站视频播放 1. Postman基础 Postman是一个接口测试工具,Postman相当于一个客户端,可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果。 2. Spring MVC相关注解 3. Spring MVC参数传递 Spri…...

Spring MVC 和 Spring Boot 是如何访问静态资源的?

Spring MVC 和 Spring Boot 在配置静态资源访问方面有所不同&#xff0c;Spring Boot 提供了更便捷的自动配置。 一、Spring Boot 如何配置静态资源访问 (推荐方式) Spring Boot 遵循“约定优于配置”的原则&#xff0c;对静态资源的访问提供了非常方便的自动配置。 默认静态…...

如何应对网站被爬虫和采集?综合防护策略与实用方案

在互联网时代&#xff0c;网站内容被恶意爬虫或采集工具窃取已成为常见问题。这不仅侵犯原创权益&#xff0c;还可能影响网站性能和SEO排名。以下是结合技术、策略与法律的综合解决方案&#xff0c;帮助网站构建有效防护体系。 一、技术防护&#xff1a;阻断爬虫的“技术防线”…...

MySQL 分页查询优化

目录 前言1. LIMIT offset, count 的性能陷阱&#xff1a;为什么它慢&#xff1f;&#x1f629;2. 优化策略一&#xff1a;基于排序字段的“跳跃式”查询 (Seek Method) &#x1f680;3. 优化策略二&#xff1a;利用子查询优化 OFFSET 扫描 (ID Subquery)4. 基础优化&#xff1…...

我用Deepseek + 亮数据爬虫神器 1小时做出輿情分析器

我用Deepseek 亮数据爬虫神器 1小时做出輿情分析器 一、前言二、Web Scraper API 实战&#xff08;1&#xff09;选择对应的URL&#xff08;2&#xff09;点击进入对应url界面&#xff08;3&#xff09;API结果实例和爬取结果展示&#xff08;4&#xff09;用户直接使用post请…...

langchain4j中使用milvus向量数据库做RAG增加索引

安装milvus向量数据库 官方网址 https://milvus.io/zh 使用docker安装milvus mkdir -p /data/docker/milvus cd /data/docker/milvus wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh#在docker中启动milvus sh standalone_emb…...

【开源工具】深度解析:基于PyQt6的Windows时间校时同步工具开发全攻略

&#x1f552; 【开源工具】深度解析&#xff1a;基于PyQt6的Windows时间校时同步工具开发全攻略 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;热…...

开源 RPA 工具深度解析与官网指引

开源 RPA 工具深度解析与官网指引 摘要 &#xff1a;本文深入解析了多款开源 RPA 工具&#xff0c;涵盖 TagUI、Aibote、Taskt 等&#xff0c;分别介绍了它们的核心功能&#xff0c;并提供了各工具的官网链接&#xff0c;方便读者进一步了解与使用&#xff0c;同时给出了基于不…...

【免杀】C2免杀技术(一)VS设置

一、概述 编译器生成的二进制文件特征&#xff08;代码结构、元数据、指纹&#xff09;可能被杀软的静态或动态检测规则匹配。Visual Studio 的构建设置&#xff08;特别是运行库、编译器优化、链接方式等&#xff09;会直接影响最终生成的二进制文件的结构、行为特征和依赖关…...

OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库

准备工作 请依照这篇文章搭建环境 OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——环境配置_openharmony交叉编译-CSDN博客 编译依赖 相关依赖有 gmp-6.3.0 请依照这篇文章编译 OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库…...

Kotlin与Ktor构建Android后端API

以下是一个使用 Kotlin 和 Ktor 构建 Android 后端 API 的详细示例,包含常见功能实现: 1. 项目搭建 (build.gradle.kts) plugins {applicationkotlin("jvm") version "1.9.0"id("io.ktor.plugin") version "2.3.4"id("org.je…...

网页jupyter如何显示jpipvenv虚拟环境

今天使用社区版pycharm编辑.ipynb文件时&#xff0c;发现pycharm编辑.ipynb文件需要订阅。但是发现pipvenv虚拟环境解释器在jupyter中只有一个Python3:ipykernel版本&#xff0c;没有venv和conda的虚拟环境。因此在网上搜寻资料&#xff0c;作为备份记录。 以windows为例 假设目…...

学习黑客5 分钟深入浅出理解Windows System Configuration

5 分钟深入浅出理解Windows System Configuration ⚙️ 大家好&#xff01;今天我们将探索Windows系统配置——这是Windows操作系统的核心控制中心&#xff0c;决定了系统如何启动、运行和管理各种功能。无论你是计算机初学者&#xff0c;还是在TryHackMe等平台上学习网络安全…...

Spyglass:跨时钟域同步方案

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 Spyglass可以用于检测设计中的跨时钟域相关问题&#xff0c;确保电路中添加了适当的同步机制&#xff0c;以避免此类问题的发生&#xff0c;例如&#xff1a; 与亚稳…...

Ubuntu虚拟机文件系统扩容

1. 删除所有的虚拟机快照。 2. 选择扩展 将最大大小调整为你所需的大小 3. 进入虚拟机&#xff0c;输入命令&#xff1a; sudo apt install gparted sudo gparted 4. 选择磁盘&#xff0c;右键根分区&#xff0c;选择Resize/Move&#xff0c;调整大小。 5. 调整所需分区大…...

Window、CentOs、Ubuntu 安装 docker

Window 版本 网址&#xff1a;https://www.docker.com/ 下载 下载完成后&#xff0c;双击安装就可以了 Centos 版本 卸载 Docker &#xff08;可选&#xff09; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-log…...

mac M2下虚拟机CentOS 8 安装上安装 Berkeley DB

问题&#xff1a;直接在centos8 yum安装db4-devel失败&#xff0c;只能手工安装 进入home目录&#xff0c;下载 wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz 解压 tar -zxvf db-4.6.21.tar.gz 切到cd db-4.6.21的build_unix下 cd db-4.6.21 cd build_…...

Python文字转语音TTS库示例(edge-tts)

1. 安装 pip install edge-tts2. 命令行使用 # 生成语音文件 # -f&#xff1a;要转换语音的文本文件&#xff0c;例如一个txt文件 # --text&#xff1a;指明要保存的mp3的文本 # --write-media&#xff1a;指明保存的mp3文件路径 # --write-subtitles&#xff1a;指定输出字幕…...

lua入门语法,包含安装,注释,变量,循环等

文章目录 LUA入门什么是lualua安装入门lua的使用方式注释定义变量lua中的数据类型流程控制ifelsewhile语法&#xff1a;for 函数表模块 LUA入门 什么是lua 一种脚本语言&#xff0c;设计的目的是为了能够在一些应用程序提供灵活的扩展功能和定制功能。 lua安装 有linux版本…...

【文心智能体】使用文心一言来给智能体设计一段稳定调用工作流的提示词

&#x1f339;欢迎来到《小5讲堂》&#x1f339; &#x1f339;这是《文心智能体》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。&#x1f339; &#x1f339;温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff0…...

TWASandGWAS中GBS filtering and GWAS(1)

F:\文章代码\TWASandGWAS\GBS filtering and GWAS README.TXT 请检查幻灯片“Vitamaize_update_Gorelab_Ames_GBS_filtering_20191122.pptx”中关于阿姆斯&#xff08;Ames&#xff09;ID处理流程的详细信息。 文件夹“Ames_ID_processing”包含了用于处理阿姆斯ID的文件和R…...

Linux电源管理(五),发热管理(thermal),温度控制

更多linux系统电源管理相关的内容请看&#xff1a;Linux电源管理、功耗管理 和 发热管理 (CPUFreq、CPUIdle、RPM、thermal、睡眠 和 唤醒)-CSDN博客 本文主要基于linux-5.4.18版本的内核代码进行分析。 1 简介 1.1 硬件知识 CPU等芯片在工作时会产生大量热量&#xff0c;…...

【C++11】异常

前言 上文我们学习到了C11中类的新功能【C11】类的新功能-CSDN博客 本文我们来学习C下一个新语法&#xff1a;异常 1.异常的概念 异常的处理机制允许程序在运行时就出现的问题进行相应的处理。异常可以使得我们将问题的发现和问题的解决分开&#xff0c;程序的一部分负…...

C#WPF里不能出现滚动条的原因

使用下面这段代码,就不能出现滚动条: <mdix:DrawerHost.LeftDrawerContent><Grid Width="260" Background="{StaticResource MaterialDesign.Brush.Primary}"><Grid.RowDefinitions><RowDefinition Height="auto"/>&l…...

安装Hadoop并运行WordCount程序

一、安装 Java Hadoop 依赖 Java&#xff0c;首先需要安装 Java 开发工具包&#xff08;JDK&#xff09;。以 Ubuntu 为例&#xff1a; bash sudo apt update sudo apt install openjdk-8-jdk安装后&#xff0c;设置环境变量&#xff1a; bash echo export JAVA_HOME/usr/li…...

从零搭建AI工作站:Gemma3大模型本地部署+WebUI配置全套方案

文章目录 前言1. 安装Ollama2.Gemma3模型安装与运行3. 安装Open WebUI图形化界面3.1 Open WebUI安装运行3.2 添加模型3.3 多模态测试 4. 安装内网穿透工具5. 配置固定公网地址总结 前言 如今各家的AI大模型厮杀得如火如荼&#xff0c;每天都有新的突破。今天我要给大家安利一款…...

《数字人技术实现路径深度剖析与研究报告》

《数字人技术实现路径深度剖析与研究报告》 一、引言 1.1 研究背景与意义 近年来,随着人工智能、虚拟现实、计算机图形学等技术的飞速发展,数字人技术应运而生并取得了显著进展。数字人作为一种新兴的技术应用,正逐步渗透到各个领域,成为推动行业创新发展的重要力量。从最…...

《棒球百科》MLB棒球公益课·棒球1号位

MLB&#xff08;美国职业棒球大联盟&#xff09;的棒球公益课通过推广棒球运动、普及体育教育&#xff0c;对全球多个地区产生了多层次的影响&#xff1a; 1. 体育文化推广 非传统棒球地区的普及&#xff1a;在棒球基础较弱的地区&#xff08;如中国、欧洲部分国家&#xff09…...

Android 中 Handler (创建时)内存泄漏问题及解决方案

一、Handler 内存泄漏核心原理 真题 1&#xff1a;分析 Handler 内存泄漏场景 题目描述&#xff1a; 在 Activity 中使用非静态内部类 Handler 发送延迟消息&#xff0c;旋转屏幕后 Activity 无法释放&#xff0c;分析原因并给出解决方案。 内存泄漏链路分析&#xff1a; 引…...

linux-驱动开发之设备树详解(RK平台为例)

前言 Linux3.x以后的版本才引入了设备树&#xff0c;设备树用于描述一个硬件平台的板级细节。 在早些的linux内核&#xff0c;这些“硬件平台的板级细节”保存在linux内核目录“/arch”&#xff0c; 以ARM为例“硬件平台的板级细节”保存在“/arch/arm/plat-xxx”和“/arch/ar…...

【现代深度学习技术】注意力机制05:多头注意力

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...