k8s环境部署配置
目录
一.虚拟机准备
二.基础环境配置(各个节点都做)
1.IP和hosts解析
2.防火墙和selinux
3.安装基本软件
4.配置时间同步
5.禁用swap分区
6.修改内核参数并重载
7.配置ipvs
三.docker环境(各个节点都做)
1.配置软件源并安装docker-ce
2.配置docker加速
四.cri环境配置(各个节点都做)
1.下载查看版本
2.配置服务启动
五.harbor环境(只有register节点做)
1.安装harbor配置
2.验证
六.集群初始化
1.下载k8s所需软件(各个节点都做)
2.在harbor上新建项目,并执行脚本
3.master节点初始化 (只在master节点做)
4.执行成功后出现此界面后进行权限设置
5.各个节点根据master初始化成功后的参数来加入(各个节点都做)
七.收尾工作(master节点做)
1.命令补全配置
2.网络配置
(1)下载
(2)执行脚本文件
(3)应用配置文件并验证
一.虚拟机准备
主机(我的主机名) | IP |
master(node1-190.com) | 192.168.2.190 |
node1(node2-191.com) | 192.168.2.191 |
node2(node3-192.com) | 192.168.2.192 |
node3(node4-193.com) | 192.168.2.193 |
register(node5-196.com) | 192.168.2.196 |
二.基础环境配置(各个节点都做)
1.IP和hosts解析
[root@node1-190 ~]# vim /etc/hosts192.168.2.190 node1-190.com
192.168.2.191 node2-191.com
192.168.2.192 node3-192.com
192.168.2.193 node4-193.com
192.168.2.196 node5-196.com
2.防火墙和selinux
[root@node1-190 ~]# systemctl status firewalld.service;getenforce
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)
Disabled#临时
systemctl stop firewalld
setenforce 0
#禁用
systemctl disable firewalld
sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
3.安装基本软件
yum install -y wget tree bash-completion lrzsz psmisc net-tools vim chrony
4.配置时间同步
[root@node1-190 ~]# vim /etc/chrony.conf
:3,6 s/^/# #注释掉原有行
server ntp1.aliyun.com iburst[root@node1-190 ~]# systemctl restart chronyd[root@node1-190 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 120.25.115.20 2 8 341 431 -357us[ -771us] +/- 20ms
5.禁用swap分区
[root@node1-190 ~]# swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab && free -mtotal used free shared buff/cache available
Mem: 10376 943 8875 11 557 9178
Swap: 0 0 0
6.修改内核参数并重载
[root@node1-190 ~]# cat >> /etc/sysctl.d/k8s.conf << EOF
> vm.swappiness=0
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF[root@node1-190 ~]# modprobe br_netfilter && modprobe overlay && sysctl -p /etc/sysctl.d/k8s.conf
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
7.配置ipvs
[root@node1-190 ~]# yum install ipset ipvsadm -y[root@node1-190 ~]# cat <<EOF > /etc/sysconfig/modules/ipvs.modules
> #!/bin/bash
> modprobe -- ip_vs
> modprobe -- ip_vs_rr
> modprobe -- ip_vs_wrr
> modprobe -- ip_vs_sh
> modprobe -- nf_conntrack
> EOF[root@node1-190 ~]# chmod +x /etc/sysconfig/modules/ipvs.modules && /bin/bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
nf_conntrack_ipv4 15053 2
nf_defrag_ipv4 12729 1 nf_conntrack_ipv4
ip_vs_sh 12688 0
ip_vs_wrr 12697 0
ip_vs_rr 12600 0
ip_vs 145458 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 139264 7 ip_vs,nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4
libcrc32c 12644 4 xfs,ip_vs,nf_nat,nf_conntrack
三.docker环境(各个节点都做)
1.配置软件源并安装docker-ce
[root@node1-190 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2[root@node1-190 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@node1-190 ~]# yum install -y docker-ce
2.配置docker加速
[root@node1-190 ~]# cat >> /etc/docker/daemon.json <<-EOF
> {
> "registry-mirrors": [
> "http://74f21445.m.daocloud.io",
> "https://registry.docker-cn.com",
> "http://hub-mirror.c.163.com",
> "https://docker.mirrors.ustc.edu.cn"
> ],
> "insecure-registries": ["node5-196.com"], #写register节点的域名,各个节点的这个文件都写register的域名
> "exec-opts": ["native.cgroupdriver=systemd"]
> }
> EOF[root@node1-190 ~]# systemctl daemon-reload && systemctl start docker
四.cri环境配置(各个节点都做)
1.下载查看版本
链接:https://pan.baidu.com/s/1rRIqV-GO6ETe4N9glNs2cg
提取码:km17
[root@node1-190 ~]# tar -xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
[root@node1-190 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxrwxr-x 2 sulibao sulibao 25 Jun 30 03:31 cri-dockerd
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Jul 23 08:59 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src[root@node1-190 local]# mv cri-dockerd/cri-dockerd /usr/local/bin/[root@node1-190 local]# cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)
2.配置服务启动
[root@node1-190 local]# vim /etc/systemd/system/cri-dockerd.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target[root@node1-190 local]# vim /etc/systemd/system/cri-dockerd.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target[root@node1-190 ~]# systemctl daemon-reload
[root@node1-190 ~]# systemctl start cri-dockerd.service
[root@node1-190 ~]# systemctl enable cri-dockerd.service
五.harbor环境(只有register节点做)
1.安装harbor配置
[root@node5-196 ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose[root@node5-196 ~]# chmod +x /usr/local/bin/docker-compose [root@node5-196 ~]# tar -xf harbor-offline-installer-v2.8.4.tgz -C /usr/local/
[root@node5-196 ~]# cd /usr/local/
[root@node5-196 local]# ll[root@node5-196 local]# cd harbor/
[root@node5-196 harbor]# ll
total 597536
-rw-r--r-- 1 root root 3639 Aug 15 17:53 common.sh
-rw-r--r-- 1 root root 611834153 Aug 15 17:54 harbor.v2.8.4.tar.gz
-rw-r--r-- 1 root root 12499 Aug 15 17:53 harbor.yml.tmpl
-rwxr-xr-x 1 root root 2725 Aug 15 17:53 install.sh
-rw-r--r-- 1 root root 11347 Aug 15 17:53 LICENSE
-rwxr-xr-x 1 root root 1881 Aug 15 17:53 prepare[root@node5-196 harbor]# cp harbor.yml.tmpl harbor.yml[root@node5-196 harbor]# vim harbor.yml
# Configuration file of Harbor# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: node5-196.com #修改为自己的主机名# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 80 #注意端口# https related config
#https: #https区块全部注释# https port for harbor, default is 443#port: 443# The path of cert and key files for nginx#certificate: /your/certificate/path#private_key: /your/private/key/path[root@node5-196 harbor]# ./install.sh #安装
[root@node5-196 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/harbor-exporter v2.8.4 b8d33e28ec68 2 weeks ago 97.7MB
goharbor/redis-photon v2.8.4 7b7324d651ca 2 weeks ago 120MB
goharbor/trivy-adapter-photon v2.8.4 91d8e9f0b21a 2 weeks ago 464MB
goharbor/notary-server-photon v2.8.4 a46f91560454 2 weeks ago 113MB
goharbor/notary-signer-photon v2.8.4 da66bd8d944b 2 weeks ago 110MB
goharbor/harbor-registryctl v2.8.4 805b38ca6bee 2 weeks ago 141MB
goharbor/registry-photon v2.8.4 756769e94123 2 weeks ago 79MB
goharbor/nginx-photon v2.8.4 375018db778b 2 weeks ago 116MB
goharbor/harbor-log v2.8.4 8a2045fb24d2 2 weeks ago 124MB
goharbor/harbor-jobservice v2.8.4 97808fc10f64 2 weeks ago 141MB
goharbor/harbor-core v2.8.4 c26fcd0714d8 2 weeks ago 164MB
goharbor/harbor-portal v2.8.4 4a8b0205c0f9 2 weeks ago 124MB
goharbor/harbor-db v2.8.4 5b8af16d7420 2 weeks ago 174MB
goharbor/prepare v2.8.4 bdbf974d86ce 2 weeks ago 166MB[root@node5-196 harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"http://74f21445.m.daocloud.io",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"],"insecure-registries": ["192.168.2.196"], "insecure-registries": ["node5-196.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
[root@node5-196 harbor]# tail -1 /etc/hosts
192.168.2.196 node5-196.com[root@node5-196 harbor]# systemctl restart docker
[root@node5-196 harbor]# docker-compose up -d
2.验证
[root@node5-196 harbor]# docker login http://node5-196.com #进行harbor上镜像的推送和拉取验证
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded[root@node5-196 harbor]# docker tag busybox:latest node5-196.com/library/busybox:latest[root@node5-196 harbor]# docker push node5-196.com/library/busybox:latest
The push refers to repository [node5-196.com/library/busybox]
3d24ee258efc: Layer already exists
latest: digest: sha256:023917ec6a886d0e8e15f28fb543515a5fcd8d938edb091e8147db4efed388ee size: 528[root@node5-196 harbor]# docker pull node5-196.com/library/busybox:latest
latest: Pulling from library/busybox
Digest: sha256:023917ec6a886d0e8e15f28fb543515a5fcd8d938edb091e8147db4efed388ee
Status: Image is up to date for node5-196.com/library/busybox:latest
node5-196.com/library/busybox:latest
[root@node5-196 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/harbor-exporter v2.8.4 b8d33e28ec68 2 weeks ago 97.7MB
goharbor/redis-photon v2.8.4 7b7324d651ca 2 weeks ago 120MB
goharbor/trivy-adapter-photon v2.8.4 91d8e9f0b21a 2 weeks ago 464MB
goharbor/notary-server-photon v2.8.4 a46f91560454 2 weeks ago 113MB
goharbor/notary-signer-photon v2.8.4 da66bd8d944b 2 weeks ago 110MB
goharbor/harbor-registryctl v2.8.4 805b38ca6bee 2 weeks ago 141MB
goharbor/registry-photon v2.8.4 756769e94123 2 weeks ago 79MB
goharbor/nginx-photon v2.8.4 375018db778b 2 weeks ago 116MB
goharbor/harbor-log v2.8.4 8a2045fb24d2 2 weeks ago 124MB
goharbor/harbor-jobservice v2.8.4 97808fc10f64 2 weeks ago 141MB
goharbor/harbor-core v2.8.4 c26fcd0714d8 2 weeks ago 164MB
goharbor/harbor-portal v2.8.4 4a8b0205c0f9 2 weeks ago 124MB
goharbor/harbor-db v2.8.4 5b8af16d7420 2 weeks ago 174MB
goharbor/prepare v2.8.4 bdbf974d86ce 2 weeks ago 166MB
busybox latest a416a98b71e2 6 weeks ago 4.26MB
node5-196.com/library/busybox latest a416a98b71e2 6 weeks ago 4.26MB
windows端作域名映射
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindowsPS C:\WINDOWS\system32> cd .\drivers\etc\
PS C:\WINDOWS\system32\drivers\etc> notepad .\hosts
PS C:\WINDOWS\system32\drivers\etc>
推送后的结果
六.集群初始化
1.下载k8s所需软件(各个节点都做)
[root@node4-193 ~]# 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
[root@node4-193 ~]#
[root@node4-193 ~]# yum install kubeadm kubectl kubelet -y
[root@node1-190 ~]# systemctl start kubelet
2.在harbor上新建项目,并执行脚本
[root@node1-190 ~]# vim dockerimages.sh
#!/bin/bash
images=$(kubeadm config images list --kubernetes-version=1.28.0 | awk -F '/' '{print $NF}')
for i in ${images}
dodocker pull registry.aliyuncs.com/google_containers/$idocker tag registry.aliyuncs.com/google_containers/$i node5-196.com/google_containers/$i #需要修改为刚创建的harbor的仓库地址docker push node5-196.com/google_containers/$idocker rmi registry.aliyuncs.com/google_containers/$i
done[root@node1-190 ~]# docker login node5-196.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded[root@node1-190 ~]# bash dockerimages.sh[root@node1-190 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node5-196.com/google_containers/kube-apiserver v1.28.0 bb5e0dde9054 2 weeks ago 126MB
node5-196.com/google_containers/kube-scheduler v1.28.0 f6f496300a2a 2 weeks ago 60.1MB
node5-196.com/google_containers/kube-controller-manager v1.28.0 4be79c38a4ba 2 weeks ago 122MB
node5-196.com/google_containers/kube-proxy v1.28.0 ea1030da44aa 2 weeks ago 73.1MB
node5-196.com/google_containers/etcd 3.5.9-0 73deb9a3f702 3 months ago 294MB
node5-196.com/google_containers/coredns v1.10.1 ead0a4a53df8 6 months ago 53.6MB
node5-196.com/google_containers/pause 3.9 e6f181688397 10 months ago 744kB
3.master节点初始化 (只在master节点做)
执行完脚本无误后执行以下命令
kubeadm init --kubernetes-version=1.28.0 \
--apiserver-advertise-address=192.168.2.190 \ #修改为master节点的IP
--image-repository node5-196.com/google_containers \ #修改为harbor仓库的地址
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=Swap \
--cri-socket=unix:///var/run/cri-dockerd.sock
4.执行成功后出现此界面后进行权限设置
[root@node1-190 ~]# mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $(id -u):$(id -g) $HOME/.kube/config && export KUBECONFIG=/etc/kubernetes/admin.conf
5.各个节点根据master初始化成功后的参数来加入(各个节点都做)
kubeadm join 192.168.2.190:6443 --token m5mkth.rb2e9rb3892fsu37 \--discovery-token-ca-cert-hash sha256:1209d580742d411fb4406953185ef9f27522b3ba150b8726fd39f364628d0942 \--cri-socket=unix:///var/run/cri-dockerd.sock
出现此界面即成功
[root@node1-190 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1-190.com NotReady control-plane 121m v1.28.1
node2-191.com NotReady <none> 104m v1.28.1
node3-192.com NotReady <none> 96m v1.28.1
node4-193.com NotReady <none> 11m v1.28.1
node5-196.com NotReady <none> 9s v1.28.1
七.收尾工作(master节点做)
1.命令补全配置
[root@node1-190 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc && echo "source <(kubeadm completion bash)" >> ~/.bashrc && source ~/.bashrc
2.网络配置
(1)下载
链接:https://pan.baidu.com/s/1TRUyPxbBZRcyyyqojquhBw
提取码:wvap
(2)执行脚本文件
[root@node1-190 ~]# vim flannel.sh
#!/bin/bash
for i in $(grep image kube-flannel.yml | grep -v '#' | awk -F '/' '{print $NF}')
dodocker pull flannel/$idocker tag flannel/$i node5-196.com/google_containers/$i #需要修改为刚创建的harbor的仓库地址docker push node5-196.com/google_containers/$idocker rmi flannel/$i
done
[root@node1-190 ~]# bash flannel.sh
[root@node1-190 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node5-196.com/google_containers/flannel v0.22.2 d73868a08083 13 days ago 70.2MB
node5-196.com/google_containers/kube-apiserver v1.28.0 bb5e0dde9054 2 weeks ago 126MB
node5-196.com/google_containers/kube-controller-manager v1.28.0 4be79c38a4ba 2 weeks ago 122MB
node5-196.com/google_containers/kube-scheduler v1.28.0 f6f496300a2a 2 weeks ago 60.1MB
node5-196.com/google_containers/kube-proxy v1.28.0 ea1030da44aa 2 weeks ago 73.1MB
node5-196.com/google_containers/flannel-cni-plugin v1.2.0 a55d1bad692b 5 weeks ago 8.04MB
node5-196.com/google_containers/etcd 3.5.9-0 73deb9a3f702 3 months ago 294MB
node5-196.com/google_containers/coredns v1.10.1 ead0a4a53df8 6 months ago 53.6MB
node5-196.com/google_containers/pause 3.9 e6f181688397 10 months ago 744kB
registry.cn-hangzhou.aliyuncs.com/google_containers/pause 3.9 e6f181688397 10 months ago 744kB[root@node1-190 ~]# sed -i '/ image:/s#docker.io/flannel#node5-196.com/google_containers#' kube-flannel.yml
(3)应用配置文件并验证
[root@node1-190 ~]# kubectl apply -f kube-flannel.yml #应用
[root@node1-190 ~]# kubectl get pod -n kube-system #验证
NAME READY STATUS RESTARTS AGE
coredns-6845c5578-g6dnk 1/1 Running 0 159m
coredns-6845c5578-z5cj4 1/1 Running 0 159m
etcd-node1-190.com 1/1 Running 0 160m
kube-apiserver-node1-190.com 1/1 Running 0 160m
kube-controller-manager-node1-190.com 1/1 Running 0 160m
kube-proxy-5k8gg 1/1 Running 0 134m
kube-proxy-b7kcg 1/1 Running 0 159m
kube-proxy-h5zrz 1/1 Running 0 142m
kube-proxy-h9gs5 1/1 Running 1 (35m ago) 38m
kube-proxy-vfx9x 1/1 Running 0 49m
kube-scheduler-node1-190.com 1/1 Running 0 160m
相关文章:

k8s环境部署配置
目录 一.虚拟机准备 二.基础环境配置(各个节点都做) 1.IP和hosts解析 2.防火墙和selinux 3.安装基本软件 4.配置时间同步 5.禁用swap分区 6.修改内核参数并重载 7.配置ipvs 三.docker环境(各个节点都做) 1.配置软件源并…...

Java之文件操作与IO
目录 一.认识文件 1.1文件是什么? 1.2文件的组织 1.3文件路径 1.4文件的分类 二.文件操作 2.1File概述 三.文件内容操作--IO 3.1JavaIO的认识 3.2Reader和Writer ⭐Reader类 ⭐Writer类 3.2FileInputStream和FileOutputStream ⭐FileInputStream类 …...

指令系统(408)
一、拓展操作码指令格式 【2017 统考】某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条、二地址指令107条,每个地址字段6位,则指令字长至少应该是( A) A、24位 B、26位 …...

Pygame中Trivia游戏解析6-3
3.3 Trivia类的show_question()函数 Trivia类的show_question()函数的作用是显示题目。主要包括显示题目框架、显示题目内容和显示题目选项等三部分。 3.3.1 显示题目的框架 在show_question()函数中,通过以下代码显示题目的框架。 print_text(font1, 210, 5, &q…...

热释电矢量传感器设计
1 概述 使用4个热释电传感器组成一个2X2的矩阵。通过曲线的相位差、 峰峰值等特征量来计算相关信息。本文使用STM32单片机设计、制作了热释电传感器矩阵;使用C#.NET设计了上位机软件。为以上研究做了试验平台。 2 硬件电路设计 2.1 热释电传感器介绍 热释电红外…...
MySql学习笔记10——视图介绍
视图 概述 view view可以看作是一张“虚拟表”,(但是他也是会作为文件存在的) 当我们通过复杂的查询语句获取一张表的时候,可以将这张表作为一个视图,和创建一个新表不同,在视图上进行的DML操作会对数据…...

【探索Linux】—— 强大的命令行工具 P.7(进程 · 进程的概念)
阅读导航 前言一、冯诺依曼体系结构二、操作系统(OS)1. 概念 三、进程1. 进程的概念2. PCB(Process Control Block)3. 查看进程 四、fork函数1. 函数简介2. 调用方式3. 返回值4. 使用示例 五、进程的几种状态1. 状态简介2. 进程状…...

JAVA宝典----容器(理解记忆)
目录 一、Java Collections框架是什么? 二、什么是迭代器? 三、Iterator与ListIterator有什么区别? 四、ArrayList、Vector和LinkedList有什么区别? 五、HashMap、Hashtable、TreeMap和WeakHashMap有哪些区别? 六…...
JS中的扩展操作符...(点点点)
标题 前言概述拓展操作符(Spread Operator)赋值与扩展操作符的区别 剩余操作符(Rest Operator) 前言 大家应该都在代码中用过或者看到…方法,我每次用到这个方法的时候都会想到第一次见到这个方法一头雾水的样子&#…...

找redis大key工具rdb_bigkeys
github官网 https://github.com/weiyanwei412/rdb_bigkeys 在centos下安装go [roothadoop102 rdb_bigkeys-master]# wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz [roothadoop102 rdb_bigkeys-master]# tar -zxf go1.13.5.linux-amd64.tar.gz -C /usr/local将g…...

ElasticSearch进阶
一、 search检索文档 ES支持两种基本方式检索; 通过REST request uri 发送搜索参数 (uri 检索参数);通过REST request body 来发送它们(uri请求体); 1、信息检索 API: https://w…...

Nor flash 页写地址与数据大小的限制
厂商提供的flash手册如下 如果页写指令的地址不是256的整数倍,并且写入的数据量超过了当前地址所在页的边界,则超过的那些数据会重新写入当前页的首地址(即256的整数倍地址),所以,在进行页写的时候&#x…...

python 深度学习 解决遇到的报错问题4
目录 一、DLL load failed while importing _imaging: 找不到指定的模块 二、Cartopy安装失败 三、simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 四、raise IndexError("single positional indexer is out-of-bounds") 五、T…...

C到C++的升级
C和C的关系 C继承了所有C语言的特性;C在C的基础上提供了更多的语法和特性,C语言去除了一些C语言的不好的特性。C的设计目标是运行效率与开发效率的统一。 变化一:所有变量都可以在使用时定义 C中更强调语言的实用性,所有的变量…...

《热题101》动态规划篇
思路:需要一个二维数组dp来记录当前的公共子序列长度,如果当前的两个值等,则dp[i][j]dp[i-1][j-1]1,否则dp[i][j] max(dp[i-1][j],dp[i][j-1])。也就是说,当前的dp值是由左、上、左上的值决定的。获得dp数组之后,倒序…...

【综述+3D】基于NeRF的三维视觉2023年度进展报告(截止2023.06.10)
论文:2003.Representing Scenes as Neural Radiance Fields for View Synthesis 官方网站:https://www.matthewtancik.com/nerf 突破性后续改进: Instant Neural Graphics Primitives with a Multiresolution Hash Encoding | 展示官网&#…...

基于JavaScript粒子流动效果
这是一个HTML文件,主要包含了一些CSS样式和JavaScript代码,用于创建一个动画效果。 在CSS部分,定义了一些基本的样式,包括页面的背景颜色、位置、大小等。特别的,定义了两种球形元素(.ball_A 和 .ball_B&am…...

【U盘】实现U盘清空并重置恢复存储
打开电脑,将U盘插入USB端口,点按快捷键【WinR】,弹出运行对话框,输入命令 diskpart 进入命令提示符窗口 输入指令 list disk 查看现在的硬盘 这里显示的U盘编号是“1”,因此输入select disk “1”,就是选择…...

基于Hugo 搭建个人博客网站
目录 1.环境搭建 2.生成博客 3.设置主题 4.将博客部署到github上 1.环境搭建 1)安装Homebrew brew是一个在 macOS 操作系统上用于管理软件包的包管理器。类似于centos下的yum或者ubuntu下的apt,它允许用户通过命令行安装、更新和管理各种软件工具、…...

Springboot + Sqlite实战(离线部署成功)
最近有个需求,是手机软件离线使用, 用的springboot mybatis-plus mysql,无法实现,于是考虑使用内嵌式轻量级的数据库SQLlite 引入依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...