K8S学习笔记-------1.安装部署K8S集群环境

1.修改为root权限

#sudo su   

2.修改主机名

#hostnamectl set-hostname k8s-master01 

3.查看网络地址

sudo nano /etc/netplan/01-netcfg.yaml

在这里插入图片描述

4.使网络配置修改生效

sudo netplan apply

5.修改UUID(某些虚拟机系统,需要设置才能生成UUID)#

  • 查看UUID:dmidecode -s system-uuid

在这里插入图片描述

  • 查看UUID:ls -l /sys/class/dmi/id/product_uuid

在这里插入图片描述

6.修改machine-id

root@k8s-master01:/home/zgq# hostnamectl status
 Static hostname: k8s-master01
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: 6e06b8a62f094742915c390eab08c802
         Boot ID: 2f2ee93655c148ab8d5a231444047515
  Virtualization: kvm
Operating System: Ubuntu 24.04.1 LTS              
          Kernel: Linux 6.8.0-51-generic
    Architecture: x86-64
 Hardware Vendor: sangfor
  Hardware Model: _acloud_
Firmware Version: rel-1.7.5.1-20190822_073655
   Firmware Date: Tue 2014-04-01
    Firmware Age: 10y 8month 3w 2d                
root@k8s-master01:/home/zgq# ls -l /etc/machine-id
-r--r--r-- 1 root root 33 Dec  4 13:42 /etc/machine-id
root@k8s-master01:/home/zgq# cat  /etc/machine-id
6e06b8a62f094742915c390eab08c802
root@k8s-master01:/home/zgq# rm -f   /etc/machine-id
root@k8s-master01:/home/zgq# systemd-machine-id-setup
Initializing machine ID from VM UUID.
root@k8s-master01:/home/zgq# cat  /etc/machine-id
bad4f9616ef844369a8b351e8752d5c6

在这里插入图片描述

7.关闭SWAP分区

