k8s簡介、虛擬機快速搭建k8s集群、集群管理方式及K8S工作原理和組件介紹

文章目錄

    • 1、k8s簡介
      • 1.1、部署方式的變遷
      • 1.2、定義
      • 1.3、Kubernetes提供的功能
    • 2、虛擬機快速搭建k8s集群
      • 2.1、虛擬機配置(centos7 2G內存2個處理器)
      • 2.2、基礎環境準備
      • 2.3、docker安裝(易踩坑)
      • 2.4、安裝k8s組件
      • 2.5、master節點部署
      • 2.6、部署網絡插件
      • 2.7、2臺node節點的虛機加入主節點
      • 2.8、驗證集群是否部署成功
      • 2.9、設置ipvs模式
    • 3、集群管理方式
      • 3.1、分類方式
      • 3.2、master-node 架構
    • 4、K8S工作原理和組件介紹
        • 4.1、結構圖
        • 4.2、基本組件介紹
        • 4.3、部署一個應用在K8S底層的全流程
        • 4.4、原理分解
          • 4.4.1、主節點(master)
          • 4.4.2、工作節點(node)
        • 4.5、組件交互原理

1、k8s簡介

1.1、部署方式的變遷

在這里插入圖片描述

  • 傳統部署時代:
    • 在物理服務器上運行應用程序
    • 無法為應用程序定義資源邊界
    • 導致資源分配問題

例如,如果在物理服務器上運行多個應用程序,則可能會出現一個應用程序占用大部分資源的情況, 結果可能導致其他應用程序的性能下降。 一種解決方案是在不同的物理服務器上運行每個應用程序,但是由于資源利用不足而無法擴展, 并且維護許多物理服務器的成本很高。

  • 虛擬化部署時代:
    • 作為解決方案,引入了虛擬化
    • 虛擬化技術允許你在單個物理服務器的 CPU 上運行多個虛擬機(VM)
    • 虛擬化允許應用程序在 VM 之間隔離,并提供一定程度的安全
    • 一個應用程序的信息 不能被另一應用程序隨意訪問。
    • 虛擬化技術能夠更好地利用物理服務器上的資源
    • 因為可輕松地添加或更新應用程序 ,所以可以實現更好的可伸縮性,降低硬件成本等等。
    • 每個 VM 是一臺完整的計算機,在虛擬化硬件之上運行所有組件,包括其自己的操作系統。

缺點:虛擬層冗余導致的資源浪費與性能下降

  • 容器部署時代:
    • 容器類似于 VM,但可以在應用程序之間共享操作系統(OS)。
    • 容器被認為是輕量級的。
    • 容器與 VM 類似,具有自己的文件系統、CPU、內存、進程空間等。
    • 由于它們與基礎架構分離,因此可以跨云和 OS 發行版本進行移植。
    • 參照【Docker隔離原理- namespace 6項隔離(資源隔離)與 cgroups 8項資源限制(資源限制)】

裸金屬:真正的物理服務器

容器優勢:

  • 敏捷性 敏捷應用程序的創建和部署:與使用 VM 鏡像相比,提高了容器鏡像創建的簡便性和效率。
  • 及時性 持續開發、集成和部署:通過快速簡單的回滾(由于鏡像不可變性),支持可靠且頻繁的 容器鏡像構建和部署。
  • **解耦性:**關注開發與運維的分離:在構建/發布時創建應用程序容器鏡像,而不是在部署時。 從而將應用程序與基礎架構分離。
  • 可觀測性 可觀察性不僅可以顯示操作系統級別的信息和指標,還可以顯示應用程序的運行狀況和其他指標信號。
  • 跨平臺 跨開發、測試和生產的環境一致性:在便攜式計算機上與在云中相同地運行。
  • 可移植 跨云和操作系統發行版本的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方運行。
  • 簡易性 以應用程序為中心的管理:提高抽象級別,從在虛擬硬件上運行 OS 到使用邏輯資源在 OS 上運行應用程序。
  • 大分布式 松散耦合、分布式、彈性、解放的微服務:應用程序被分解成較小的獨立部分, 并且可以動態部署和管理 - 而不是在一臺大型單機上整體運行。
  • 隔離性 資源隔離:可預測的應用程序性能。
  • 高效性 資源利用:高效率和高密度

1.2、定義

Kubernetes 是一個可移植的、可擴展的開源平臺,用于管理容器化的工作負載和服務,可促進聲明式配置和自動化。 Kubernetes 擁有一個龐大且快速增長的生態系統。Kubernetes 的服務、支持和工具廣泛可用。

