K8S企業級應用與DaemonSet實戰解析

目錄

一、概述

二、YAML文件詳解

三、企業應用案例

3.1 環境準備

3.2 擴縮容

3.3 滾動更新

3.4 回滾

四、自定義更新策略

4.1類型

4.2 設置方式

4.3 配置案例

一、 DaemonSet 概述

DaemonSet 工作原理

Daemonset 典型的應用場景

DaemonSet 與 Deployment 的區別

二、DaemonSet 資源清單文件編寫技巧

清單模版

三、DaemonSet 使用案例


一、概述

Deployment為Pod和ReplicaSet提供了一個聲明式定義(declarative)方法,用來替代以前的ReplicationController來方便的管理應用。

典型的應用場景包括:

  • 定義Deployment來創建Pod和ReplicaSet

  • 滾動升級和回滾應用

  • 擴容和縮容

  • 暫停和繼續Deployment更新

Deployment表示用戶對K8S集群的一次更新操作。Deployment是一個比RS( Replica Set, RS) 應用模型更廣的 API 對象,可以是創建一個新的服務,更新一個新的服務,也可以是滾動升級一個服務。滾動升級一個服務,實際是創建一個新的RS,然后逐漸將新 RS 中副本數增加到理想狀態,將舊RS中的副本數減少到0的復合操作。

這樣一個復合操作用一個RS是不好描述的,所以用一個更通用的Deployment來描述。以K8S的發展方向,未來對所有長期伺服型的業務的管理,都會通過Deployment來管理。

二、YAML文件詳解

