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

八股取士--dockerk8s

一、Docker 基础

  1. Docker 和虚拟机的区别是什么?

    • 答案
      • 虚拟机(VM):虚拟化硬件,每个 VM 有独立操作系统,资源占用高,启动慢。
      • Docker:容器化应用,共享宿主机内核,轻量级,秒级启动,资源利用率高。
  2. 什么是 Docker 镜像(Image)和容器(Container)?

    • 答案
      • 镜像:只读模板,包含运行应用所需的文件系统和配置。
      • 容器:镜像的运行实例,具有可写层,隔离的进程空间。
  3. 如何构建一个 Docker 镜像?

    • 答案
      # Dockerfile 示例
      FROM alpine:3.14
      RUN apk add --no-cache python3
      COPY app.py /app/
      CMD ["python3", "/app/app.py"]
      
      docker build -t my-app:1.0 .
      
  4. Dockerfile 中 COPYADD 的区别是什么?

    • 答案
      • COPY:仅复制本地文件到镜像。
      • ADD:支持复制并解压 tar 文件,或从 URL 下载文件(不推荐,行为不透明)。
  5. 如何减少 Docker 镜像大小?

    • 答案
      • 使用小基础镜像(如 alpine)。
      • 多阶段构建(分离编译和运行环境)。
      • 合并 RUN 命令,清理缓存。

二、Docker 网络与存储

  1. Docker 的网络模式有哪些?

    • 答案
      • bridge(默认):容器通过虚拟网桥连接到宿主机。
      • host:容器共享宿主机网络命名空间。
      • none:无网络配置。
      • overlay:跨主机的容器通信(用于 Swarm)。
  2. 如何让容器访问宿主机上的服务?

    • 答案
      • 使用 host.docker.internal(Mac/Windows)或 --network=host
      • 直接访问宿主机 IP(如 172.17.0.1)。
  3. Docker 数据卷(Volume)的作用是什么?如何挂载?

    • 答案
      • 作用:持久化容器数据,避免数据丢失。
      • 挂载方式
        # 创建命名卷
        docker volume create my-vol
        docker run -v my-vol:/data alpine
        # 挂载主机目录
        docker run -v /host/path:/container/path alpine
        

三、Docker 实战与优化

  1. 如何查看容器日志?

    • 答案
      docker logs <container-id>
      docker logs --tail 100 -f <container-id>  # 实时查看最后100行
      
  2. 如何进入运行中的容器执行命令?

    • 答案
      docker exec -it <container-id> /bin/sh
      
  3. Docker Compose 的作用是什么?编写一个简单的 Compose 文件。

    • 答案
      version: '3'
      services:web:image: nginx:alpineports:- "80:80"redis:image: redis:alpine
      
  4. 如何清理 Docker 占用的磁盘空间?

    • 答案
      docker system prune -a -f  # 清理所有未使用的镜像、容器、网络
      

四、Kubernetes 基础

  1. Kubernetes 的核心组件有哪些?

    • 答案
      • Master 节点
        • API Server:集群入口,处理 REST 请求。
        • Scheduler:分配 Pod 到 Node。
        • Controller Manager:维护集群状态(如副本数)。
        • etcd:键值存储,保存集群状态。
      • Worker 节点
        • Kubelet:管理 Pod 生命周期。
        • Kube-Proxy:维护网络规则。
  2. 什么是 Pod?为什么需要 Pod?

    • 答案
      • Pod:最小调度单元,包含一个或多个容器,共享网络和存储。
      • 作用:将紧密耦合的容器组合在一起(如应用 + 日志收集 Sidecar)。
  3. Deployment 和 StatefulSet 的区别是什么?

    • 答案
      • Deployment:管理无状态应用,支持滚动更新、回滚。
      • StatefulSet:管理有状态应用(如数据库),提供稳定的网络标识和持久存储。