1.3、Kubernetes提供的功能

  • 服務發現和負載均衡
    Kubernetes 可以使用 DNS 名稱或自己的 IP 地址公開容器,如果進入容器的流量很大, Kubernetes 可以負載均衡并分配網絡流量,從而使部署穩定。

  • 存儲編排
    Kubernetes 允許你自動掛載你選擇的存儲系統,例如本地存儲、公共云提供商等。

  • 自動部署和回滾
    你可以使用 Kubernetes 描述已部署容器的所需狀態,它可以以受控的速率將實際狀態 更改為期望狀態。例如,你可以自動化 Kubernetes 來為你的部署創建新容器, 刪除現有容器并將它們的所有資源用于新容器。

  • 自動完成裝箱計算
    Kubernetes 允許你指定每個容器所需 CPU 和內存(RAM)。 當容器指定了資源請求時,Kubernetes 可以做出更好的決策來管理容器的資源。

  • 自我修復
    Kubernetes 重新啟動失敗的容器、替換容器、殺死不響應用戶定義的 運行狀況檢查的容器,并且在準備好服務之前不將其通告給客戶端。

  • 密鑰與配置管理
    Kubernetes 允許你存儲和管理敏感信息,例如密碼、OAuth 令牌和 ssh 密鑰。 你可以在不重建容器鏡像的情況下部署和更新密鑰和應用程序配置,也無需在堆棧配置中暴露密鑰

為了生產環境的容器化大規模應用編排,必須有一個自動化的框架或系統

2、虛擬機快速搭建k8s集群

2.1、虛擬機配置(centos7 2G內存2個處理器)

建議最小硬件配置:2核CPU、2G內存、20G硬盤 服務器最好可以訪問

名稱IP
master192.168.40.128
node01192.168.40.129
node02192.168.40.130

2.2、基礎環境準備

為三臺虛擬機設置主機名
hostnamectl set-hostname k8s-master / k8s-node01 / k8s-node02 ==> 三臺主機分別設置主機名
hostnamectl status
echo “127.0.0.1 $(hostname)” >> /etc/hosts

關閉 selinux
sed -i ‘s/enforcing/disabled/’ /etc/selinux/config
setenforce 0

關閉 swap
swapoff -a
sed -ri ‘s/.swap./#&/’ /etc/fstab

將橋接的 IPv4 流量傳遞到 iptables 的鏈
修改 /etc/sysctl.conf
如果有配置,則修改
sed -i “s#^net.ipv4.ip_forward.#net.ipv4.ip_forward=1#g" /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.
#net.bridge.bridge-nf-call-ip6tables=1#g” /etc/sysctl.conf
sed -i “s#^net.bridge.bridge-nf-call-iptables.#net.bridge.bridge-nf-call-iptables=1#g" /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.disable_ipv6.
#net.ipv6.conf.all.disable_ipv6=1#g” /etc/sysctl.conf
sed -i “s#^net.ipv6.conf.default.disable_ipv6.#net.ipv6.conf.default.disable_ipv6=1#g" /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.lo.disable_ipv6.
#net.ipv6.conf.lo.disable_ipv6=1#g” /etc/sysctl.conf
sed -i “s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g” /etc/sysctl.conf
可能沒有,追加
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
echo “net.bridge.bridge-nf-call-ip6tables = 1” >> /etc/sysctl.conf
echo “net.bridge.bridge-nf-call-iptables = 1” >> /etc/sysctl.conf
echo “net.ipv6.conf.all.disable_ipv6 = 1” >> /etc/sysctl.conf
echo “net.ipv6.conf.default.disable_ipv6 = 1” >> /etc/sysctl.conf
echo “net.ipv6.conf.lo.disable_ipv6 = 1” >> /etc/sysctl.conf
echo “net.ipv6.conf.all.forwarding = 1” >> /etc/sysctl.conf
執行命令以應用
sysctl -p

2.3、docker安裝(易踩坑)

# 1.卸載舊的版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
# 2.安裝基本的安裝包
sudo yum install -y yum-utils
# 3.設置鏡像倉庫
sudo yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 阿里云鏡像
# 更像軟件包索引  
yum makecache fast  
# 4.安裝docker引擎
yum install docker-ce docker-ce-cli containerd.io  # docker-ce 社區版 ee 企業版
# 5.啟動Docker
systemctl enable docker && systemctl start docker  # 代表啟動成功
# 6.測試docker可以docker的常用命令
docker version
docker images
docker ps
# 7.配置鏡像加速
#配置docker加速
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 重啟docker
systemctl restart docker
# 查看docker信息
docker info