apiVersion: apps/v1 #接口版本
kind: Deployment ? ? ? ? ? ? ? ? #接口類型
metadata:name: cango-demo ? ? ? ? ? ? ? #Deployment名稱namespace: cango-prd ? ? ? ? ? #命名空間labels:app: cango-demo ? ? ? ? ? ? ?#標簽
spec:replicas: 3selector:matchLabels:app: cango-demo ?#匹配模板中labelstrategy:rollingUpdate: ?##由于replicas為3,則整個升級,pod個數在2-4個之間maxSurge: 1 ? ? ?#滾動升級時會先啟動1個podmaxUnavailable: 1 #滾動升級時允許的最大Unavailable的pod個數template: ? ? ? ? metadata:labels:app: cango-demo ?#模板名稱必填sepc: #定義容器模板,該模板可以包含多個容器containers: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - name: cango-demo1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #鏡像名稱image: swr.cn-east-2.myhuaweicloud.com/cango-prd/cango-demo:0.0.1-SNAPSHOT #鏡像地址command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ] ? ?#啟動命令args: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#啟動參數- '-storage.local.retention=$(STORAGE_RETENTION)'- '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'- '-config.file=/etc/prometheus/prometheus.yml'- '-alertmanager.url=http://alertmanager:9093/alertmanager'- '-web.external-url=$(EXTERNAL_URL)'#如果command和args均沒有寫,那么用Docker默認的配置。#如果command寫了,但args沒有寫,那么Docker默認的配置會被忽略而且僅僅執行.yaml文件的command(不帶任何參數的)。#如果command沒寫,但args寫了,那么Docker默認配置的ENTRYPOINT的命令行會被執行,但是調用的參數是.yaml中的args。#如果如果command和args都寫了,那么Docker默認的配置被忽略,使用.yaml的配置。imagePullPolicy: IfNotPresent ?#如果不存在則拉取livenessProbe: ? ? ? #表示container是否處于live狀態。如果LivenessProbe失敗,LivenessProbe將會通知kubelet對應的container不健康了。隨后kubelet將kill掉container,并根據RestarPolicy進行進一步的操作。默認情況下LivenessProbe在第一次檢測之前初始化值為Success,如果container沒有提供LivenessProbe,則也認為是Success;httpGet:path: /health #如果沒有心跳檢測接口就為/port: 8080scheme: HTTPinitialDelaySeconds: 60 ##啟動后延時多久開始運行檢測timeoutSeconds: 5successThreshold: 1failureThreshold: 5readinessProbe:httpGet:path: /health #如果沒有心跳檢測接口就為/port: 8080scheme: HTTPinitialDelaySeconds: 30 ##啟動后延時多久開始運行檢測timeoutSeconds: 5successThreshold: 1failureThreshold: 5resources: ? ? ? ? ? ? ?##CPU內存限制requests:cpu: 2memory: 2048Milimits:cpu: 2memory: 2048Mienv: ? ? ? ? ? ? ? ? ? ?##通過環境變量的方式,直接傳遞pod=自定義Linux OS環境變量- name: LOCAL_KEY ? ? #本地Keyvalue: value- name: CONFIG_MAP_KEY ?#局策略可使用configMap的配置Key,valueFrom:configMapKeyRef:name: special-config ? #configmap中找到name為special-configkey: special.type ? ? ?#找到name為special-config里data下的keyports:- name: httpcontainerPort: 8080 #對service暴露端口volumeMounts: ? ? #掛載volumes中定義的磁盤- name: log-cachemountPath: /tmp/log- name: sdb ? ? ? #普通用法,該卷跟隨容器銷毀,掛載一個目錄mountPath: /data/media ? ?- name: nfs-client-root ? ?#直接掛載硬盤方法,如掛載下面的nfs目錄到/mnt/nfsmountPath: /mnt/nfs- name: example-volume-config ?#高級用法第1種,將ConfigMap的log-script,backup-script分別掛載到/etc/config目錄下的一個相對路徑path/to/...下,如果存在同名文件,直接覆蓋。mountPath: /etc/config ? ? ? - name: rbd-pvc ? ? ? ? ? ? ? ?#高級用法第2中,掛載PVC(PresistentVolumeClaim)
?
#使用volume將ConfigMap作為文件或目錄直接掛載,其中每一個key-value鍵值對都會生成一個文件,key為文件名,value為內容,volumes: ?# 定義磁盤給上面volumeMounts掛載- name: log-cacheemptyDir: {}- name: sdb ?#掛載宿主機上面的目錄hostPath:path: /any/path/it/will/be/replaced- name: example-volume-config ?# 供ConfigMap文件內容到指定路徑使用configMap:name: example-volume-config ?#ConfigMap中名稱items:- key: log-script ? ? ? ? ? #ConfigMap中的Keypath: path/to/log-script ?#指定目錄下的一個相對路徑path/to/log-script- key: backup-script ? ? ? ?#ConfigMap中的Keypath: path/to/backup-script ?#指定目錄下的一個相對路徑path/to/backup-script- name: nfs-client-root ? ? ? ? #供掛載NFS存儲類型nfs:server: 10.42.0.55 ? ? ? ? ?#NFS服務器地址path: /opt/public ? ? ? ? ? #showmount -e 看一下路徑- name: rbd-pvc ? ? ? ? ? ? ? ? #掛載PVC磁盤persistentVolumeClaim:claimName: rbd-pvc1 ? ? ? ? #掛載已經申請的pvc磁盤

三、企業應用案例

3.1 環境準備

創建my-blue.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: mydm
spec:replicas: 3selector:matchLabels:app: myapp-blue #匹配模板中labeltemplate:metadata:labels:app: myapp-bluespec:containers:- name: myapp-blueimage: janakiramm/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80

創建訪問service my-blue-service.yaml

apiVersion: v1
kind: Service
metadata:name: service-blue
spec:selector:app: myapp-bluetype: NodePort ports:- port: 80nodePort: 30030targetPort: 80

提交對應的資源清單

[root@k8s-master01 ~]# kubectl apply -f my-blue.yaml
[root@k8s-master01 ~]# kubectl apply -f my-blue-service.yaml
#查看對應的資源
[root@k8s-master01 ~]# kubectl get pod
NAME ? ? ? ? ? ? ? ? ? ?  READY ? STATUS ?  RESTARTS ? ? ?  AGE
mydm-7755b9f55f-7h2nb ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? ? 69s
mydm-7755b9f55f-bj9gf ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? ? 69s
mydm-7755b9f55f-hjckc ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? ? 69s
mydm-7755b9f55f-lfvrd ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? ? 69s
mydm-7755b9f55f-lxzw4 ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? ? 69s
mydm-7755b9f55f-v74w8 ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? ? 69s
[root@k8s-master01 ~]# kubectl get svc
NAME ? ? ? ? ? ? ? ? TYPE ? ? ?  CLUSTER-IP ? ?  EXTERNAL-IP ? PORT(S) ? ? ? ?  AGE
service-blue ? ? ? ? NodePort ? ?10.10.157.201 ? <none> ? ? ? ?80:30030/TCP ? ? 87s