五、Kubernetes 核心概念

  1. Service 的作用是什么?有哪些类型?

    • 答案
      • 作用:为一组 Pod 提供稳定的 IP 和 DNS 名称,实现负载均衡。
      • 类型
        • ClusterIP(默认):集群内部访问。
        • NodePort:通过节点端口暴露服务。
        • LoadBalancer:云平台提供的外部负载均衡器。
        • ExternalName:映射到外部服务。
  2. 如何通过 Ingress 暴露服务?

    • 答案
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:name: my-ingress
      spec:rules:- host: myapp.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80
      
  3. ConfigMap 和 Secret 的作用是什么?

    • 答案
      • ConfigMap:存储非敏感配置(如环境变量、配置文件)。
      • Secret:存储敏感数据(如密码、密钥),Base64 编码(非加密)。

六、Kubernetes 运维与调试

  1. 如何查看 Pod 的日志?

    • 答案
      kubectl logs <pod-name>
      kubectl logs -f <pod-name> -c <container-name>  # 多容器 Pod
      
  2. 如何排查 Pod 无法启动的问题?

    • 答案
      kubectl describe pod <pod-name>  # 查看事件
      kubectl logs <pod-name> --previous  # 查看前一个容器的日志(崩溃时)
      
  3. 如何实现 Pod 的滚动更新?

    • 答案
      apiVersion: apps/v1
      kind: Deployment
      spec:strategy:type: RollingUpdaterollingUpdate:maxSurge: 25%      # 最大新增 Pod 数maxUnavailable: 25% # 最大不可用 Pod 数
      

七、Kubernetes 高级特性

  1. 什么是 HPA(Horizontal Pod Autoscaler)?如何配置?

    • 答案
      • 作用:根据 CPU 或自定义指标自动扩缩 Pod 数量。
      • 配置
        apiVersion: autoscaling/v2
        kind: HorizontalPodAutoscaler
        metadata:name: my-hpa
        spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: my-deploymentminReplicas: 1maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50
        
  2. 如何通过 Helm 管理 Kubernetes 应用?

    • 答案
      • Helm:包管理工具,通过 Chart 定义应用模板。
      • 常用命令
        helm install my-release ./mychart
        helm upgrade my-release ./mychart
        helm uninstall my-release
        

八、场景与故障排查

  1. 如何调试 Kubernetes 中的网络问题?

    • 答案
      1. 检查 Pod 是否 Running:kubectl get pods
      2. 检查 Service 的 Endpoints:kubectl get endpoints <service-name>
      3. 使用临时 Pod 测试网络连通性:
        kubectl run -it --rm --image=alpine test-pod -- sh
        ping <service-ip>
        
  2. 如何备份和恢复 Kubernetes 集群?

    • 答案
      • 备份 etcd
        ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key \snapshot save snapshot.db
        
      • 恢复:使用 etcdctl snapshot restore

更多高频问题(简要答案)

  1. Docker 容器如何与宿主机共享时间?

    • -v /etc/localtime:/etc/localtime:ro
  2. 如何限制容器的 CPU 和内存?

    docker run --cpus=2 --memory=512m nginx
    
  3. 什么是 Kubernetes 的 Init Container?

    • 在应用容器前运行的容器,用于准备环境(如下载配置)。
  4. 如何更新 Kubernetes 的 Deployment 镜像?

    kubectl set image deployment/my-deployment my-container=nginx:1.20
    
  5. Kubernetes 的污点(Taint)和容忍(Toleration)是什么?

    • 污点:标记节点,拒绝不匹配的 Pod。
    • 容忍:允许 Pod 调度到有污点的节点。
  6. 如何通过 kubectl 进入 Pod 的容器?

    kubectl exec -it <pod-name> -- /bin/sh
    
  7. Kubernetes 的存活探针(Liveness Probe)和就绪探针(Readiness Probe)的区别?

    • 存活探针:重启不健康的容器。
    • 就绪探针:将 Pod 从 Service 端点移除。
  8. 如何查看 Kubernetes 集群的资源使用情况?

    kubectl top nodes
    kubectl top pods
    
  9. 什么是 Kubernetes 的 CRD(Custom Resource Definition)?

    • 扩展 Kubernetes API,定义自定义资源(如 MySQLCluster)。

