八股取士--dockerk8s
一、Docker 基础
-
Docker 和虚拟机的区别是什么?
- 答案:
- 虚拟机(VM):虚拟化硬件,每个 VM 有独立操作系统,资源占用高,启动慢。
- Docker:容器化应用,共享宿主机内核,轻量级,秒级启动,资源利用率高。
- 答案:
-
什么是 Docker 镜像(Image)和容器(Container)?
- 答案:
- 镜像:只读模板,包含运行应用所需的文件系统和配置。
- 容器:镜像的运行实例,具有可写层,隔离的进程空间。
- 答案:
-
如何构建一个 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 .
- 答案:
-
Dockerfile 中
COPY
和ADD
的区别是什么?- 答案:
COPY
:仅复制本地文件到镜像。ADD
:支持复制并解压 tar 文件,或从 URL 下载文件(不推荐,行为不透明)。
- 答案:
-
如何减少 Docker 镜像大小?
- 答案:
- 使用小基础镜像(如
alpine
)。 - 多阶段构建(分离编译和运行环境)。
- 合并
RUN
命令,清理缓存。
- 使用小基础镜像(如
- 答案:
二、Docker 网络与存储
-
Docker 的网络模式有哪些?
- 答案:
- bridge(默认):容器通过虚拟网桥连接到宿主机。
- host:容器共享宿主机网络命名空间。
- none:无网络配置。
- overlay:跨主机的容器通信(用于 Swarm)。
- 答案:
-
如何让容器访问宿主机上的服务?
- 答案:
- 使用
host.docker.internal
(Mac/Windows)或--network=host
。 - 直接访问宿主机 IP(如
172.17.0.1
)。
- 使用
- 答案:
-
Docker 数据卷(Volume)的作用是什么?如何挂载?
- 答案:
- 作用:持久化容器数据,避免数据丢失。
- 挂载方式:
# 创建命名卷 docker volume create my-vol docker run -v my-vol:/data alpine # 挂载主机目录 docker run -v /host/path:/container/path alpine
- 答案:
三、Docker 实战与优化
-
如何查看容器日志?
- 答案:
docker logs <container-id> docker logs --tail 100 -f <container-id> # 实时查看最后100行
- 答案:
-
如何进入运行中的容器执行命令?
- 答案:
docker exec -it <container-id> /bin/sh
- 答案:
-
Docker Compose 的作用是什么?编写一个简单的 Compose 文件。
- 答案:
version: '3' services:web:image: nginx:alpineports:- "80:80"redis:image: redis:alpine
- 答案:
-
如何清理 Docker 占用的磁盘空间?
- 答案:
docker system prune -a -f # 清理所有未使用的镜像、容器、网络
- 答案:
四、Kubernetes 基础
-
Kubernetes 的核心组件有哪些?
- 答案:
- Master 节点:
- API Server:集群入口,处理 REST 请求。
- Scheduler:分配 Pod 到 Node。
- Controller Manager:维护集群状态(如副本数)。
- etcd:键值存储,保存集群状态。
- Worker 节点:
- Kubelet:管理 Pod 生命周期。
- Kube-Proxy:维护网络规则。
- Master 节点:
- 答案:
-
什么是 Pod?为什么需要 Pod?
- 答案:
- Pod:最小调度单元,包含一个或多个容器,共享网络和存储。
- 作用:将紧密耦合的容器组合在一起(如应用 + 日志收集 Sidecar)。
- 答案:
-
Deployment 和 StatefulSet 的区别是什么?
- 答案:
- Deployment:管理无状态应用,支持滚动更新、回滚。
- StatefulSet:管理有状态应用(如数据库),提供稳定的网络标识和持久存储。
- 答案:
五、Kubernetes 核心概念
-
Service 的作用是什么?有哪些类型?
- 答案:
- 作用:为一组 Pod 提供稳定的 IP 和 DNS 名称,实现负载均衡。
- 类型:
- ClusterIP(默认):集群内部访问。
- NodePort:通过节点端口暴露服务。
- LoadBalancer:云平台提供的外部负载均衡器。
- ExternalName:映射到外部服务。
- 答案:
-
如何通过 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
- 答案:
-
ConfigMap 和 Secret 的作用是什么?
- 答案:
- ConfigMap:存储非敏感配置(如环境变量、配置文件)。
- Secret:存储敏感数据(如密码、密钥),Base64 编码(非加密)。
- 答案:
六、Kubernetes 运维与调试
-
如何查看 Pod 的日志?
- 答案:
kubectl logs <pod-name> kubectl logs -f <pod-name> -c <container-name> # 多容器 Pod
- 答案:
-
如何排查 Pod 无法启动的问题?
- 答案:
kubectl describe pod <pod-name> # 查看事件 kubectl logs <pod-name> --previous # 查看前一个容器的日志(崩溃时)
- 答案:
-
如何实现 Pod 的滚动更新?
- 答案:
apiVersion: apps/v1 kind: Deployment spec:strategy:type: RollingUpdaterollingUpdate:maxSurge: 25% # 最大新增 Pod 数maxUnavailable: 25% # 最大不可用 Pod 数
- 答案:
七、Kubernetes 高级特性
-
什么是 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
- 答案:
-
如何通过 Helm 管理 Kubernetes 应用?
- 答案:
- Helm:包管理工具,通过 Chart 定义应用模板。
- 常用命令:
helm install my-release ./mychart helm upgrade my-release ./mychart helm uninstall my-release
- 答案:
八、场景与故障排查
-
如何调试 Kubernetes 中的网络问题?
- 答案:
- 检查 Pod 是否 Running:
kubectl get pods
。 - 检查 Service 的 Endpoints:
kubectl get endpoints <service-name>
。 - 使用临时 Pod 测试网络连通性:
kubectl run -it --rm --image=alpine test-pod -- sh ping <service-ip>
- 检查 Pod 是否 Running:
- 答案:
-
如何备份和恢复 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
。
- 备份 etcd:
- 答案:
更多高频问题(简要答案)
-
Docker 容器如何与宿主机共享时间?
-v /etc/localtime:/etc/localtime:ro
。
-
如何限制容器的 CPU 和内存?
docker run --cpus=2 --memory=512m nginx
-
什么是 Kubernetes 的 Init Container?
- 在应用容器前运行的容器,用于准备环境(如下载配置)。
-
如何更新 Kubernetes 的 Deployment 镜像?
kubectl set image deployment/my-deployment my-container=nginx:1.20
-
Kubernetes 的污点(Taint)和容忍(Toleration)是什么?
- 污点:标记节点,拒绝不匹配的 Pod。
- 容忍:允许 Pod 调度到有污点的节点。
-
如何通过 kubectl 进入 Pod 的容器?
kubectl exec -it <pod-name> -- /bin/sh
-
Kubernetes 的存活探针(Liveness Probe)和就绪探针(Readiness Probe)的区别?
- 存活探针:重启不健康的容器。
- 就绪探针:将 Pod 从 Service 端点移除。
-
如何查看 Kubernetes 集群的资源使用情况?
kubectl top nodes kubectl top pods
-
什么是 Kubernetes 的 CRD(Custom Resource Definition)?
- 扩展 Kubernetes API,定义自定义资源(如 MySQLCluster)。
35. 如何实现 Kubernetes 的蓝绿部署?
容器的蓝绿升级(Blue-Green Deployment)是一种零停机的发布策略,通常用于确保在应用程序更新过程中不中断服务。它的核心思想是通过创建两个相似的环境(蓝色和绿色)来实现平滑的应用程序升级,最终让流量切换到新的版本上。具体来说,蓝绿升级的工作流程和好处可以分为以下几个方面:
1. 基本概念
- 蓝色环境(Blue Environment):表示当前正在运行的应用程序版本或环境。
- 绿色环境(Green Environment):表示新版本的应用程序,尚未投入使用,但已准备好接管生产流量。
蓝绿升级的核心步骤如下:
- 在蓝色环境中运行现有的应用程序。
- 部署新版本的应用程序到绿色环境中。
- 测试绿色环境,确保一切正常。
- 将流量从蓝色环境切换到绿色环境。
- 一旦切换完成,蓝色环境可以关闭或用于下次升级。
2. 如何实现蓝绿升级(容器化环境)
在容器化环境中,蓝绿升级通常结合容器编排工具(如 Kubernetes、Docker Swarm 等)来实现。具体的操作步骤如下:
2.1 创建两个环境
- 在 Kubernetes 或其他容器管理平台上,通常会创建两个不同的服务或部署(
blue
和green
)。 - 每个环境都会有独立的容器集群,并且两个环境的配置通常是相同的(不同的是应用版本)。
2.2 部署新版本到绿色环境
- 将新版本的应用程序部署到绿色环境中。此时,绿色环境中的容器集群可以部署并运行新版本的代码、依赖等,进行内部测试和验证。
2.3 测试绿色环境
- 在流量切换之前,您可以在绿色环境中进行一系列验证,确保新版本的功能正常,性能达标等。
- 可以通过内部负载均衡或特定的测试流量(比如进行 Canary 测试)来验证新版本的稳定性。
2.4 切换流量
- 一旦绿色环境经过验证,就可以将流量从蓝色环境切换到绿色环境。通常这可以通过负载均衡器来实现。
- 在 Kubernetes 中,可以使用 Service 对象来管理流量,切换流量的过程通常会更新 Ingress 配置或 Service Selector,将流量从蓝色环境路由到绿色环境。
2.5 关闭蓝色环境(可选)
- 一旦流量切换到绿色环境后,可以选择关闭蓝色环境,或者将其作为备用环境用于回滚操作。
- 蓝色环境可以在未来的升级中作为新的绿色环境来使用,从而形成一个循环。
3. 蓝绿升级的优势
-
零停机时间:由于流量切换是在两个独立的环境之间进行的,用户不会感受到服务中断。这对于要求高可用性、零停机的应用至关重要。
-
平滑回滚:如果新版本出现问题,可以很容易地将流量切换回蓝色环境,保证旧版本仍然可用,避免系统崩溃或中断。
-
验证新版本:在绿色环境中完全隔离的运行新版本,避免了新版本可能带来的问题影响现有系统。可以在绿色环境中进行详尽的测试,确保稳定后再发布。
-
降低风险:由于升级和部署是分步进行的,避免了大规模的生产环境升级风险,可以先通过小范围验证来确保新版本是可接受的。
4. 容器化中的蓝绿升级策略
在容器化环境中,蓝绿升级与以下几个技术概念紧密相关:
-
滚动更新:这与蓝绿升级类似,但它是渐进式的,即新版本逐步替代旧版本。虽然滚动更新可以实现平滑升级,但在某些情况下(例如高可用性需求),蓝绿升级会更加适用,因为它可以在版本切换之前完全验证新版本。
-
负载均衡:通过负载均衡器或容器编排平台的路由控制(如 Kubernetes 的 Ingress 控制器),可以精确地控制流量的切换,确保应用平稳过渡。
-
服务发现:在容器编排平台(如 Kubernetes)中,服务发现机制可以帮助自动化流量的切换。例如,在 Kubernetes 中,可以通过更新 Deployment 的标签或使用
kubectl
命令来实现流量切换。
5. Kubernetes 中的蓝绿升级
在 Kubernetes 中,蓝绿升级通常可以通过以下步骤实现:
- 创建两个独立的 Deployment,分别代表蓝色和绿色环境。
- 使用 Service 将流量引导到当前活动的环境(例如蓝色环境)。
- 更新绿色环境的 Deployment 来部署新版本的应用。
- 通过 Service 或 Ingress 将流量从蓝色环境切换到绿色环境。
- (可选)删除蓝色环境的 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。
优势:
- 平滑过渡: 在更新过程中,始终有一些 Pods 仍然在提供服务,避免了应用不可用的情况。
- 资源节省: 无需为旧版本和新版本都保持单独的环境,因此节省了资源。
- 自动化: Kubernetes 自动管理更新过程,用户无需手动干预。
缺点:
- 回滚困难: 如果新版本的应用有问题,回滚可能需要手动操作,且无法直接控制回滚过程。
- 可能有临时的不一致: 由于新旧版本并行运行,可能会出现不同版本的 Pods 同时处理请求,可能引入不一致的问题。
- 更新过程中可能存在停机时间: 尽管 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)
定义:
蓝绿升级是一种完全替换现有应用程序版本的方法。在蓝绿升级过程中,维护两个独立的环境——蓝色环境和绿色环境。蓝色环境代表当前运行的生产版本,绿色环境代表新版本的应用程序。当新版本经过验证后,切换流量到绿色环境。
工作原理:
- 两个独立的环境: 蓝色环境和绿色环境在同一时间内并行存在。蓝色环境是当前的生产环境,绿色环境是新版本的应用程序。
- 流量切换: 初始时,流量由服务指向蓝色环境。当新版本应用程序(绿色环境)准备就绪后,通过修改负载均衡器或服务的配置,将流量切换到绿色环境。
- 切换后,蓝色环境作为备份: 如果绿色环境有问题,可以快速回滚流量到蓝色环境。绿色环境可作为新的生产环境,蓝色环境可用于备份或回滚。
优势:
- 零停机: 蓝绿升级可以确保应用在切换过程中不会停机,因为流量控制非常明确,切换只发生在流量入口的负载均衡器或服务上。
- 可控回滚: 如果绿色环境出现问题,流量可以迅速切换回蓝色环境,回滚过程非常简单。
- 完整验证: 在切换流量之前,可以在绿色环境中完全验证新版本,确保其没有问题。
- 流量切换精确: 完全控制流量的切换,没有其他版本与新版本并存的情况。
缺点:
- 资源浪费: 需要两个环境并行运行,意味着需要更多的资源(计算和存储),尤其是对于大型应用,可能会浪费大量资源。
- 流量切换延迟: 切换流量需要一定的操作,尤其是涉及负载均衡器配置时,可能会有一些延迟。
- 复杂的管理: 需要管理两个完全独立的环境,包括数据库、缓存等,可能增加管理复杂度。
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 和虚拟机的区别是什么? 答案: 虚拟机(VM):虚拟化硬件,每个 VM 有独立操作系统,资源占用高,启动慢。Docker:容器化应用,共享宿主机内核…...
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 包时,可能会遇到以下错误: WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.这意味着 Python 的 ssl 模块未正确安装或配置,导致 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 摘要: 大语言模型驱动的机器写作通…...