2.4、安裝k8s組件

配置軟件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安裝指定版本并啟動

yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet && systemctl start kubelet

2.5、master節點部署

192.168.40.128換成自己主節點的IP地址

kubeadm init \--apiserver-advertise-address=192.168.40.128 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.23.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=all######按照提示繼續######
## init完成后第一步:復制相關文件夾
## To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
## 導出環境變量
## Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf

2.6、部署網絡插件

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

2.7、2臺node節點的虛機加入主節點

##在兩臺node節點虛擬機上執行master節點kubeadm init 后生成的join代碼
kubeadm join 192.168.40.128:6443 --token ixvxxd.oamu833eimbkvwt6 --discovery-token-ca-cert-hash sha256:fb6c95e8999315d12267287162973c08e319c731ac5f706d22199b2dfe08b8c2 
**建議先重啟node上的kubeadm**
kubeadm reset## 過期怎么辦
kubeadm token create --print-join-command
kubeadm token create --ttl 0 --print-join-command
kubeadm join --token y1eyw5.ylg568kvohfdsfco --discovery-token-ca-cert-hash sha256: 6c35e4f73f72afd89bf1c8c303ee55677d2cdb1342d67bb23c852aba2efc7c73

2.8、驗證集群是否部署成功

#獲取所有節點
kubectl get nodes#給節點打標簽
## k8s中萬物皆對象。node:機器  Pod:應用容器
###加標簽
kubectl label node k8s-02 node-role.kubernetes.io/worker=''
###去標簽
kubectl label node k8s-02 node-role.kubernetes.io/worker-
## k8s集群,機器重啟了會自動再加入集群,master重啟了會自動再加入集群控制中心

2.9、設置ipvs模式

k8s整個集群為了訪問通;默認是用iptables,性能下(kube-proxy在集群之間同步iptables的內容)#1、查看默認kube-proxy 使用的模式
kubectl logs -n kube-system kube-proxy-28xv4
#2、需要修改 kube-proxy 的配置文件,修改mode 為ipvs。默認iptables,但是集群大了以后就很慢
kubectl edit cm kube-proxy -n kube-system
修改如下ipvs:excludeCIDRs: nullminSyncPeriod: 0sscheduler: ""strictARP: falsesyncPeriod: 30skind: KubeProxyConfigurationmetricsBindAddress: 127.0.0.1:10249mode: "ipvs"###修改了kube-proxy的配置,為了讓重新生效,需要殺掉以前的Kube-proxykubectl get pod -A|grep kube-proxykubectl delete pod kube-proxy-pqgnt -n kube-system
### 修改完成后可以重啟kube-proxy以生效

文章目錄

    • 1、k8s簡介
      • 1.1、部署方式的變遷
      • 1.2、定義
      • 1.3、Kubernetes提供的功能
    • 2、虛擬機快速搭建k8s集群
      • 2.1、虛擬機配置(centos7 2G內存2個處理器)
      • 2.2、基礎環境準備
      • 2.3、docker安裝(易踩坑)
      • 2.4、安裝k8s組件
      • 2.5、master節點部署
      • 2.6、部署網絡插件
      • 2.7、2臺node節點的虛機加入主節點
      • 2.8、驗證集群是否部署成功
      • 2.9、設置ipvs模式
    • 3、集群管理方式
      • 3.1、分類方式
      • 3.2、master-node 架構
    • 4、K8S工作原理和組件介紹
        • 4.1、結構圖
        • 4.2、基本組件介紹
        • 4.3、部署一個應用在K8S底層的全流程
        • 4.4、原理分解
          • 4.4.1、主節點(master)
          • 4.4.2、工作節點(node)
        • 4.5、組件交互原理

3、集群管理方式

3.1、分類方式

主從:
(1)主從同步/復制 (MYSQL 主 – MYSQL 從 => MYSQL就是典型的主從同步方式)
(2)主管理從 (K8S屬于主管理從的方式)
分片 :也叫數據集群
(1)每個機器上都一樣
(2)每個機器都之存儲一部分東西,所有機器上的數據加起來是完整的

3.2、master-node 架構

在這里插入圖片描述

master 和 worker怎么交互
master決定worker里面都有什么
worker只是和master (API) 通信; 每一個節點自己干自己的活
程序員使用UI或者CLI操作k8s集群的master,就可以知道整個集群的狀況