3.2 擴縮容

修改對應的yaml文件中的replicas的數量

apiVersion: apps/v1
kind: Deployment
metadata:name: mydm
spec:replicas: 5selector:matchLabels:app: myapp-blue #匹配模板中labeltemplate:metadata:labels:app: myapp-bluespec:containers:- name: myapp-blueimage: janakiramm/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80

3.3 滾動更新

修改對應的yaml文件中的image信息

apiVersion: apps/v1
kind: Deployment
metadata:name: mydm
spec:replicas: 3selector:matchLabels:app: myapp-blue #匹配模板中labeltemplate:metadata:labels:app: myapp-bluespec:containers:- name: myapp-blueimage: janakiramm/myapp:v2imagePullPolicy: IfNotPresentports:- containerPort: 80

3.4 回滾

查看歷史版本

[root@k8s-master01 ~]# kubectl  rollout history deployment name

回滾操作

[root@k8s-master01 ~]# kubectl rollout undo deployment name --to-revision=1

四、自定義更新策略

4.1類型

  • maxSurge:和期望的副本數比,超過期望副本數最大比例(或最大值),這個值調的越大,副本更新速度越快。

  • maxUnavailable:和期望的副本數比,不可用副本數最大比例(或最大值),這個值越小,越能保證服務穩定,更新越平滑;

4.2 設置方式

  1. 按數量

  • maxUnavailable: [0, 副本數]

  • maxSurge: [0, 副本數]

  • 注兩者不能同時為0。

  1. 按比例

  • maxUnavailable: [0%, 100%] 向下取整,比如10個副本,5%的話==0.5個,但計算按照0個;

  • maxSurge: [0%, 100%] 向上取整,比如10個副本,5%的話==0.5個,但計算按照1個;

  • 兩者不能同時為0。

4.3 配置案例

apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-v1
spec:replicas: 3selector:matchLabels:app: myappversion: v1strategy:rollingUpdate:maxSurge: 1maxUnavailable: 1template:metadata:labels:app: myappversion: v1spec:containers:- name: myappimage: janakiramm/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80

一、 DaemonSet 概述

? ? ?DaemonSet 控制器能夠確保 k8s 集群所有的節點都運行一個相同的 pod 副本,當向 k8s 集群中增加 node 節點時,這個 node 節點也會自動創建一個 pod 副本,當 node 節點從 集群移除,這些 pod 也會自動刪除;刪除 Daemonset 也會刪除它們創建的 pod

DaemonSet 工作原理

?daemonset 的控制器會監聽 kuberntes 的 daemonset 對象、pod 對象、node 對象,這些被監聽的對象之變動,就會觸發 syncLoop 循環讓 kubernetes 集群朝著 daemonset 對象描述的狀態進行演進。

Daemonset 典型的應用場景

在集群的每個節點上運行存儲,比如:glusterd 或 ceph。 在每個節點上運行日志收集組件,比如:flunentd 、 logstash、filebeat 等。 在每個節點上運行監控組件,比如:Prometheus、 Node Exporter 、collectd 等。

DaemonSet 與 Deployment 的區別

Deployment 部署的副本 Pod 會分布在各個 Node 上,每個 Node 都可能運行好幾個副本。

DaemonSet 的不同之處在于:每個 Node 上最多只能運行一個副本。

二、DaemonSet 資源清單文件編寫技巧