【广州大学主办,发表有保障 | IEEE出版,稳定EI检索,往届见刊后快至1个月检索】第二届电气技术与自动化工程国际学术会议 (ETAE 2025)
第二届电气技术与自动化工程国际学术会议 (ETAE 2025) The 2nd International Conference on Electrical Technology and Automation Engineering 大会官网:http://www.icetae.com/【更多详情】 会议时间:2025年4月25-27日 会议地点:…...

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

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

WordPress“更新失败,响应不是有效的JSON响应”问题的修复
在使用WordPress搭建网站时,许多人在编辑或更新文章时,可能会遇到一个提示框,显示“更新失败,响应不是有效的JSON响应”。这个提示信息对于不了解技术细节的用户来说,太难懂。其实,这个问题并不复杂&#x…...
kotlin的onFailure: () -> Unit
在Kotlin中,onFailure: () -> Unit表示一个没有参数且返回类型为Unit的函数。 在Kotlin中,Unit类型用于表示那些没有返回值的函数。具体来说,() -> Unit表示一个没有参数的函数,其返回类型为Unit。这种函数通常用于表示…...

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

midjourney 一 prompt 提示词
midjourney 不需要自然语言的描述,它只需要关键词即可。 一个完整的Midjourney prompt通常包括三个部分 图片提示(Image Prompts)、文本提示(Text Prompt)和参数(Parameters)。 1、图片提示(…...
微信小程序 - 网络请求基础路径集中管理(基础路径集中管理策略、动态切换基础路径)
一、基础路径集中管理 在微信小程序项目开发中,经常会将请求的基础路径集中管理 这样可以避免在多个页面中重复定义,同时也方便后续维护与修改 二、基础路径集中管理策略 1、使用全局变量 微信小程序提供了 App 对象,可以在 app.js 中定义…...
C#的委托delegate与事件event
在C#中,delegate(委托)和 event(事件)是两个非常重要的概念,它们主要用于实现回调机制和事件驱动编程。下面详细介绍它们的原理和使用场景。 1. Delegate(委托) 1.1 委托的原理 委托…...
apache artemis安装
安装apache artemis https://xxzkid.github.io/2025/apache-artemis-install...

Lightning基础训练尝试实例
一、训练任务概述 动机:由于后续的课题中会用到类似图像去噪的算法,考虑先用U-Net,这里做一个前置的尝试。 训练任务:分割出图像中的细胞。 数据集:可私 数据集结构: 二、具体实现 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.掷骰子等于目标和的方法数 背包问题是动态规划一个很重要的一类题目,主要分为0-1背包问题以及完全背包问题…...

【Azure 架构师学习笔记】- Azure Databricks (11) -- UC搭建
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (10) – UC 使用 前言 由于ADB 的更新速度很快,在几个月之后重新搭建ADB 时发现UC 已经更新了很多,为了后续做ADB 的功…...
RTMP(Real-Time Messaging Protocol)
RTMP(Real-Time Messaging Protocol)是一种用于实时音视频和数据传输的协议,常见于直播和流媒体应用。 一 RTSP 协商消息 一、消息类型(Message Types) RTMP消息分为多种类型,通过Message Type ID标识&a…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

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

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

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