35. 如何实现 Kubernetes 的蓝绿部署?

容器的蓝绿升级(Blue-Green Deployment)是一种零停机的发布策略,通常用于确保在应用程序更新过程中不中断服务。它的核心思想是通过创建两个相似的环境(蓝色和绿色)来实现平滑的应用程序升级,最终让流量切换到新的版本上。具体来说,蓝绿升级的工作流程和好处可以分为以下几个方面:

1. 基本概念

  • 蓝色环境(Blue Environment):表示当前正在运行的应用程序版本或环境。
  • 绿色环境(Green Environment):表示新版本的应用程序,尚未投入使用,但已准备好接管生产流量。

蓝绿升级的核心步骤如下

  1. 在蓝色环境中运行现有的应用程序。
  2. 部署新版本的应用程序到绿色环境中。
  3. 测试绿色环境,确保一切正常。
  4. 将流量从蓝色环境切换到绿色环境。
  5. 一旦切换完成,蓝色环境可以关闭或用于下次升级。

2. 如何实现蓝绿升级(容器化环境)

在容器化环境中,蓝绿升级通常结合容器编排工具(如 Kubernetes、Docker Swarm 等)来实现。具体的操作步骤如下:

2.1 创建两个环境
  • 在 Kubernetes 或其他容器管理平台上,通常会创建两个不同的服务或部署(bluegreen)。
  • 每个环境都会有独立的容器集群,并且两个环境的配置通常是相同的(不同的是应用版本)。
2.2 部署新版本到绿色环境
  • 将新版本的应用程序部署到绿色环境中。此时,绿色环境中的容器集群可以部署并运行新版本的代码、依赖等,进行内部测试和验证。
2.3 测试绿色环境
  • 在流量切换之前,您可以在绿色环境中进行一系列验证,确保新版本的功能正常,性能达标等。
  • 可以通过内部负载均衡或特定的测试流量(比如进行 Canary 测试)来验证新版本的稳定性。
2.4 切换流量
  • 一旦绿色环境经过验证,就可以将流量从蓝色环境切换到绿色环境。通常这可以通过负载均衡器来实现。
  • 在 Kubernetes 中,可以使用 Service 对象来管理流量,切换流量的过程通常会更新 Ingress 配置或 Service Selector,将流量从蓝色环境路由到绿色环境。
2.5 关闭蓝色环境(可选)
  • 一旦流量切换到绿色环境后,可以选择关闭蓝色环境,或者将其作为备用环境用于回滚操作。
  • 蓝色环境可以在未来的升级中作为新的绿色环境来使用,从而形成一个循环。

3. 蓝绿升级的优势

  1. 零停机时间:由于流量切换是在两个独立的环境之间进行的,用户不会感受到服务中断。这对于要求高可用性、零停机的应用至关重要。

  2. 平滑回滚:如果新版本出现问题,可以很容易地将流量切换回蓝色环境,保证旧版本仍然可用,避免系统崩溃或中断。

  3. 验证新版本:在绿色环境中完全隔离的运行新版本,避免了新版本可能带来的问题影响现有系统。可以在绿色环境中进行详尽的测试,确保稳定后再发布。

  4. 降低风险:由于升级和部署是分步进行的,避免了大规模的生产环境升级风险,可以先通过小范围验证来确保新版本是可接受的。

4. 容器化中的蓝绿升级策略

在容器化环境中,蓝绿升级与以下几个技术概念紧密相关:

  • 滚动更新:这与蓝绿升级类似,但它是渐进式的,即新版本逐步替代旧版本。虽然滚动更新可以实现平滑升级,但在某些情况下(例如高可用性需求),蓝绿升级会更加适用,因为它可以在版本切换之前完全验证新版本。

  • 负载均衡:通过负载均衡器或容器编排平台的路由控制(如 Kubernetes 的 Ingress 控制器),可以精确地控制流量的切换,确保应用平稳过渡。

  • 服务发现:在容器编排平台(如 Kubernetes)中,服务发现机制可以帮助自动化流量的切换。例如,在 Kubernetes 中,可以通过更新 Deployment 的标签或使用 kubectl 命令来实现流量切换。