[root@k8s-master01 ~]# kubectl explain ds
字段作用
apiVersion當前資源使用的 api 版本,跟 VERSION: apps/v1 保持 一致
kind資源類型,跟 KIND: DaemonSet 保持一致
metadata元數據,定義 DaemonSet 名字的
spec定義容器的
status狀態信息,不能改
[root@k8s-master01 ~]# kubectl??explain ds.spec
字段作用
minReadySeconds當新的 pod 啟動幾秒種后,再 kill 掉舊的 pod。
revisionHistoryLimit歷史版本
selector -required-用于匹配 pod 的標簽選擇器
template -required-定義 Pod 的模板,基于這個模板定義的所有 pod 是一樣的
updateStrategydaemonset 的升級策略
[root@k8s-master01 ~]# kubectl??explain ds.spec.template
字段作用
containers容器配置列表。每個元素都描述了一個要運行在Pod內的容器。
initContainers化容器配置列表。這些容器在主容器之前運行,用于設置環境或執行預備工作。
ephemeralContainers臨時容器配置列表。這些容器是臨時的,僅在Pod運行時存在。
restartPolicyPod的重啟策略。可以是Always、OnFailure或Never。
terminationGracePeriodSeconds優雅終止周期,以秒為單位。在強制終止Pod前,系統將等待此周期內的終止。
activeDeadlineSecondsPod活動的截止時間,超過此時間系統將殺死Pod。
dnsPolicyPod的DNS策略,可以是ClusterFirst、ClusterFirstWithHostNet、Default或None。
ContextPod的安全上下文,用于設置Pod的安全相關屬性,如RBAC規則、SELinux標簽等。
schedulerName調度器名稱,用于指定用于調度Pod的特定調度器。
tolerationsPod容忍的污點,用于允許Pod調度到有特定污點的節點上。
affinityPod的親和性設置,用于指定Pod偏好或必須運行的節點屬性。
hostNetwork如果設置為true,P將使用主機的網絡命名空間。
imagePullSecrets用于獲取鏡像的密鑰,這些密鑰會被注入到Pod中。
configMapConfigMap的名稱和鍵值對列表,用于注入配置數據到Pod
secretSecret的名稱和鍵值對列表,用于注入敏感數據到Pod。
volumeMounts卷掛載配置列表,用于指定Pod中容器如何掛載卷。
volumes卷配置列表,為Pod中的容器存儲卷。

清單模版

apiVersion: apps/v1
kind: DaemonSet
metadata:name: pod-controller ? ? ? ? ? ? ? ? ? ? ?# ds名稱 ? ? ? ? ? ? ? ? ? ? ?labels: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 給ds打標簽controller: daemonset
spec:revisionHistoryLimit: 3 ? ? ? ? ? ? ? ? ? # 保留歷史版本數量,默認為10updateStrategy: ? ? ? ? ? ? ? ? ? ? ? ? ? # Pod更新策略,默認是RollingUpdatetype: RollingUpdate ? ? ? ? ? ? ? ? ? ? # 滾動更新策略。另一種是OnDelete,其沒有子屬性配置參數 rollingUpdate: ? ? ? ? ? ? ? ? ? ? ? ? ?# 當type為RollingUpdate的時候生效,為其配置參數maxSurge: 25% ? ? ? ? ? ? ? ? ? ? ? ? # 升級過程中可以超過期望的Pod的最大數量,可以為百分比,也可以為整數。默認是25%maxUnavailable: 25% ? ? ? ? ? ? ? ? ? # 升級過程中最大不可用狀態的Pod數量,可以為百分比,也可以為整數。默認是25%selector: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 選擇器,通過該控制器管理哪些podmatchLabels: ? ? ? ? ? ? ? ? ? ? ? ? ? ?# Labels匹配規則。和matchExpressions類似app: nginx-pod                        ###或者matchExpressions: ? ? ? ? ? ? ? ? ? ? # Expressions匹配規則。和matchLabels類似 - {key: app, operator: 'In', values: ["nginx-pod"]} template: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # pod副本創建模板。屬性和Pod的屬性一樣metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latestports:- name: nginx-portcontainerPort: 80protocol: TCP

三、DaemonSet 使用案例

