81、k8s网络配置以及k8s拉取私有仓库

news2024/9/20 18:35:20

一、k8s架构安装部署

k8s架构

master 192.168.168.81    docker、kubeadm、kubelet、kubectl、flannel
node01 192.168.168.82    docker kubeadm kubelet kubectl flannel
node02 192.168.168.83    docker、kubeadm、kubelet、kubectl、flannel



#关闭防火墙
[root@k8s1 ~]# systemctl stop firewalld
[root@k8s1 ~]# setenforce 0
[root@k8s1 ~]# iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X  ##清空防护墙策略
##永久关闭交换分区
[root@k8s1 ~]# swapoff -a
[root@k8s1 ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab 
[root@k8s1 ~]# for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
[root@k8s1 ~]# date

#根据规划设置主机名
--------------单独操作------------
[root@k8s1 ~]# hostnamectl set-hostname master01
[root@k8s2 ~]# hostnamectl set-hostname node01
[root@k8s3 ~]# hostnamectl set-hostname node02
------------------------------------------------
[root@k8s1 ~]# su

[root@master01 ~]# vim /etc/hosts   ##开启主机名和ip地址映射

192.168.168.81 master01
192.168.168.82 node01
192.168.168.83 node02

#使用多行重定向调整内核参数,前2行为开启网桥模式后2行为关闭ipv6协议和开启路由转发
[root@master01 ~]# cat > /etc/sysctl.d/kubernetes.conf << EOF
> #开启网桥模式,可将网桥的流量传递给iptables链
> net.bridge.bridge-nf-call-ip6tables=1
> net.bridge.bridge-nf-call-iptables=1
> #关闭ipv6协议
> net.ipv6.conf.all.disable_ipv6=1
> net.ipv4.ip_forward=1
> EOF

#加载内核使得配置内核参数生效
[root@master01 ~]# sysctl --system


#所有节点部署docker引擎
[root@master01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 


#添加Docker官方源,并将它设置为docker-ce.repo文件
[root@master01 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 



#yum安装docker-ce和docker客户端以及容器io
[root@master01 ~]# yum install -y docker-ce-24.0.1 docker-ce-cli-24.0.1 containerd.io


[root@master01 ~]# mkdir /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://hub.littlediary.cn/"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF
-------------------------第二个源-----------------
[root@master01 ~]# vim /etc/docker/daemon.json 
{
  "registry-mirrors": [
                "https://hub-mirror.c.163.com",
                "https://docker.m.daocloud.io",
                "https://ghcr.io",
                "https://mirror.baidubce.com",
                "https://docker.nju.edu.cn"
   ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}


[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart docker
[root@master01 ~]# systemctl enable docker
------------------可试试---------------


[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart docker
[root@master01 ~]# systemctl enable docker


[root@master01 ~]# docker pull nginx


[root@master01 ~]# docker info | grep "Cgroup Driver"
 Cgroup Driver: systemd


------------------定义源-------------
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.20.15 kubeadm-1.20.15 kubectl-1.20.15


[root@master01 ~]# systemctl enable kubelet
##所有的组件都是以pod的运行的,必须要设置开机自启

[root@master01 ~]# kubeadm config images list --kubernetes-version 1.20.15

pause:镜像,特殊容器,这个容器的作用就是保持pod当中其他容器的运行。
创建pod,首先拉取镜像,pod当中的会有一个pause,pause会在每个pod当中创建一个网络命名空。
pod的生命周期结束,pause也随之一块退出,释放该pod的网络命名空间。

pod--------镜像----------容器nginx
pause nginx---->10.244.0.10给pod分配IP地址
coredns:域名解析



取消同步操作


------master01操作-------
[root@master01 ~]# kubeadm init \
--apiserver-advertise-address=192.168.168.81 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.20.15 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--token-ttl=0
------------------------以下解释---------------------
--apiserver-advertise-address=192.168.168.81 \内部通信的ip地址,指向的主,也可以用0.0.0.0表示任意主机
--image-repository registry.aliyuncs.com/google_containers \##指定镜像的仓库---》k8s组件的仓库地址

--kubernetes-version=v1.20.15 \ ##k8s的版本
--service-cidr=10.96.0.0/16 \  ##service的网段
--pod-network-cidr=10.244.0.0/16 \  ##pod分配的网段,10.244.0.0/16 flannel的默认网段。calico:192.168.0.0/16
--token-ttl=0  ##token永不过期,内部使用,不加的话,默认是一天
------------------复制到node节点上-------------
kubeadm join 192.168.168.81:6443 --token abkwa8.j2i4940m256tldrf \
    --discovery-token-ca-cert-hash sha256:16a1e3ee10f8514a27089f4a3f810e26f0abe3ced94029c43d7662ded46fe3bc
-------------------------token验证-----------------


kubeadm token create --print-join-command  ##重新生成token验证


[root@node01 ~]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?
##网络没有安装

镜像补充

tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu"
    ],
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m"
    }
}
EOF


{

        "registry-mirrors": [
                "https://docker.m.daocloud.io",
                "https://docker.1panel.live"
       ]

}

[root@master01 ~]# docker pull docker.io/calico/kube-controllers:v3.20.2



------------三台机器同步----------------------------

#设置节点的kubelet:
[root@master01 ~]# mkdir -p $HOME/.kube
[root@master01 ~]# cd /etc/kubernetes/
[root@master01 kubernetes]# ls
admin.conf               kubelet.conf  pki
controller-manager.conf  manifests     scheduler.conf



##admin.conf 
##kubeadm为集群配置的一个具有管理员权限的认证文件,apiserver需要通过admin的认证,kubelet才能和apiserver进行交互。



[root@master01 kubernetes]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master01 kubernetes]# chown $(id -u):$(id -g) $HOME/.kube/config
[root@master01 kubernetes]# cd ~
[root@master01 ~]# cd .kube/
[root@master01 .kube]# ll
总用量 8
-rw-------. 1 root root 5570 8月  27 09:48 config
[root@master01 .kube]# systemctl restart kubelet



--------------------master01操作-------------------
[root@master01 .kube]# kubectl edit cm kube-proxy -n=kube-system

## kubectl edit(编辑) cm kube-proxy(节点上的网络代理 yaml) -n=kube-system

[root@master01 .kube]# kubectl edit cm kube-proxy -n=kube-system
mode: "ipvs"
configmap/kube-proxy edited


[root@master01 .kube]# kubectl get node
NAME       STATUS     ROLES                  AGE   VERSION
master01   NotReady   control-plane,master   19h   v1.20.15
node01     NotReady   <none>                 19h   v1.20.15
node02     NotReady   <none>                 19h   v1.20.15


[root@master01 .kube]# kubectl get cs  ##集群,检查集群的状态

[root@master01 .kube]# vim /etc/kubernetes/manifests/kube-scheduler.yaml 

 16     - --bind-address=192.168.168.81  ##本机地址
 
 19     #- --port=0

 25         host: 192.168.168.81
 
 39         host: 192.168.168.81


[root@master01 .kube]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml


 17     - --bind-address=192.168.168.81
 26     #- --port=0
 37         host: 192.168.168.81
 51         host: 192.168.168.81

[root@master01 .kube]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
[root@master01 .kube]# kubectl get pod -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-6z2pg           0/1     Pending   0          19h
coredns-7f89b7bc75-lg4gw           0/1     Pending   0          19h
etcd-master01                      1/1     Running   0          19h
kube-apiserver-master01            1/1     Running   0          19h
kube-controller-manager-master01   1/1     Running   0          100s
kube-proxy-d5fnf                   1/1     Running   0          19h
kube-proxy-kpvs2                   1/1     Running   0          19h
kube-proxy-nrszf                   1/1     Running   0          19h
kube-scheduler-master01            1/1     Running   0          97s
[root@master01 .kube]# systemctl status kubelet

[root@master01 .kube]# kubectl get pod -n kube-system

在这里插入图片描述

[root@master01 .kube]# systemctl status kubelet

在这里插入图片描述

二、k8s的网络类型:

CNI网络插件:flannel calico

2.1、k8s的三种通信方式:

1、pod内部的网络通信:

pod内部容器的通信,pod创建完成之后,集群会分配pod一个全局的唯一ip地址。所有的容器共享这个ip地址。

pod内部可以用本地通信+端口形式互相通信。

2、同一个node节点上的pod通信:

docker0网桥。同一个节点上的pod和docker的通信方式是一样的。

3、不同节点上pod之间通信。

想办法通过主机的物理网卡ip进行通信。

  • ①、pod的ip地址不能冲突。
  • ②、pod的ip地址要和node的ip地址进行关联。
  • CNI:CNI是标准接口,用于容器在运行时调用网络插件,配置容器的网络。CNI负责设置容器的网络命名空间,ip地址,路由等网络参数。

pod的ip地址进行封装,通过node节点作为路由器,转发到其他的node节点,其他的node节点收到数据包之后解包,把数据包转发到指定的pod

2.2、Flannel插件:

让集群中不同节点创建的pod都有集群内部唯一的ip地址。(虚拟)

Flannel是一种overlay网络,overlay是一种网络虚拟化技术,在底层的物理网络基础之上创建一个逻辑的网络层。

从而实现跨节点的pod之间的通信。

2.2.1、Fannel数据转发的方式:UDP VXLAN(使用最多的模式) HOST-GW(主机模式,性能最好)

  • VXLAN:基于内核进行转发
  • UDP:默认方式,基于应用层转发,配置最简单,性能最差
  • Host-GW:性能最好,但是配置最繁琐
ifconfig ##查看网络对应的网卡类型
  • UDP:flannel.0
  • vxlan:flannel.1 ----网络虚拟的网卡,给pod分配ip地址,通过arp广播找到目的mac
  • vxlan vlan通过标识来实现广播的划分,不同的vlan之间可以通信。0 1 4096 2-4095 4094个vlanid
  • vxlan:标识,vni数据中心进行广域网的划分,通过三层网络搭建一个虚拟的二层网络----------三层交换机

2.3、工作模式:

1、流程流向

在这里插入图片描述

[root@master01 opt]# ls
cni                                 flannel.tar                   test
cni-plugins-linux-amd64-v0.8.6.tgz  jenkins-2.396-1.1.noarch.rpm
containerd                          kube-flannel.yml

[root@master01 opt]# docker load < flannel.tar 
777b2c648970: Loading layer  5.848MB/5.848MB
815dff9e0b57: Loading layer  11.42MB/11.42MB
2e16188127c8: Loading layer  2.267MB/2.267MB
eb738177d102: Loading layer  49.34MB/49.34MB
b613d890216c: Loading layer   5.12kB/5.12kB
8a984b390686: Loading layer  9.216kB/9.216kB
814fbd599e1f: Loading layer   7.68kB/7.68kB
Loaded image: quay.io/coreos/flannel:v0.14.0

----------------三台同步操作安装cni------------------
[root@master01 opt]# mv /opt/cni /opt/cni_bak
[root@master01 opt]# cd cni_bak/
[root@master01 cni_bak]# ls
bin
[root@master01 cni_bak]# mkdir -p /opt/cni/bin
[root@master01 cni_bak]# cd /opt/
[root@master01 opt]# ls
cni                                 flannel.tar
cni_bak                             jenkins-2.396-1.1.noarch.rpm
cni-plugins-linux-amd64-v0.8.6.tgz  kube-flannel.yml
containerd                          test
[root@master01 opt]# tar -xf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin/
--------------------解压安装完成---------------------


-----------在master01更新kube-flannel.yml------------
[root@master01 opt]# kubectl apply -f kube-flannel.yml 
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

##查看集群的健康状态
[root@master01 opt]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   

//在master节点查看节点状态
kubectl get nodes
 
kubectl get pods -n kube-system

[root@master01 opt]# kubectl get pod -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-6z2pg           1/1     Running   0          20h
coredns-7f89b7bc75-lg4gw           1/1     Running   0          20h
etcd-master01                      1/1     Running   0          20h
kube-apiserver-master01            1/1     Running   0          20h
kube-controller-manager-master01   1/1     Running   1          73m
kube-flannel-ds-48rnt              1/1     Running   0          27s
kube-flannel-ds-gsspq              1/1     Running   0          27s
kube-flannel-ds-wphvj              1/1     Running   0          27s
kube-proxy-d5fnf                   1/1     Running   0          20h
kube-proxy-kpvs2                   1/1     Running   0          20h
kube-proxy-nrszf                   1/1     Running   0          20h
kube-scheduler-master01            1/1     Running   0          78m
[root@master01 opt]# kubectl get cs
NAME       STATUS   ROLES                  AGE   VERSION
master01   Ready    control-plane,master   20h   v1.20.15
node01     Ready    <none>                 20h   v1.20.15
node02     Ready    <none>                 20h   v1.20.15
ifconfig##查看k8s网络

在这里插入图片描述

2、calico网络:

使用host主机作为路由器,使用BGP同步路由以及iptables来做网络,把host主机当作一个路由。

采用直接路由的方式实现。损耗很低,不需要修改数据包的报文,pod太多,路由表比较复杂,维护起来比较麻烦。

大集群的复杂网络模式。

calico------->veth-pair虚拟设备,一个虚拟的网卡。

一头设备连接pod的网络空间,一头连接主机的网络空间。

calico通过linux的命名空间和路由表实现容器之间的通信。
在这里插入图片描述

flannel插件:默认的地址是10.244.0.0/16

三种模式:UDP VXLAN HOST-GW

flannel的功能简单,不具备复杂的网络策略的配置能力。小集群或者简单的网络。

calico:BGP直接路由,路由维护,路由转发。

默认网段:192.168.0.0/16

calico是一个可以对网络进行管理的插件,具备配置复杂网络配置的能力。本身的配置比较复杂,对开发人员,运维人员要求比较高。

需要复杂配置的可以使用calico。(配置更多的网络策略。)

3、k8s的kubectl的永久table实现补齐

vim /etc/profile

source <(kubectl completion bash)

source /etc/profile

4、匿名用户赋权

kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

5、利用脚本实现k8s中apiserver.crt 的使用周期

[root@master01 ~]# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not
            Not Before: Aug 26 06:47:11 2024 GMT
            Not After : Aug 26 06:47:11 2025 GMT
[root@master01 ~]# openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text | grep Not
            Not Before: Aug 26 06:47:11 2024 GMT
            Not After : Aug 24 06:47:11 2034 GMT

[root@master01 opt]# ls
cni                                 jenkins-2.396-1.1.noarch.rpm
cni_bak                             kube-flannel.yml
cni-plugins-linux-amd64-v0.8.6.tgz  test
containerd                          update-kubeadm-cert.sh  ##脚本
flannel.tar
[root@master01 opt]# chmod 777 update-kubeadm-cert.sh 
[root@master01 opt]# ./update-kubeadm-cert.sh all
[root@master01 opt]# kubectl create deployment nginx1 --image=nginx:1.22
deployment.apps/nginx1 created
[root@master01 opt]# kubectl get pod
NAME                     READY   STATUS         RESTARTS   AGE
nginx1-654cb56c4-rlldr   0/1     ErrImagePull   0          11s

[root@master01 opt]# kubectl describe pod nginx1

作业

基于harbor私有仓库

k8s从私有仓库下载

1、基于docker,安装docker-compose,安装docker-harbor

----------------------------安装docker-compose-----------------------------
[root@docker1 opt]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@docker1 opt]# chmod 777 /usr/local/bin/docker-compose 
[root@docker1 opt]# docker-compose --version
Docker Compose version v2.18.0
----------------------安装docker-harbor------------------------
[root@docker1 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz 
[root@docker1 opt]# ls
docker-compose.yml  harbor-offline-installer-v2.8.1.tgz  mysql   nginx  php
harbor              html                                 mysql1  nhtml
[root@docker1 opt]# cd harbor/

[root@docker1 harbor]# ls
common.sh  harbor.v2.8.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

[root@docker1 harbor]# cp harbor.yml.tmpl harbor.yml

[root@docker1 harbor]# vim harbor.yml

  5 hostname: 192.168.168.73

 13 #https:
 14   # https port for harbor, default is 443
 15  # port: 443

 34 harbor_admin_password: 123456

[root@docker1 harbor]#  ./prepare

[root@docker1 harbor]# pwd
/opt/harbor
[root@docker1 harbor]# ./install.sh 

上传镜像

网页新建项目:

在这里插入图片描述

[root@docker1 harbor]# docker tag nginx:1.22 192.168.168.71/test1/nginx:v1   ##给本地镜像打标签,不打标签,上传不了harbor仓库

[root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service           

ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.168.71 --           containerd=/run/containerd/containerd.sock                        ##客户端指定到服务端,从服务端获取镜像

[root@docker1 harbor]# systemctl daemon-reload       ##改完配置文件进行重启
[root@docker1 harbor]# systemctl restart docker

[root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.168.71

在这里插入图片描述

对应解决:
[root@docker1 harbor]# ./install.sh               ##改完配置文件,重启docker后,进行初始化安装

[root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.168.71 ##登录仓库,进行上传和下载

[root@docker1 harbor]# docker push 192.168.168.71/test1/nginx:v1             ##上传镜像nginx:v1

[root@docker1 harbor]# docker tag nginx:1.18 192.168.168.71/test1/nginx:v2   ##给镜像打标签
[root@docker1 harbor]# docker push 192.168.168.71/test1/nginx:v2             ##上传镜像nginx:v2

在这里插入图片描述

k8s集群下载镜像:

----------------------------三台k8s一起操作---------------------

[root@master01 ~]# vim /usr/lib/systemd/system/docker.service 

 13 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.168.71 --containerd=/run/containerd/containerd.sock

[root@master01 ~]# systemctl daemon-reload 

[root@master01 ~]# systemctl restart docker

[root@master01 ~]# docker login -u admin -p 123456 http://192.168.168.71

-----------------------------以上做仓库指向--------------------------------------

拉取私有仓库nginx的镜像-------副本数为3

[root@master01 ~]# kubectl create deployment nginx2 --image=192.168.168.71/test1/nginx:v1 --replicas=3

[root@master01 ~]# kubectl get pods
NAME                      READY   STATUS    RESTARTS   AGE
nginx2-59d574bd96-2rqgk   1/1     Running   0          159m
nginx2-59d574bd96-2zsvj   1/1     Running   0          159m
nginx2-59d574bd96-mf6zt   1/1     Running   0          159m

[root@master01 ~]# systemctl restart docker

[root@master01 ~]# docker login -u admin -p 123456 http://192.168.168.71

-----------------------------以上做仓库指向--------------------------------------




### 拉取私有仓库nginx的镜像-------副本数为3

[root@master01 ~]# kubectl create deployment nginx2 --image=192.168.168.71/test1/nginx:v1 --replicas=3

[root@master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx2-59d574bd96-2rqgk 1/1 Running 0 159m
nginx2-59d574bd96-2zsvj 1/1 Running 0 159m
nginx2-59d574bd96-mf6zt 1/1 Running 0 159m


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2080024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海睿思通过华东江苏大数据交易中心数商认证,提供高质量数据治理服务!

近日&#xff0c;中新赛克海睿思成功通过华东江苏大数据交易中心的数商认证&#xff0c;获得华东江苏大数据交易中心颁发的“数据治理服务商”证书。 华东数交是在实施“国家大数据战略”大背景下&#xff0c;经国家批准的华东地区首个省级特色数据要素交易平台&#xff0c;致力…

2024年8月20日~2024年8月26日周报

目录 一、前言 二、完成情况 2.1 解决网络波动问题——学习率 2.2 设计盐数据速度模型展示图 三、下周计划 一、前言 上周主要完成&#xff1a; ①与老师讨论损失函数与介绍部分内容&#xff1b;②基于盐数据设计TU-Net的网络架构&#xff0c;并思考如何引出该网络架构&a…

一. 初始 Spring Boot

一. 初始 Spring Boot 文章目录 一. 初始 Spring Boot1. Spring Boot 是什么&#xff1f;2. Spring Boot 官方文档地址3. 第一个 Spring Boot 程序3.1 我的环境工具配置 4. 第一个 SpringBoot 程序解释说明5. Spring&#xff0c;SpringMVC&#xff0c; SpringBoot 三者的关系6.…

8月27复盘日记

8月27复盘日记 前言今日感恩今日知识今日反思今日名言 前言 今天早上是七点半起床嘻嘻&#xff0c;昨晚和舍友聊天&#xff0c;分享小时候的趣事&#xff0c;以及一些观点&#xff0c;聊得有些激动&#xff0c;就比较难以入睡   今天天气又是超级让人幸福&#xff01;&#x…

c++类的封装

目录 有参构造函数对象 无参数构造函数 封装可是个好东西呢&#x1f609; 它能让你的代码更简洁、更安全&#xff0c;也更容易维护。就像把你的宝贝都放进一个漂亮的盒子里&#xff0c;不仅整齐好看&#xff0c;还能保护它们不被弄坏&#x1f381;。而且啊&#xff0c;封装还…

【C++ 面试 - 内存管理】每日 3 题(五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

项目策划书六度自由双足机器人

一、项目的简要介绍 双足机器人的机构是所有部件的载体,也是设计双足机器人最基本的和首要的工作。本文根据项目规划和控制任务要求&#xff0c;按照从总体到部分、由主到次的原则&#xff0c;设计了一种适合仿人双足机器人控制的机构.文章首先从机构的设计目标出发&#xff0c…

条件拼接 - 根据入参生成where条件

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 条件拼接 - 根据入参生成where条件 前言一、GraphConditionEnum 支持的条件二、ConditionServiceImpl 实现类三、DbDataTypeEnum 入参的数据类型四、GraphTypeEnum 图数据的类…

【C/C++】int类型32位有符号整数的含义

在C语言中&#xff0c;int类型的取值范围是有符号的32位整数&#xff0c;即-2,147,483,648到2,147,483,647。‌ 这个范围是由int类型在32位系统上的存储大小决定的。具体来说&#xff0c;int类型在C语言中占4个字节&#xff0c;即32个二进制位。当表示正数时&#xff0c;最高位…

从永远到永远-日语学习-动词三分类及ます变形

动词三分类 0.前置知识1.动词三分类3.判断方法4.变形 0.前置知识 讨论的都是基于动词原形动词变ます形&#xff0c;是因为小日子骨子里的假客套&#xff0c;ます形比较礼貌。日语所有动词原型都是う段结尾五段动词联想う段动2、动3原型都是る结尾上一段动词&#xff08;い段る…

PS制作曲线背景

新建图层->设置颜色 钢笔->画个路径 画笔->柔边缘5像素 描边路径->工具->模拟压力 图层->Ctrl->缩略图 编辑->定义画笔预设 F5->画笔设置->间距5%->形状动态->角度抖动300

【突出百分比的图表创意】保姆级教程(Excel 图表呈现)

包学包会 效果一览&#xff1a;思路&#xff1a;圆形百分比图表 保姆级详细过程先试着做一个吧接下来完成剩下的其他图标探索 效果一览&#xff1a; 思路&#xff1a; 先准备好两个形状一致的图形&#xff0c;中间填充不同颜色&#xff0c;一深一浅。 一个用来表示百分百&…

Git项目的文件泄露分析和漏洞修复

说明:本文仅是用于学习分析自己搭建的Git漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 …

C语言典型例题53

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.5 用π/41-1/31/5-1/7……公式来计算π的近似值&#xff0c;知道某一项的绝对值小于10的六次方为止 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.5 用π/41-1/3…

移动支付背后的信息安全与防控策略

你是否有过以下担心&#xff1f; 每次支付后&#xff0c;担心金额扣除多了&#xff1b; 账号不幸被盗后&#xff0c;银行卡(绑卡)是否会被恶意刷爆&#xff1b; 存移动钱包的钱&#xff0c;哪天不翼而飞; 本文讨论了移动支付背后的安全防控策略&#xff0c;强调了支付安全的…

安达发|企业实施APS计划排单系统会有哪些效益?

在竞争日益激烈的商业环境中&#xff0c;企业如何保持竞争力并实现可持续发展&#xff1f;答案可能就隐藏在先进的生产管理工具中。今天&#xff0c;我们将深入探讨企业实施APS&#xff08;高级计划排程&#xff09;计划排单系统所带来的五大惊人效益&#xff0c;这些效益不仅能…

【Python学习手册(第四版)】学习笔记22-模块代码编写基础

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文主要介绍模块编码工具的基础知识&#xff1a;import和from语句&#xff0c;以及reload调用&#xff0c;介绍了模块命名空间&#xff08;这个概念可能因为翻译…

数据结构;顺序表;链式表

1.衡量一个程序是否优秀&#xff1a; 1.时间复杂度&#xff1a; 数据量增长与程序运行时间的比例关系以函数描述称为时间渐进复杂度函数,简称时间复杂度 O(c) > O(logn) > O(n) > O(nlogn) > O(n^2) > O(n^3) > O(2^n) 2.空间复杂度…

echarts倾斜横向堆叠柱状图

代码如下 option: {backgroundColor: "transparent",tooltip: {trigger: "axis",axisPointer: {lineStyle: {color: {type: "linear",x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: "rgba(126,199,255,0)", // 0% 处的颜色}…

Sentinel-1 Level 1数据处理的详细算法定义(七)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程&#xff0c;以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下&…