5. Kubernetes 中的蓝绿升级

在 Kubernetes 中,蓝绿升级通常可以通过以下步骤实现:

  1. 创建两个独立的 Deployment,分别代表蓝色和绿色环境。
  2. 使用 Service 将流量引导到当前活动的环境(例如蓝色环境)。
  3. 更新绿色环境的 Deployment 来部署新版本的应用。
  4. 通过 ServiceIngress 将流量从蓝色环境切换到绿色环境。
  5. (可选)删除蓝色环境的 Deployment 或保留它作为回滚点。
# Example of two deployments (blue and green)
apiVersion: apps/v1
kind: Deployment
metadata:name: app-blue
spec:replicas: 2template:spec:containers:- name: appimage: app:v1---
apiVersion: apps/v1
kind: Deployment
metadata:name: app-green
spec:replicas: 2template:spec:containers:- name: appimage: app:v2
# Example of a Service routing traffic to the active environment (e.g., blue)
apiVersion: v1
kind: Service
metadata:name: app-service
spec:selector:app: app-blueports:- port: 80targetPort: 8080

6. 总结

蓝绿升级是一种有效的部署策略,它提供了零停机的升级体验,确保在版本更新过程中系统的可用性和稳定性。通过使用蓝色和绿色两个独立环境,它允许开发团队在不影响现有用户的情况下部署、验证和切换到新版本的应用程序。对于容器化应用,使用 Kubernetes、Docker Swarm 或其他容器编排平台结合蓝绿升级策略,可以实现高可用、高可靠的服务交付。

36.滚动更新 (Rolling Update) VS 蓝绿升级 (Blue-Green Deployment)

滚动更新 (Rolling Update)蓝绿升级 (Blue-Green Deployment) 是两种常见的部署策略,它们都用于无缝地将新版本的应用程序部署到生产环境,但它们的工作原理和适用场景有所不同。

1. 滚动更新 (Rolling Update)

定义:

滚动更新是一种逐步替换现有应用程序版本的方法。在滚动更新过程中,Kubernetes 会根据指定的更新策略,逐步替换应用程序的旧版本 Pods(容器)为新版本。每次更新一定数量的 Pods,直到全部 Pods 被更新为新版本。

工作原理:
  • 逐个替换 Pods: 更新过程按照一定的步长(例如每次替换 1 个 Pod 或者 10% 的 Pods)来逐步替换旧版本 Pods。
  • 保证应用可用性: 在更新过程中,会始终保持一定数量的旧版本和新版本 Pods 在运行,确保应用在更新过程中不会停机。
  • 更新顺序: 每次替换一个 Pod,Kubernetes 会检查新版本的 Pod 是否正常工作,如果正常才会继续替换下一个 Pod。
优势:
  1. 平滑过渡: 在更新过程中,始终有一些 Pods 仍然在提供服务,避免了应用不可用的情况。
  2. 资源节省: 无需为旧版本和新版本都保持单独的环境,因此节省了资源。
  3. 自动化: Kubernetes 自动管理更新过程,用户无需手动干预。
缺点:
  1. 回滚困难: 如果新版本的应用有问题,回滚可能需要手动操作,且无法直接控制回滚过程。
  2. 可能有临时的不一致: 由于新旧版本并行运行,可能会出现不同版本的 Pods 同时处理请求,可能引入不一致的问题。
  3. 更新过程中可能存在停机时间: 尽管 Kubernetes 会保证一定数量的 Pods 处于可用状态,但仍有可能出现部分请求被拒绝或者延迟的情况。
Kubernetes 中的滚动更新示例:

Kubernetes Deployment 对象默认使用滚动更新策略来进行应用程序的升级。可以通过配置 spec.strategy.type 来设置策略,默认为 RollingUpdate

apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1template:spec:containers:- name: myappimage: myapp:v2ports:- containerPort: 8080
  • maxSurge: 更新过程中可以超出的 Pods 数量(即新创建 Pods 的数量),例如 maxSurge: 1 表示每次更新时最多会多出一个 Pod。
  • maxUnavailable: 更新过程中不可用的 Pods 数量,表示可接受的最差情况。

2. 蓝绿升级 (Blue-Green Deployment)

定义:

蓝绿升级是一种完全替换现有应用程序版本的方法。在蓝绿升级过程中,维护两个独立的环境——蓝色环境绿色环境。蓝色环境代表当前运行的生产版本,绿色环境代表新版本的应用程序。当新版本经过验证后,切换流量到绿色环境。

工作原理:
  • 两个独立的环境: 蓝色环境和绿色环境在同一时间内并行存在。蓝色环境是当前的生产环境,绿色环境是新版本的应用程序。
  • 流量切换: 初始时,流量由服务指向蓝色环境。当新版本应用程序(绿色环境)准备就绪后,通过修改负载均衡器或服务的配置,将流量切换到绿色环境。
  • 切换后,蓝色环境作为备份: 如果绿色环境有问题,可以快速回滚流量到蓝色环境。绿色环境可作为新的生产环境,蓝色环境可用于备份或回滚。
优势:
  1. 零停机: 蓝绿升级可以确保应用在切换过程中不会停机,因为流量控制非常明确,切换只发生在流量入口的负载均衡器或服务上。
  2. 可控回滚: 如果绿色环境出现问题,流量可以迅速切换回蓝色环境,回滚过程非常简单。
  3. 完整验证: 在切换流量之前,可以在绿色环境中完全验证新版本,确保其没有问题。
  4. 流量切换精确: 完全控制流量的切换,没有其他版本与新版本并存的情况。
缺点:
  1. 资源浪费: 需要两个环境并行运行,意味着需要更多的资源(计算和存储),尤其是对于大型应用,可能会浪费大量资源。
  2. 流量切换延迟: 切换流量需要一定的操作,尤其是涉及负载均衡器配置时,可能会有一些延迟。
  3. 复杂的管理: 需要管理两个完全独立的环境,包括数据库、缓存等,可能增加管理复杂度。
Kubernetes 中的蓝绿升级示例:

蓝绿升级需要通过创建两个不同版本的 Deployment 和一个 Service 来实现流量的切换。

# 蓝色环境的 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-blue
spec:replicas: 3selector:matchLabels:app: myappversion: bluetemplate:metadata:labels:app: myappversion: bluespec:containers:- name: myappimage: myapp:v1  # 蓝色环境的版本
---
# 绿色环境的 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-green
spec:replicas: 3selector:matchLabels:app: myappversion: greentemplate:metadata:labels:app: myappversion: greenspec:containers:- name: myappimage: myapp:v2  # 绿色环境的版本
---
# 负责流量的 Service
apiVersion: v1
kind: Service
metadata:name: myapp-service
spec:selector:app: myappversion: blue  # 初始流量指向蓝色环境ports:- port: 80targetPort: 8080

3. 滚动更新与蓝绿升级的对比

特性滚动更新 (Rolling Update)蓝绿升级 (Blue-Green Deployment)
更新方式逐步替换 Pods,逐步升级完全切换流量到新版本的环境
停机时间最小,保证有 Pod 在运行无停机时间,流量切换不影响服务
回滚难易需要手动操作,回滚过程可能复杂简单快速,只需切换流量回蓝色环境即可
资源消耗资源消耗较少,只需要旧版本和新版本的 Pod 并行运行需要两个完整的环境(蓝色和绿色),资源消耗较高
控制粒度没有直接控制流量切换的时机完全控制流量切换,可以精确控制
适用场景适用于小规模应用或对于资源有要求的场景适用于需要零停机和快速回滚的场景