[root@k8s-master01 ~]# cat pod-controller.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:name: pod-controllerlabels:controller: daemonset
spec:selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latestports:- name: nginx-portcontainerPort: 80protocol: TCP 
##查看
[root@k8s-master01 ~]# kubectl apply -f pod-controller.yaml 
daemonset.apps/pod-controller created

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93255.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Celery在Django中的應用

Celery在Django中的應用一、項目配置二、異步任務2.1 普通用法2.1.1 通過delay2.1.2 通過apply_async2.2 高級用法2.2.1 任務回調&#xff08;Callback&#xff09;2.2.2 任務鏈&#xff08;Chaining&#xff09;2.2.3 任務組&#xff08;Group&#xff09;2.2.4 任務和弦&…

DeepSeek生成的高精度大數計算器

# 高精度計算器&#xff08;精確顯示版&#xff09;1. **精確顯示優化**&#xff1a;- 新增print_mpfr()函數專門處理MPFR數值的打印- 自動移除多余的尾隨零和小數點- 確保所有浮點結果都以完整十進制形式顯示&#xff0c;不使用科學計數法2. **浮點精度修復**&#xff1a;- 所…

08--深入解析C++ list:高效操作與實現原理

1. list介紹1.1. list概述template < class T, class Alloc allocator<T> > class list;Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions.概述&#xff1…

GraphQL從入門到精通完整指南

目錄 什么是GraphQLGraphQL核心概念GraphQL Schema定義語言查詢(Queries)變更(Mutations)訂閱(Subscriptions)Schema設計最佳實踐服務端實現客戶端使用高級特性性能優化實戰項目 什么是GraphQL GraphQL是由Facebook開發的一種API查詢語言和運行時。它為API提供了完整且易于理…

使用 Dockerfile 與 Docker Compose 結合+Docker-compose.yml 文件詳解

使用 Dockerfile 與 Docker Compose 結合的完整流程 Dockerfile 用于定義單個容器的構建過程&#xff0c;而 Docker Compose 則用于編排多個容器。以下是結合使用兩者的完整方法&#xff1a; 1. 創建 Dockerfile 在項目目錄中創建 Dockerfile 定義應用鏡像的構建過程&#xff1…

15 ABP Framework 開發工具

ABP Framework 開發工具 概述 該頁面詳細介紹了 ABP Framework 提供的開發工具和命令行界面&#xff08;CLI&#xff09;&#xff0c;用于創建、管理和定制 ABP 項目。ABP CLI 是主要開發工具&#xff0c;支持項目腳手架、模塊添加、數據庫遷移管理及常見開發任務自動化。 ABP …

力扣top100(day02-01)--鏈表01