4、K8S工作原理和組件介紹

4.1、結構圖

在這里插入圖片描述

4.2、基本組件介紹

master節點(Control Plane【控制面板】):master節點控制整個集群master節點上有一些核心組件:- Controller  Manager:控制管理器
- etcd:鍵值數據庫(redis)【記賬本,記事本】
- scheduler:調度器
- api server:api網關(所有的控制都需要通過api-server)node節點(worker工作節點):- kubelet(監工):每一個node節點上必須安裝的組件。
- kube-proxy:代理, 代理網絡

4.3、部署一個應用在K8S底層的全流程

開發人員:調用CLI或者使用K8S頁面管理工具告訴master,我們現在要部署一個tomcat應用- 程序員的所有調用都先去master節點的網關api-server,這是matser的唯一入口(類似于mvc模式中的c層)
- 收到的請求先交給master的api-server,由api-server交給controller-mannager進行控制
- controller-mannager 進行 應用部署
- controller-mannager 會生成一次部署信息。 tomcat --image:tomcat6 --port 8080, 但是真正不部署應用
- 部署信息被記錄在etcd中
- scheduler調度器從etcd數據庫中,拿到要部署的應用,開始調度,然后看哪個節點比較合適
- scheduler把算出來的調度信息再放到etcd中
- 每一個node節點的監控kubelet,隨時和master保持聯系的(給api-server發送請求不斷獲取最新數據),所有節點的kubelet就會從master
- 假設node2的kubelet最終收到了命令,要部署。
- kubelet就自己run一個應用在當前機器上,隨時給master匯報當前應用的狀態信息,分配ip
- node和master是通過master的api-server聯系的
- 每一個機器上的kube-proxy能知道集群的所有網絡,只要node訪問別人或者別人訪問node,node上的kube-proxy網絡代理自動計算進行流量轉發

下圖和上圖一樣的,再理解一下
在這里插入圖片描述

4.4、原理分解

4.4.1、主節點(master)

在這里插入圖片描述
快速介紹

  • master也要裝kubelet和kubeproxy
  • 前端訪問(UI\CLI):
  • kube-apiserver:
  • scheduler:
  • controller manager:
  • etcd
  • kubelet+kubeproxy每一個節點的必備+docker(容器運行時環境)
4.4.2、工作節點(node)

在這里插入圖片描述
快速介紹:

  • Pod:
    • docker run 啟動的是一個container(容器),容器是docker的基本單位,一個應用是一個容器
    • kubelet run 啟動的一個應用稱為一個Pod;Pod是k8s的基本單位。
      • Pod是容器的一個再封裝
      • 應用 => pod => docker的容器
      • 一個容器往往代表不了一個基本應用。博客(php+mysql合起來完成)
      • 準備一個Pod 可以包含多個 container;一個Pod代表一個基本的應用。
      • IPod(看電影、聽音樂、玩游戲)【一個基本產品,原子】
      • Pod(music container、movie container)【一個基本產品,原子的】
  • Kubelet:監工,負責交互master的api-server以及當前機器的應用啟停等,在master機器就是master的小助手。每一臺機器真正干活的都是這個 Kubelet
  • Kube-proxy:

4.5、組件交互原理

在這里插入圖片描述
部署流程再說明