kubelet 的默认行为是在节点上检测到交换内存时无法启动。 这意味着要么禁用交换(swap)功能,要么让 kubelet 容忍交换。

  • 若需允许交换分区(swap),请在 kubelet 配置文件中添加 failSwapOn: falsels -,或通过命令行参数指定。 注意:即使设置了 failSwapOn: false,工作负载默认情况下仍无法访问交换空间。 可以通过在 kubelet 配置文件中设置 swapBehavior 来修改此设置。若要使用交换空间, 请设置 swapBehavior 的值,这个值不能是默认的 NoSwap。 更多细节参阅交换内存管理。
  • 要禁用交换分区(swap),可以使用命令 sudo swapoff -a 暂时关闭交换分区功能。 要使此更改在重启后仍然生效,请确保在系统的配置文件(如 /etc/fstab 或 systemd.swap)中禁用交换功能, 具体取决于你的系统配置方式。
    swapoff -a && sysctl -w vm.swappiness=0 # 临时关闭
    sed -ri ‘/[#]*swap/s@^@#@’ /etc/fstab # 基于配置文件关闭
    在这里插入图片描述

8.时区和时间同步配置

  • 设置东8区
root@k8s-master01:/home/zgq# timedatectl set-timezone Asia/Shanghai

在这里插入图片描述

  • 同步阿里云
root@k8s-master01:/home/zgq# ntpdate ntp.aliyun.com

在这里插入图片描述

  • 自动同步:通过计划任务实现时间同步。
root@k8s-master01:/home/zgq# crontab -e
`0 */1 * * * ntpdate time1.aliyun.com
root@k8s-master01:/home/zgq# crontab -l
# m h  dom mon dow   command
0 0 * * * ntpdate ntp.aliyun.com

在这里插入图片描述

9.配置内核转发及网桥过滤

|||所有主机均需要操作

  1. 配置containerd需要的模块,本次执行,手动加载此模块
modprobe -- overlay
modprobe -- br_netfilter

2.开机自动加载所需的内核模块

root@k8s-master01:/home/zgq# cat << EOF | tee /etc/modules-load.d/k8s.conf 
overlay
br_netfilter
EOF
```ap

3.查看已加载的模块
```bash
root@k8s-node2:/home/zgq# lsmod | grep "overlay"
root@k8s-node2:/home/zgq# lsmod | grep "br_netfilter"

在这里插入图片描述

4.添加网桥过滤及内核转发配置文件
# 以下3个参数是containerd所依赖的内核参数

root@k8s-master01:/home/zgq# cat << EOF | tee /etc/sysctl.d/k8s.conf  
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

在这里插入图片描述

5.加载内核参数,使生效

root@k8s-master01:/home/zgq# sysctl --system

在这里插入图片描述

6.安装ipset及ipvsadm
|||||所有主机均需操作

当涉及到网络和流量管理时,ipset 和 ipvsadm 是两个常用的工具。下面是对它们的介绍:

  1. ipset:
    ipset 是一个用于管理 IP 地址集合的工具。
    它允许您创建、修改和删除包含 IP 地址、网络子网和端口号的集合。
    ipset 提供了高效的数据结构和算法,可以快速进行 IP 地址的匹配和查找。
    它经常与防火墙软件(如 iptables)一起使用,用于实现更高级的网络规则和过滤策略。
    iptables是Linux服务器上进行网络隔离的核心技术,内核在处理网络请求时会对iptables中的策略进行逐条解析,因此当策略较多时效率较低;而是用IPSet技术可以将策略中的五元组(协议,源地址,源端口,目的地址,目的端口)合并到有限的集合中,可以大大减少iptables策略条目从而提高效率。测试结果显示IPSet方式效率将比iptables提高100倍
  2. ipvsadm:
    ipvsadm 是一个用于配置 Linux 内核 IP 虚拟服务器(IPVS)的工具。
    IPVS 是一个实现负载均衡的内核模块,可以将传入的网络流量分发到多个后端服务器上。
    ipvsadm 可以用于创建、修改和删除 IPVS 规则和服务。
    它允许您定义负载均衡算法、设置后端服务器列表、配置健康检查和会话持久性等功能。
    通过 ipvsadm,您可以实现基于网络层或传输层的负载均衡,并优化网络流量的分发和处理。
    为什么要使用IPVS,从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。
    ipvs依赖于nf_conntrack_ipv4内核模块,4.19包括之后内核里改名为nf_conntrack,1.13.1之前的kube-proxy的代码里没有加判断一直用的nf_conntrack_ipv4,好像是1.13.1后的kube-proxy代码里增加了判断,我测试了是会去load nf_conntrack使用ipvs正常

这两个工具在 Linux 系统中被广泛用于网络管理和负载均衡场景。它们提供了强大的功能和灵活性,用于管理和控制网络流量、配置防火墙规则以及实现高可用和高性能的网络服务。

  1. 安装ipset及ipvsadm
root@docker01:/home/zgq# apt install ipset ipvsadm

还可以准备:
sysstat 是一个用于监控系统性能的工具集,包括 iostat、mpstat、pidstat 和 sar 等工具。要在不同的操作系统上安装
‌conntrack‌是Linux内核中的一个重要组件,主要用于跟踪和记录网络连接的状态信息。它基于Netfilter框架实现,是防火墙、网络地址转换(NAT)等功能的基础。
libseccomp是一个用于Linux操作系统的安全计算模式(seccomp)的用户空间库.

  1. libseccomp支持seccomp安全计算模式,该模式是Linux内核的一种特性,允许限制进程可以执行的系统调用,以增加应用程序的安全性。
    libseccomp提供了用于创建、加载和管理seccomp过滤器的API。这些过滤器可以定义一组允许的系统调用规则,从而限制应用程序的系统调用集合,阻止对潜在危险的系统调用的调用。

  2. 所有节点创建要开机自动加载的模块配置文件

cat > /etc/modules-load.d/ipvs.conf << 'EOF'
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF

3.创建加载模块脚本文件

cat << EOF | tee ipvs.sh
#!/bin/sh
modprobe  --  ip_vs
modprobe  --  ip_vs_rr
modprobe  --  ip_vs_wrr
modprobe  --  ip_vs_sh
modprobe  --  nf_conntrack
EOF
  1. 执行ipvs.sh
root@k8s-node2:/home/zgq# sh ipvs.sh

10.关闭防火墙

  • 查看ufw状态
root@k8s-master01:/home/zgq# systemctl status ufw

在这里插入图片描述

  • ufw disable
    启动时关闭
root@k8s-node2:/home/zgq# ufw disable

在这里插入图片描述
立即关闭

root@docker01:/home/zgq# systemctl disable  ufw

11.安装containerd

  1. 安装和配置
apt update && apt install -y containerd

看下版本

root@k8s-node2:/home/zgq# containerd -v
生成配置文件
mkdir -p /etc/containerd && \
containerd config default > /etc/containerd/config.toml
修改/etc/containerd/config.toml 文件中:
直接搜索SystemdCgroup
SystemdCgroup 为 true:

在这里插入图片描述

  1. 重载SANDBOX
    正常情况下,国内你是拉取不到registry.k8s.io/pause:3.8镜像的,这个镜像是一切的pod的基础,要么自己手动导入进来,要么改成国内的镜像,通过设置以下配置来覆盖默认的沙盒镜像:
    在你的 containerd 配置中, 你可以通过设置以下选项重载沙箱镜像:
[plugins."io.containerd.grpc.v1.cri"]
  sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

可以直接用命令

sudo sed -i 's/sandbox_image = ".*"/sandbox_image = "registry.aliyuncs.com\/google_containers\/pause:3.9"/' /etc/containerd/config.toml

12. 安装 kube三件套

 更新源
 sudo apt update && \
 sudo apt upgrade -y
 安装工具
 apt install -y apt-transport-https ca-certificates curl gpg
 创建目录,有的版本有,看情况创建
 mkdir -p -m 755 /etc/apt/keyrings
 下载秘钥
 curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg && \
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
添加软件源1.32
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新,安装软件,防止更新
apt update && \
apt install -y kubelet kubectl kubeadm && \
apt-mark hold kubelet kubeadm kubectl
设置开机自启
systemctl enable --now kubelet
查看版本
kubeadm version

13.初始化MASTER

  1. 先下载镜像,有科学的不用阿里
sudo kubeadm config images pull \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.32.0 \
--cri-socket=unix:///run/containerd/containerd.sock 

在这里插入图片描述

  1. 初始化
kubeadm init \
--image-repository=registry.aliyuncs.com/google_containers \
--apiserver-advertise-address=192.168.95.211 \ //修改IP
--control-plane-endpoint=k8s-master01 \  //修改HOSTNAME
--kubernetes-version=v1.32.0 \
--service-cidr=10.50.0.0/16 \
--pod-network-cidr=10.60.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock
  1. 完成初始化,规范化用户修改设置
Your Kubernetes control-plane has initialized successfully!

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \
	--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 \
	--control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \
	--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 

  • 不包括安装网络插件的,.Kubeadm 通过初始化安装是不包括网络插件的,也就是说初始化之后是不具备相关网络功能的,比如 k8s-master 节点上查看节点信息都是“Not Ready”状态、Pod 的 CoreDNS无法提供服务等。

  • 规范化修改用户设置

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
  • 查看pods执行情况
kubectl get pods -A

14.加入集群

  1. 加入control panel 节点
kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \
	--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 \
	--control-plane 
  1. 加入worker 节点
kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \
	--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 

如果忘记了token,可以采取以下方式重新获取token和sha256

root@k8s-master01:/home/zgq#kubeadm token create
qchluu.2qsq44a9rxttzv1q

root@k8s-master01:/home/zgq#openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null \
| sha256sum | awk '{print $1}'
9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6

14.安装calico

这里安装的目前最新版,这种方式安装不了的自行下载后执行
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/tigera-operator.yaml
下载配置文件
curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/custom-resources.yaml
修改自己的cidr,然后执行
kubectl apply -f custom-resources.yaml

root@k8s-master01:/home/zgq# kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/tigera-operator.yaml
namespace/tigera-operator created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgpfilters.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/caliconodestatuses.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipreservations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/tiers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/adminnetworkpolicies.policy.networking.k8s.io created
customresourcedefinition.apiextensions.k8s.io/apiservers.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/imagesets.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/installations.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/tigerastatuses.operator.tigera.io created
serviceaccount/tigera-operator created
clusterrole.rbac.authorization.k8s.io/tigera-operator created
clusterrolebinding.rbac.authorization.k8s.io/tigera-operator created
deployment.apps/tigera-operator created

在这里插入图片描述

root@k8s-master01:/home/zgq# kubectl apply -f custom-resources.yaml
installation.operator.tigera.io/default created
apiserver.operator.tigera.io/default created
root@k8s-master01:/home/zgq# kubectl get pods -A
NAMESPACE          NAME                                       READY   STATUS              RESTARTS   AGE
calico-apiserver   calico-apiserver-58548dbdb-jw49q           0/1     Pending             0          95s
calico-apiserver   calico-apiserver-58548dbdb-tpvqw           0/1     Pending             0          95s
calico-system      calico-kube-controllers-85d9cd79b5-8kqgk   0/1     Pending             0          94s
calico-system      calico-node-c9j2n                          0/1     Init:0/2            0          94s
calico-system      calico-typha-654c5b4475-7rbsx              0/1     ContainerCreating   0          95s
calico-system      csi-node-driver-dlw4n                      0/2     ContainerCreating   0          94s
kube-system        coredns-6766b7b6bb-87ndz                   0/1     Pending             0          3h45m
kube-system        coredns-6766b7b6bb-tbjxs                   0/1     Pending             0          3h45m
kube-system        etcd-k8s-master01                          1/1     Running             1          3h45m
kube-system        kube-apiserver-k8s-master01                1/1     Running             1          3h45m
kube-system        kube-controller-manager-k8s-master01       1/1     Running             1          3h45m
kube-system        kube-proxy-gp5nr                           1/1     Running             0          3h45m
kube-system        kube-scheduler-k8s-master01                1/1     Running             1          3h45m
tigera-operator    tigera-operator-7d68577dc5-5bm95           1/1     Running             0          10m

15.查看PODS状态

root@k8s-master01:/home/zgq# kubectl get pods -A
NAMESPACE          NAME                                       READY   STATUS    RESTARTS   AGE
calico-apiserver   calico-apiserver-58548dbdb-jw49q           1/1     Running   0          10h
calico-apiserver   calico-apiserver-58548dbdb-tpvqw           1/1     Running   0          10h
calico-system      calico-kube-controllers-85d9cd79b5-8kqgk   1/1     Running   0          10h
calico-system      calico-node-c9j2n                          1/1     Running   0          10h
calico-system      calico-typha-654c5b4475-7rbsx              1/1     Running   0          10h
calico-system      csi-node-driver-dlw4n                      2/2     Running   0          10h
kube-system        coredns-6766b7b6bb-87ndz                   1/1     Running   0          14h
kube-system        coredns-6766b7b6bb-tbjxs                   1/1     Running   0          14h
kube-system        etcd-k8s-master01                          1/1     Running   1          14h
kube-system        kube-apiserver-k8s-master01                1/1     Running   1          14h
kube-system        kube-controller-manager-k8s-master01       1/1     Running   1          14h
kube-system        kube-proxy-gp5nr                           1/1     Running   0          14h
kube-system        kube-scheduler-k8s-master01                1/1     Running   1          14h
tigera-operator    tigera-operator-7d68577dc5-5bm95           1/1     Running   0          10h
root@k8s-master01:/home/zgq# 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   ok        
root@k8s-master01:/home/zgq# kubectl get nodes
NAME           STATUS   ROLES           AGE   VERSION
k8s-master01   Ready    control-plane   14h   v1.32.0
root@k8s-master01:/home/zgq# kubectl get ns
NAME               STATUS   AGE
calico-apiserver   Active   10h
calico-system      Active   10h
default            Active   14h
kube-node-lease    Active   14h
kube-public        Active   14h
kube-system        Active   14h
tigera-operator    Active   11h

其他参考站点

  1. 阿里开源镜像站

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型深度研究功能:人类认知与创新的新范式

在人工智能迅猛发展的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;的深度研究功能正在成为重塑人类认知方式的关键力量。这一突破性技术不仅带来了工具层面的革新&#xff0c;更深刻地触及了人类认知能力的本质。本文将从认知科学的角度出发&#xff0c;探讨LLM如何…

【Redis】Redis 经典面试题解析:深入理解 Redis 的核心概念与应用

文章目录 1. Redis 是什么&#xff1f;它的主要特点是什么&#xff1f;答案&#xff1a;主要特点&#xff1a; 2. Redis 的数据结构有哪些&#xff1f;分别适用于什么场景&#xff1f;答案&#xff1a;keys *命令返回的键顺序 3. Redis 的持久化机制有哪些&#xff1f;它们的优…

基于SpringBoot的物资管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【力扣】53.最大子数组和

AC截图 题目 思路 这道题主要考虑的就是要排除负数带来的负面影响。如果遍历数组&#xff0c;那么应该有如下关系式&#xff1a; currentAns max(prenums[i],nums[i]) pre是之前记录的最大和&#xff0c;如果prenums[i]小于nums[i]&#xff0c;就要考虑舍弃pre&#xff0c;从…

本地部署DeepSeek教程(Mac版本)

第一步、下载 Ollama 官网地址&#xff1a;Ollama 点击 Download 下载 我这里是 macOS 环境 以 macOS 环境为主 下载完成后是一个压缩包&#xff0c;双击解压之后移到应用程序&#xff1a; 打开后会提示你到命令行中运行一下命令&#xff0c;附上截图&#xff1a; 若遇…

代码随想录算法【Day36】

Day36 1049. 最后一块石头的重量 II 思路 把石头尽可能分成两堆&#xff0c;这两堆重量如果相似&#xff0c;相撞后所剩的值就是最小值 若石头的总质量为sum&#xff0c;可以将问题转化为0-1背包问题&#xff0c;即给一个容量为sum/2的容器&#xff0c;如何尽量去凑满这个容…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.28 NumPy+Matplotlib:科学可视化的核心引擎

2.28 NumPyMatplotlib&#xff1a;科学可视化的核心引擎 目录 #mermaid-svg-KTB8Uqiv5DLVJx7r {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KTB8Uqiv5DLVJx7r .error-icon{fill:#552222;}#mermaid-svg-KTB8Uqiv5…

基序和纯度分数的计算

以下对这两个概念的详细解释&#xff1a; 基序 纯度分数 PWM矩阵的来源 为什么会有PWM矩阵&#xff1f; 一个特定的转录因子&#xff08;TF&#xff09;的结合位点的基序&#xff08;motif&#xff09;并不是唯一的。实际上&#xff0c;TF结合位点通常具有一定的序列变异性&a…

Linux下的编辑器 —— vim

目录 1.什么是vim 2.vim的模式 认识常用的三种模式 三种模式之间的切换 命令模式和插入模式的转化 命令模式和底行模式的转化 插入模式和底行模式的转化 3.命令模式下的命令集 光标移动相关的命令 复制粘贴相关命令 撤销删除相关命令 查找相关命令 批量化注释和去…

有用的sql链接

『SQL』常考面试题&#xff08;2——窗口函数&#xff09;_sql的窗口函数面试题-CSDN博客 史上最强sql计算用户次日留存率详解&#xff08;通用版&#xff09;及相关常用函数 -2020.06.10 - 知乎 (zhihu.com) 1280. 学生们参加各科测试的次数 - 力扣&#xff08;LeetCode&…

算法题(57):找出字符串中第一个匹配项的下标

审题: 需要我们根据原串与模式串相比较并找到完全匹配时子串的第一个元素索引&#xff0c;若没有则返回-1 思路&#xff1a; 方法一&#xff1a;BF暴力算法 思路很简单&#xff0c;我们用p1表示原串的索引&#xff0c;p2表示模式串索引。遍历原串&#xff0c;每次遍历都匹配一次…

线性回归原理和算法

线性回归可以说是机器学习中最基本的问题类型了&#xff0c;这里就对线性回归的原理和算法做一个小结。 对于线性回归的损失函数&#xff0c;我们常用的有两种方法来求损失函数最小化时候的θ参数&#xff1a;一种是梯度下降&#xff0c;一种是最小二乘法。 为了防止模型的过拟…

npm知识

npm 是什么 npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表&#xff0c;每星期大约有 30 亿次的下载量&#xff0c;包含超过 600000 个包&#xff08;package&#xff09;&#xff08;即&#xff0c;代码模块&#xff09;。来自…

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(三)

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;贪心算法篇–CSDN博客 文章目录 前言例题1.最优除法2.跳跃游戏23.跳跃游戏14.加油站5.单调递…

什么是物理地址,什么是虚拟地址?

摘要 什么是物理地址&#xff0c;什么是虚拟地址&#xff1f; 如果处理器没有MMU或未启用&#xff0c;CPU执行单元发出的内存地址直接传到芯片引脚上&#xff0c;被内存芯片接受&#xff0c;这称为物理地址&#xff08;Physical Addraress&#xff09; 如果处理器启用了MMU&a…

LabVIEW图片识别逆向建模系统

本文介绍了一个基于LabVIEW的图片识别逆向建模系统的开发过程。系统利用LabVIEW的强大视觉处理功能&#xff0c;通过二维图片快速生成对应的三维模型&#xff0c;不仅降低了逆向建模的技术门槛&#xff0c;还大幅提升了建模效率。 ​ 项目背景 在传统的逆向建模过程中&#xf…

小程序的协同工作与发布

1.小程序API的三大分类 2.小程序管理的概念&#xff0c;以及成员管理两个方面 3.开发者权限说明以及如何维护项目成员 4.小程序版本

Unity 粒子特效在UI中使用裁剪效果

1.使用Sprite Mask 首先建立一个粒子特效在UI中显示 新建一个在场景下新建一个空物体&#xff0c;添加Sprite Mask组件&#xff0c;将其的Layer设置为UI相机渲染的UI层&#xff0c; 并将其添加到Canvas子物体中&#xff0c;调整好大小&#xff0c;并选择合适的Sprite&#xff…

Java设计模式:行为型模式→状态模式

Java 状态模式详解 1. 定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态需要的行为封装在不同的状态类中&#xff0c;实现对象行为的动态改变。该模式的核心思想是分离不同状态…

中间件的概念及基本使用

什么是中间件 中间件是ASP.NET Core的核心组件&#xff0c;MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲&#xff1a;Tomcat、WebLogic、Redis、IIS&#xff1b;狭义上来讲&#xff0c;ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…