160. 相交鏈表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {/*** 查找兩個鏈表的相交節點* param headA 第一個…

LLM 中 語音編碼與文本embeding的本質區別

直接使用語音編碼,是什么形式,和文本的區別 直接使用語音編碼的形式 語音編碼是將模擬語音信號轉換為數字信號的技術,其核心是對語音的聲學特征進行數字化表征,直接承載語音的物理聲學信息。其形式可分為以下幾類: 1. 基于波形的編碼(保留原始波形特征) 脈沖編碼調制…

模型選擇與調優

一、模型選擇與調優在機器學習中&#xff0c;模型的選擇和調優是一個重要的步驟&#xff0c;它直接影響到最終模型的性能1、交叉驗證在任何有監督機器學習項目的模型構建階段&#xff0c;我們訓練模型的目的是從標記的示例中學習所有權重和偏差的最佳值如果我們使用相同的標記示…

vue+Django農產品推薦與價格預測系統、雙推薦+機器學習預測+知識圖譜

vueflask農產品推薦與價格預測系統、雙推薦機器學習價格預測知識圖譜文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站&#xff0c;有好處&#xff01;編號: D010 技術架構: vueflaskmysqlneo4j 核心技術&#xff1a; 基…

數據分析小白訓練營:基于python編程語言的Numpy庫介紹(第三方庫)(下篇)

銜接上篇文章&#xff1a;數據分析小白訓練營&#xff1a;基于python編程語言的Numpy庫介紹&#xff08;第三方庫&#xff09;&#xff08;上篇&#xff09;&#xff08;十一&#xff09;數組的組合核心功能&#xff1a;一、生成基數組np.arange().reshape() 基礎運算功能&…

負載因子(Load Factor) :哈希表(Hash Table)中的一個關鍵性能指標

負載因子&#xff08;Load Factor&#xff09; 是哈希表&#xff08;Hash Table&#xff09;中的一個關鍵性能指標&#xff0c;用于衡量哈希表的空間利用率和發生哈希沖突的可能性。一&#xff1a;定義負載因子&#xff08;通常用希臘字母 λ 表示&#xff09;的計算公式為&…

監控插件SkyWalking(一)原理

一、介紹 1、簡介 SkyWalking 是一個 開源的 APM&#xff08;Application Performance Monitoring&#xff0c;應用性能監控&#xff09;和分布式追蹤系統&#xff0c;主要用于監控、追蹤、分析分布式系統中的調用鏈路、性能指標和日志。 它由 Apache 基金會托管&#xff0c;…

【接口自動化測試】---自動化框架pytest

目錄 1、用例運行規則 2、pytest命令參數 3、pytest配置文件 4、前后置 5、斷言 6、參數化---對函數的參數&#xff08;重要&#xff09; 7、fixture 7.1、基本用法 7.2、fixture嵌套&#xff1a; 7.3、請求多個fixture&#xff1a; 7.4、yield fixture 7.5、帶參數…

Flink Stream API 源碼走讀 - socketTextStream

概述 本文深入分析了 Flink 中 socketTextStream() 方法的源碼實現&#xff0c;從用戶API調用到最終返回 DataStream 的完整流程。 核心知識點 1. socketTextStream 方法重載鏈 // 用戶調用入口 env.socketTextStream("hostname", 9999)↓ 補充分隔符參數 env.socket…

待辦事項小程序開發

1. 項目規劃功能需求&#xff1a;添加待辦事項標記完成/未完成刪除待辦事項分類或標簽管理&#xff08;可選&#xff09;數據持久化&#xff08;本地存儲&#xff09;2. 實現功能添加待辦事項&#xff1a;監聽輸入框和按鈕事件&#xff0c;將輸入內容添加到列表。 標記完成/未完…

【C#】Region、Exclude的用法

在 C# 中&#xff0c;Region 和 Exclude 是與圖形編程相關的概念&#xff0c;通常在使用 System.Drawing 命名空間進行 GDI 繪圖時出現。它們主要用于定義和操作二維空間中的區域&#xff08;幾何區域&#xff09;&#xff0c;常用于窗體裁剪、控件重繪、圖形繪制優化等場景。 …

機器學習 - Kaggle項目實踐(3)Digit Recognizer 手寫數字識別

Digit Recognizer | Kaggle 題面 Digit Recognizer-CNN | Kaggle 下面代碼的kaggle版本 使用CNN進行手寫數字識別 學習到了網絡搭建手法學習率退火數據增廣 提高訓練效果。 使用混淆矩陣 以及對分類出錯概率最大的例子單獨拎出來分析。 最終以99.546%正確率 排在 86/1035 …

新手如何高效運營亞馬遜跨境電商:從傳統SP廣告到DeepBI智能策略

"為什么我的廣告點擊量很高但訂單轉化率卻很低&#xff1f;""如何避免新品期廣告預算被大詞消耗殆盡&#xff1f;""為什么手動調整關鍵詞和出價總是慢市場半拍&#xff1f;""競品ASIN投放到底該怎么做才有效&#xff1f;""有沒有…

【論文閱讀 | CVPR 2024 | UniRGB-IR:通過適配器調優實現可見光-紅外語義任務的統一框架】

論文閱讀 | CVPR 2024 | UniRGB-IR&#xff1a;通過適配器調優實現可見光-紅外語義任務的統一框架?1&&2. 摘要&&引言3.方法3.1 整體架構3.2 多模態特征池3.3 補充特征注入器3.4 適配器調優范式4 實驗4.1 RGB-IR 目標檢測4.2 RGB-IR 語義分割4.3 RGB-IR 顯著目…