4. 总结

  • 滚动更新 适用于大多数场景,尤其是当你希望逐步升级 Pods 并且能够容忍部分 Pods 暂时不正常的情况时。
  • 蓝绿升级 则更适用于关键应用或需要确保零停机的场景,适合有资源和成本预算进行双环境部署的情况。

根据你的需求选择合适的部署策略,若需要稳定性和无缝的切换,可以考虑 蓝绿升级;如果资源有限,或者不需要严格的流量控制,滚动更新 是更为经济和简单的选择。

相关文章:

八股取士--dockerk8s

一、Docker 基础 Docker 和虚拟机的区别是什么&#xff1f; 答案&#xff1a; 虚拟机&#xff08;VM&#xff09;&#xff1a;虚拟化硬件&#xff0c;每个 VM 有独立操作系统&#xff0c;资源占用高&#xff0c;启动慢。Docker&#xff1a;容器化应用&#xff0c;共享宿主机内核…...

Autojs: 使用 SQLite

例子 let db new SQLiteUtil("/sdcard/A_My_DB/sqlite.db");db.fastCreateTable("user_table",{name: "",online: false,},["name"] // 设置 name 为唯一, 重复项 不会添加成功 );// 新增数据的 ID let row_id db.insert("use…...

思科、华为、H3C常用命令对照表

取消/关闭 思科no华为undo华三undo 查看 思科show华为display华三display 退出 思科exit华为quit华三quit 设备命名 思科hostname华为sysname华三sysname 进入全局模式 思科enable、config terminal华为system-view华三system-view 删除文件 思科delete华为delete华…...

解决 `pip is configured with locations that require TLS/SSL` 错误

问题描述 在使用 pip 安装 Python 包时&#xff0c;可能会遇到以下错误&#xff1a; WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.这意味着 Python 的 ssl 模块未正确安装或配置&#xff0c;导致 p…...

2025-arXiv-OmniThink:通过思考扩展机器写作的知识边界

arXiv | https://arxiv.org/abs/2501.09751 GitHub | https://github.com/zjunlp/OmniThink 项目主页 | https://zjunlp.github.io/project/OmniThink/ ModelScope 在线 Demo | https://www.modelscope.cn/studios/iic/OmniThink 摘要&#xff1a; 大语言模型驱动的机器写作通…...

【广州大学主办,发表有保障 | IEEE出版,稳定EI检索,往届见刊后快至1个月检索】第二届电气技术与自动化工程国际学术会议 (ETAE 2025)

第二届电气技术与自动化工程国际学术会议 (ETAE 2025) The 2nd International Conference on Electrical Technology and Automation Engineering 大会官网&#xff1a;http://www.icetae.com/【更多详情】 会议时间&#xff1a;2025年4月25-27日 会议地点&#xff1a…...

机器学习:01数学基础教程

函数 极限 按照一定次数排列的一列数:“&#xff0c;“,…,"…&#xff0c;其中u 叫做通项。 对于数列{Un}如果当n无限增大时&#xff0c;其通项无限接近于一个常数A&#xff0c;则称该数列以A为极限或称数列收敛于A&#xff0c;否则称数列为发散&#xff0c; 极限值 左…...

仿叮咚买菜鸿蒙原生APP

# DingdongShopping 这是一个原生鸿蒙版的仿叮咚买菜APP项目 鸿蒙Next发布至今已经有一年多的时间了&#xff0c;但有时候我们想要实现一些复杂的功能或者效果&#xff0c;在开发文档上查阅一些资料还是比较费时的&#xff0c;有可能还找不到我们想要的内容。而社会层面上分享…...

WordPress“更新失败,响应不是有效的JSON响应”问题的修复

在使用WordPress搭建网站时&#xff0c;许多人在编辑或更新文章时&#xff0c;可能会遇到一个提示框&#xff0c;显示“更新失败&#xff0c;响应不是有效的JSON响应”。这个提示信息对于不了解技术细节的用户来说&#xff0c;太难懂。其实&#xff0c;这个问题并不复杂&#x…...

kotlin的onFailure: () -> Unit

‌在Kotlin中&#xff0c;onFailure: () -> Unit表示一个没有参数且返回类型为Unit的函数。‌ 在Kotlin中&#xff0c;Unit类型用于表示那些没有返回值的函数。具体来说&#xff0c;() -> Unit表示一个没有参数的函数&#xff0c;其返回类型为Unit。这种函数通常用于表示…...

通过网线将Keysight DSOX4154A示波器信号传输至电脑的Step

一、硬件连接 连接网线 使用标准以太网线&#xff08;Cat5e或更高&#xff09;连接示波器背面的 LAN端口 至电脑或同一局域网的交换机/路由器。 二、示波器网络配置 进入网络设置菜单 点击示波器前面板右上角 【Utility】 → 【I/O】 → 【LAN Settings】。 配置IP地址 自…...

midjourney 一 prompt 提示词

midjourney 不需要自然语言的描述&#xff0c;它只需要关键词即可。 一个完整的Midjourney prompt通常包括三个部分 图片提示&#xff08;Image Prompts&#xff09;、文本提示&#xff08;Text Prompt&#xff09;和参数&#xff08;Parameters&#xff09;。 1、图片提示(…...

微信小程序 - 网络请求基础路径集中管理(基础路径集中管理策略、动态切换基础路径)

一、基础路径集中管理 在微信小程序项目开发中&#xff0c;经常会将请求的基础路径集中管理 这样可以避免在多个页面中重复定义&#xff0c;同时也方便后续维护与修改 二、基础路径集中管理策略 1、使用全局变量 微信小程序提供了 App 对象&#xff0c;可以在 app.js 中定义…...

C#的委托delegate与事件event

在C#中&#xff0c;delegate&#xff08;委托&#xff09;和 event&#xff08;事件&#xff09;是两个非常重要的概念&#xff0c;它们主要用于实现回调机制和事件驱动编程。下面详细介绍它们的原理和使用场景。 1. Delegate&#xff08;委托&#xff09; 1.1 委托的原理 委托…...

apache artemis安装

安装apache artemis https://xxzkid.github.io/2025/apache-artemis-install...

Lightning基础训练尝试实例

一、训练任务概述 动机&#xff1a;由于后续的课题中会用到类似图像去噪的算法&#xff0c;考虑先用U-Net&#xff0c;这里做一个前置的尝试。 训练任务&#xff1a;分割出图像中的细胞。 数据集&#xff1a;可私 数据集结构&#xff1a; 二、具体实现 U-Net的网络实现是现…...

osgearth视点坐标及鼠标交点坐标的信息显示(七)

核心函数如下: void COSGObject::addViewPointLabel() {//mRoot->addChild(osgEarth::Util::Controls::ControlCanvas::get(mViewer));//放开这句,球就卡住了。 为什么,shitosgEarth::Util::Controls::ControlCanvas* canvas = osgEarth::Util::Controls::ControlCanvas…...

动态规划 之 背包问题

文章目录 0-1背包问题2915.和为目标值的最长子序列的长度494.目标和 完全背包问题322.零钱兑换518.零钱兑换II 多重背包2585.获得分数的方法数 分组背包1155.掷骰子等于目标和的方法数 背包问题是动态规划一个很重要的一类题目&#xff0c;主要分为0-1背包问题以及完全背包问题…...

【Azure 架构师学习笔记】- Azure Databricks (11) -- UC搭建

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (10) – UC 使用 前言 由于ADB 的更新速度很快&#xff0c;在几个月之后重新搭建ADB 时发现UC 已经更新了很多&#xff0c;为了后续做ADB 的功…...

RTMP(Real-Time Messaging Protocol)

RTMP&#xff08;Real-Time Messaging Protocol&#xff09;是一种用于实时音视频和数据传输的协议&#xff0c;常见于直播和流媒体应用。 一 RTSP 协商消息 一、消息类型&#xff08;Message Types&#xff09; RTMP消息分为多种类型&#xff0c;通过Message Type ID标识&a…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...