想讓k8s部署一個tomcat?0、開機默認所有節點的kubelet、master節點的scheduler(調度器)、controller-manager(控制管理器)一直監聽master的api-server發來的事件變化(for ::)1、程序員使用命令行工具: kubectl ; kubectl create deploy tomcat --image=tomcat8(告訴master讓集群使用tomcat8鏡像,部署一個tomcat應用)2、kubectl命令行內容發給api-server,api-server保存此次創建信息到etcd3、etcd給api-server上報事件,說剛才有人給我里面保存一個信息。(部署Tomcat[deploy]4、controller-manager監聽到api-server的事件,是 (部署Tomcat[deploy]5、controller-manager 處理這個 (部署Tomcat[deploy])的事件。controller-manager會生成Pod的部署信息【pod信息】6、controller-manager 把Pod的信息交給api-server,再保存到etcd7、etcd上報事件【pod信息】給api-server。8、scheduler專門監聽 【pod信息】 ,拿到 【pod信息】的內容,計算,看哪個節點合適部署這個Pod【pod調度過后的信息(node: node-02)】,9、scheduler把 【pod調度過后的信息(node: node-02)】交給api-server保存給etcd10、etcd上報事件【pod調度過后的信息(node: node-02)】,給api-server11、其他節點的kubelet專門監聽 【pod調度過后的信息(node: node-02)】 事件,集群所有節點kubelet從api-server就拿到了 【pod調度過后的信息(node: node-02)】 事件12、每個節點的kubelet判斷是否屬于自己的事情;node-02的kubelet發現是他的事情13、node-02的kubelet啟動這個pod。匯報給master當前啟動好的所有信息

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

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

相關文章

在linux系統中修改mysql數據目錄

目錄 1.查看mysql默認存儲路徑2.停止mysql服務3.移動或復制原數據目錄4.修改配置文件5.修改啟動文件6.配置AppArmor訪問控制規則7.重啟apparmor服務8.啟動mysql 1.查看mysql默認存儲路徑 在/etc/mysql/mysql.conf.d/mysqld.cnf中的datadir配置項。 datadir /var/lib/mysql2…

提高批量爬蟲工作效率

大家好&#xff01;作為一名專業的爬蟲程序員&#xff0c;我今天要和大家分享一些關于提高批量爬蟲工作效率的實用技巧。無論你是要批量采集圖片、文本還是視頻數據&#xff0c;這些經驗都能幫助你在大規模數據采集中事半功倍。廢話不多說&#xff0c;讓我們開始吧&#xff01;…

SUMO 創建帶有停車位的充電站 在停車位上充電

前言 SUMO提供的Charging Station是沒有停車位的&#xff0c;車輛只有在通過充電站區域或者停在充電站區域內時才能被充電&#xff0c;這時充電的車輛就會占用道路。然而&#xff0c;真實世界中的情況通常是充電站設在路邊&#xff0c;且提供一定量的車位用于停車&#xff0c;…

半導體自動化專用靜電消除器主要由哪些部分組成

半導體自動化專用靜電消除器是一種用于消除半導體生產過程中的靜電問題的設備。由于半導體制造過程中對靜電的敏感性&#xff0c;靜電可能會對半導體器件的質量和可靠性產生很大的影響&#xff0c;甚至造成元件損壞。因此&#xff0c;半導體生產中采用專用的靜電消除器是非常重…

setfacl給jenkins用戶加權限

用setfacl給jenkins用戶加一個/tmp的權限 setfacl是set File ACL&#xff08;訪問控制列表&#xff09;的縮寫 如果你想遞歸地將它應用到所有子目錄&#xff1a;添加-R標志&#xff0c;如下所示&#xff1a; yum -y install aclsetfacl -R -m u:jenkins:rwx /tmp Give speci…

Linux Day09

目錄 一、進程替換 二、Linux信號的使用 2.1 kill() 發送信號 2.2 signal() 改變進程對信號的響應方式 2.3 處理僵死進程 2.3.1 在信號處理函數中調用wait 2.3.2 Linux特有的 2.3.3 結果 一、進程替換 linux上創造一個新進程&#xff0c;沒有create創建方法&#xf…

數據分析15——office中的Excel基礎技術匯總

0、前言&#xff1a; 這部分總結就是總結每個基礎技術的定義&#xff0c;在了解基礎技術名稱和定義后&#xff0c;方便對相關技術進行檢索學習。筆記不會詳細到所有操作都說明&#xff0c;但會把基礎操作的名稱及作用說明&#xff0c;可自行檢索。本文對于大部分讀者有以下作用…

優化視頻流:利用美顏SDK提升直播質量的方法

隨著互聯網的迅猛發展&#xff0c;視頻直播已成為人們分享、交流和娛樂的重要方式。然而&#xff0c;在實際的直播過程中&#xff0c;視頻畫質可能受到諸多因素的影響&#xff0c;例如攝像頭品質、網絡狀況等。為了提升觀眾的體驗和吸引更多的觀眾&#xff0c;美顏技術逐漸成為…

Java Map、JSONObject、實體類互轉

文章目錄 前言Map、JSONObject、實體類互轉 前言 使用庫 com.alibaba.fastjson2&#xff0c;可完成大部分JSON轉換操作。 詳情參考文章: Java FASTJSON2 一個性能極致并且簡單易用的JSON庫 Map、JSONObject、實體類互轉 import com.alibaba.fastjson2.JSON; import com.alib…

Git分享-規范/建議/技巧

1. Git多人協作開發流程圖 1.1 processOn默認的模板 1.2 改造之后 https://www.processon.com/view/link/64ccaf56a433c931b2f9428a 訪問密碼&#xff1a;512I ① 總流程圖 ② feat分支&#xff08;功能/需求 分支&#xff09;流程 ③ bugfix分支&#xff08;緊急補丁分支&…

Qt平滑彈出頁面

目標功能&#xff1a; (1)按下btn&#xff0c;彈出綠色頁面。 (2)按下btn2,綠色頁面隱藏。 (3)按下左邊余下的區域&#xff0c;綠色頁面也隱藏。 (4)平滑地顯示和隱藏 效果&#xff1a; form.h #ifndef FORM_H #define FORM_H#include <QWidget>namespace Ui { class…

上半年營收19億,金融壹賬通第二增長曲線“加速上坡”

8月16日&#xff0c;壹賬通金融科技有限公司&#xff08;下稱“金融壹賬通”&#xff09;發布了截至2023年6月30日中期業績報告。 根據財報&#xff0c;2023年上半年&#xff0c;金融壹賬通實現營收18.99億元&#xff0c;毛利潤為6.96億元&#xff1b;歸母凈利潤率從-26.1%提升…

卷積神經網絡全解!CNN結構、訓練與優化全維度介紹!

目錄 一、引言1.1 背景和重要性1.2 卷積神經網絡概述 二、卷積神經網絡層介紹2.1 卷積操作卷積核與特征映射卷積核大小多通道卷積 步長與填充步長填充 空洞卷積&#xff08;Dilated Convolution&#xff09;分組卷積&#xff08;Grouped Convolution&#xff09; 2.2 激活函數R…

相機的位姿在地固坐標系ECEF和ENU坐標系的轉換

在地球科學和導航領域&#xff0c;通常使用地心地固坐標系&#xff08;ECEF&#xff0c;Earth-Centered, Earth-Fixed&#xff09;和東北天坐標系&#xff08;ENU&#xff0c;East-North-Up&#xff09;來描述地球上的位置和姿態。如下圖所示&#xff1a; ?地心地固坐標ecef和…

Linux內核的兩種安全策略:基于inode的安全與基于文件路徑的安全

實現系統安全的策略 在Linux中&#xff0c;一切且為文件&#xff0c;實現系統安全的策略主要可分為兩種&#xff1a;基于inode的安全、基于文件路徑的安全。 基于inode的安全 為文件引入安全屬性&#xff0c;安全屬性不屬于文件內容&#xff0c;它是文件的元數據&#xff0c…

EV PV AC SPI CPI TCPI

SPI EV / PV CPI EV / ACCPI 1.25 SPI 0.8 PV 10 000 BAC 100 000EV PV * SPI 10 000 * 0.8 8000 AC EV / CPI 8000 / 1.25 6400TCPI (BAC - EV) / (BAC -AC) (100 000 - 8 000) / (100 000 - 6 400) 92 000 / 93 600 0.98290598

RabbitMQ面試題

1. 什么是MQ MQ 就是消息隊列。是軟件和軟件進行通信的中間件產品 2. MQ的優點 異步處理 - 相比于傳統的串行、并行方式&#xff0c;提高了系統吞吐量。 應用解耦 - 系統間通過消息通信&#xff0c;不用關心其他系統的處理。 流量削鋒 - 可以通過消息隊列長度控制請求量…

Selenium webdriver_manager根據瀏覽器版本自動下載對應驅動程序

前言 webdriver_manager是什么&#xff1f; webdriver_manager 是 Python 中的一個庫&#xff0c;用于管理 Web 驅動程序。它的作用是自動下載和設置不同瀏覽器&#xff08;如 Chrome、Firefox、Edge 等&#xff09;的 Web 驅動程序&#xff0c;以便在自動化測試中使用這些瀏…

每日一題:leetcode1338 3n塊披薩

給你一個披薩&#xff0c;它由 3n 塊不同大小的部分組成&#xff0c;現在你和你的朋友們需要按照如下規則來分披薩&#xff1a; 你挑選 任意 一塊披薩。Alice 將會挑選你所選擇的披薩逆時針方向的下一塊披薩。Bob 將會挑選你所選擇的披薩順時針方向的下一塊披薩。重復上述過程…

SCSS 學習筆記 和 vscode下載live sass compiler插件配置

1、下載livelive sass compiler插件并配置 // 在 已有代碼 下面 添加下面 代碼&#xff0c;一般剛剛下載打開最后一行是&#xff1a;// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面復制進去保存就行"liveSassCompile.settings.autoprefix&qu…