1-k8s1.24-底座搭建-基于containerd
文章目录
- 一、服务器准备
- 二、安装Containerd
- 三、安装k8s
- 四、安装部署dashboard
ps:第一遍搭建ks8的时候,由于k8s在1.24版本之后就放弃了对docker的支持,如果要继续使用docker需要自己加载插件。所以一开始就是直接使用 k8s1.24+containerd进行搭建。
后续相关的文章,原来是基于 k8s1.24+containerd操作编写的。但是。搭建过程中发现相对于 k8s1.24+containerd组合,网上查阅资料相对较少。所以后来就回退到 k8s1.23.6+docker重新实操一遍,重新整了下文档。不过也只是改变了底层的容器使用方式,后续的文章操作大体上对container也是适用的。
个人觉得docker现在还行,如果习惯使用docker的,可以继续使用8s1.24之前的版本,功能够用就行。
一、服务器准备
-
as asdf 服务器准备
服务器名称 服务器IP 角色 CPU(最低要求) 内存(最低要求) master 192.168.248.10 master 2核 2G worker1 192.168.248.11 node 2核 2G worker2 192.168.248.12 node 2核 2G -
修改ip:vi /etc/sysconfig/network-scripts/ifcfg-ens33
-
修改主机名:hostnamectl set-hostname master
-
修改主机名与ip映射:vi /etc/hosts
192.168.248.10 master 192.168.248.11 worker1 192.168.248.12 worker2
-
重置网络:service network restart
-
关闭防火墙:systemctl stop firewalld
二、安装Containerd
ps:本文章所有的配置,没有提示的默认三台都要配置
-
下载安装包:https://github.com/containerd/containerd/releases/download/v1.4.12/cri-containerd-cni-1.4.12-linux-amd64.tar.gz
-
创建文件夹:mkdir /opt/cri-containerd-cni
-
上传文件夹并且解压:tar -xvf cri-containerd-cni-1.4.12-linux-amd64.tar.gz
-
将解压的文件,复制到系统的配置目录和执行目录
cp -a /opt/cri-containerd-cni/etc/systemd/system/containerd.service /etc/systemd/system cp -a /opt/cri-containerd-cni/etc/crictl.yaml /etc cp -a /opt/cri-containerd-cni/etc/cni /etc cp -a /opt/cri-containerd-cni/usr/local/sbin/runc /usr/local/sbin cp -a /opt/cri-containerd-cni/usr/local/bin/* /usr/local/bin cp -a /opt/cri-containerd-cni/opt/* /opt
-
启动containerd
systemctl daemon-reload systemctl enable containerd --now
-
创建文件夹:mkdir /etc/containerd
-
配置containerd:containerd config default | tee /etc/containerd/config.toml
-
修改配置文件:/etc/containerd/config.toml
1. 修改配置:sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2" 2. 在[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下面加一行SystemdCgroup = true 3. 将[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]替换成下面三行endpoint = ["https://bh9y01q2.mirror.aliyuncs.com"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]endpoint = ["https://registry.cn-hangzhou.aliyuncs.com/google_containers"] 弃用:endpoint = ["https://docker.mirrors.ustc.edu.cn"]
ps:endpoint = [“https://bh9y01q2.mirror.aliyuncs.com”],这个地址可以自己取阿里云注册使用
1)登录阿里云:https://www.aliyun.com/
2)获取平台分配的镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
-
重启containerd
systemctl daemon-reload systemctl restart containerd
-
安装nerdctl
1)概念
nerdctl是containerd原生的命令行管理工具。和Docker的命令行兼容 nerdctl管理的容器、镜像与Kubernetes的容器、镜像是完全隔离的,不能互通。目前只能通过crictl命令行工具来查看、拉取Kubernetes的容器、镜像 nerdctl和containerd的版本对应关系,参考:https://github.com/containerd/nerdctl/blob/v0.6.1/go.mod
2)下载安装包:https://github.com/containerd/nerdctl/releases/download/v0.6.1/nerdctl-0.6.1-linux-amd64.tar.gz
3)创建文件夹:mkdir /opt/nerdctl
4)上传并且解压:tar -xvf nerdctl-0.6.1-linux-amd64.tar.gz
5)拷贝:cp -a /opt/nerdctl/nerdctl /usr/bin
6)查看镜像:nerdctl images
ps: nerdctl run -p containerPort:hostPort的端口映射无效,只能通过
nerdctl run -net host
来实现 -
安装crictl
1)概念:crictl是Kubernetes用于管理Containerd上的镜像和容器的一个命令行工具,主要用于Debug
2)下载:https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.0/crictl-v1.24.0-linux-amd64.tar.gz
3)创建文件夹:mkdir /opt/crictl
4)解压:tar -zxvf crictl-v1.24.0-linux-amd64.tar.gz -C /usr/local/bin
5)创建crictl的配置文件:vi /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock image-endpoint: unix:///var/run/containerd/containerd.sock timeout: 10 debug: false pull-image-on-create: false
6)加载:systemctl daemon-reload
7)测试:crictl images
-
安装buildkit
1)概念:使用
nerdctl build
进行Dockerfile的镜像构建时,报缺少buildkit,所以需要进行安装 ps:buildkit和containerd的版本对应关系,参考:https://github.com/moby/buildkit/blob/v0.8.3/go.mod
2)下载安装包:https://github.com/moby/buildkit/releases/download/v0.8.3/buildkit-v0.8.3.linux-amd64.tar.gz
3)创建文件夹:mkdir /opt/buildkit
4)解压:tar -xvf buildkit-v0.8.3.linux-amd64.tar.gz
5)拷贝:cp -a bin /usr/local
6)编写buildkitd的启动文件:vi /etc/systemd/system/buildkit.service
[Unit] Description=BuildKit Documentation=https://github.com/moby/buildkit[Service] ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true[Install] WantedBy=multi-user.target
7)启动buildkitd服务端程序:systemctl enable buildkit --now
三、安装k8s
ps:本文章所有的配置,没有提示的默认三台都要配置
-
禁用selinux
[root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive
ps:永久禁用方法(需重启服务器)
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
-
关闭swap:wapoff -a
ps1:swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用。但是会对系统性能产生影响。所以这里需要关闭。如果不能关闭,则在需要修改集群的配置参数
ps2:永久关闭方法,需重启服务器
sed -ri 's/.*swap.*/#&/' /etc/fstab
-
查看:free -m
-
bridged网桥设置
1)概念:为了让服务器的iptables能发现bridged traffic,需要添加网桥过滤和地址转发功能
2)新建modules-load.d/k8s.conf文件:vi /etc/modules-load.d/k8s.conf
overlay br_netfilter
3)新建sysctl.d/k8s.conf文件:vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1
4)加载配置文件:sysctl --system
5)加载br_netfilter网桥过滤模块 :modprobe br_netfilter
6)加载网络虚拟化技术模块:modprobe overlay
7)检验网桥过滤模块是否加载成功:lsmod | grep -e br_netfilter -e overlay
-
配置IPVS
1)概念:service有基于iptables和基于ipvs两种代理模型。基于ipvs的性能要高一些。需要手动载入才能使用ipvs模块
2)安装ipset和ipvsadm:yum install ipset ipvsadm
3)新建脚本文件:vi /etc/sysconfig/modules/ipvs.modules
modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4
4)添加执行权限给脚本文件,然后执行脚本文件
chmod +x /etc/sysconfig/modules/ipvs.modules /bin/bash /etc/sysconfig/modules/ipvs.modules
5)检验模块是否加载成功:lsmod | grep -e ip_vs -e nf_conntrack_ipv4
-
安装kubelet、kubeadm、kubectl
1)添加yum源:vi /etc/yum.repos.d/kubernetes.repo
[kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
2)下载:yum install -y --setopt=obsoletes=0 kubelet-1.24.0 kubeadm-1.24.0 kubectl-1.24.0
3)配置: systemctl enable kubelet --now
4)相关概念
1. obsoletes等于1表示更新旧的rpm包的同时会删除旧包,0表示更新旧的rpm包不会删除旧包 2. kubelet启动后,可以用命令journalctl -f -u kubelet查看kubelet更详细的日志 3. kubelet默认使用systemd作为cgroup driver 4. 启动后,kubelet现在每隔几秒就会重启,因为它陷入了一个等待kubeadm指令的死循环
-
下载各个机器需要的镜像
1)查看集群所需镜像的版本:kubeadm config images list
2)创建文件夹:mkdir /opt/k8s
3)创建文件:vi /opt/k8s/images.sh
#!/bin/bashimages=( kube-apiserver:v1.24.0 kube-controller-manager:v1.24.0 kube-scheduler:v1.24.0 kube-proxy:v1.24.0 pause:3.7 etcd:3.5.3-0 coredns:v1.8.6 ) for imageName in ${images[@]} ; do crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done
kube-apiserver:v1.24.0 #接口服务,给予rest风格开放k8s的接口服务 kube-controller-manager:v1.24.0 #控制管理器,管理各个类型的控制器,针对k8s中的各个资源进行管理 kube-scheduler:v1.24.0 #调度器,将pod根据一定的算法调用到合适的节点上 kube-proxy:v1.24.0 #网络代理,负责service的服务发现负载均衡 pause:3.7 etcd:3.5.3-0 #理解为ks的数据库,键值类型存储的分布式数据库,提供了基于Raft算法实现自主的集群高可用。老版本:基于内存。新版本:持久化存储 coredns:v1.8.6 #网络配置
4)赋权: chmod +x /opt/k8s/images.sh
5)执行下载: /opt/k8s/images.sh
-
初始化主节点(只在master节点执行)
kubeadm init --apiserver-advertise-address=192.168.248.10 --control-plane-endpoint=master --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.24.0 --service-cidr=10.96.0.0/16 --pod-network-cidr=192.169.0.0/16
ps:–pod-network-cidr跟主机网络必须不同
ps:将最后一段标黑的保存,后续使用
参数说明
--apiserver-advertise-address string 设置 apiserver 绑定的 IP.--apiserver-bind-port int32 设置apiserver 监听的端口. (默认 6443)--apiserver-cert-extra-sans strings api证书中指定额外的Subject Alternative Names (SANs) 可以是IP 也可以是DNS名称。 证书是和SAN绑定的。--cert-dir string 证书存放的目录 (默认 "/etc/kubernetes/pki")--certificate-key string kubeadm-cert secret 中 用于加密 control-plane 证书的key--config string kubeadm 配置文件的路径.--cri-socket string CRI socket 文件路径,如果为空 kubeadm 将自动发现相关的socket文件; 只有当机器中存在多个 CRI socket 或者 存在非标准 CRI socket 时才指定.--dry-run 测试,并不真正执行;输出运行后的结果.--feature-gates string 指定启用哪些额外的feature 使用 key=value 对的形式。--help -h 帮助文档--ignore-preflight-errors strings 忽略前置检查错误,被忽略的错误将被显示为警告. 例子: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks.--image-repository string 选择拉取 control plane images 的镜像repo (default "k8s.gcr.io")--kubernetes-version string 选择K8S版本. (default "stable-1")--node-name string 指定node的名称,默认使用 node 的 hostname.--pod-network-cidr string 指定 pod 的网络, control plane 会自动将 网络发布到其他节点的node,让其上启动的容器使用此网络--service-cidr string 指定service 的IP 范围. (default "10.96.0.0/12")--service-dns-domain string 指定 service 的 dns 后缀, e.g. "myorg.internal". (default "cluster.local")--skip-certificate-key-print 不打印 control-plane 用于加密证书的key.--skip-phases strings 跳过指定的阶段(phase)--skip-token-print 不打印 kubeadm init 生成的 default bootstrap token --token string 指定 node 和control plane 之间,简历双向认证的token ,格式为 [a-z0-9]{6}\.[a-z0-9]{16} - e.g. abcdef.0123456789abcdef--token-ttl duration token 自动删除的时间间隔。 (e.g. 1s, 2m, 3h). 如果设置为 '0', token 永不过期 (default 24h0m0s)--upload-certs 上传 control-plane 证书到 kubeadm-certs Secret.
ps:如果想要回退,可执行以下指令
kubeadm reset -f rm -rf /etc/kubernetes rm -rf /var/lib/etcd/ rm -rf $HOME/.kube
-
查看状态:systemctl status kubelet
ps:如果报错,可以使用journalctl -xefu kubelet看下哪里的问题
-
设置.kube/config(只在master执行)
1)mkdir -p $HOME/.kube
2)cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3)chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config
-
安装网络插件calico(只在master执行)
1)切换目录:cd /opt/k8s
2)下载:curl https://docs.projectcalico.org/archive/v3.19/manifests/calico.yaml -O
3)修改内容,其中value为上一步的–pod-network-cidr的ip
- name: CALICO_IPV4POOL_CIDR value: "192.169.0.0"
4)查看需要的镜像:cat calico.yaml | grep image
5)编辑镜像下载文件:vi /opt/calicoImages.sh
#!/bin/bashimages=( docker.io/calico/cni:v3.19.4 docker.io/calico/pod2daemon-flexvol:v3.19.4 docker.io/calico/node:v3.19.4 docker.io/calico/kube-controllers:v3.19.4 ) for imageName in ${images[@]} ; do crictl pull $imageName done
6)赋权:chmod +x /opt/calicoImages.sh
7)执行:/opt/calicoImages.sh
8)部署calico(只在master执行):kubectl apply -f calico.yaml
9)此时查看master的状态:kubectl get pods -A
10)kubectl get nodes
-
加入node节点(只在node执行)
1)执行:kubeadm join master:6443 --token x3mk8z.fzaqp9swqxl2o6r3 --discovery-token-ca-cert-hash sha256:f4ced0c25b14a796e02b3300b011f7ec8e120c01e95595d78b6d1b38b8805dfc
2)令牌有效期24小时,可以在master节点生成新令牌命令: kubeadm token create --print-join-command
3)查看master的状态:kubectl get pods -A
4)kubectl get nodes
5)拷贝主节点文件使node节点可以执行kubectl命令:scp -r H O M E / . k u b e w o r k e r 1 : HOME/.kube worker1: HOME/.kubeworker1:HOME
ps:拷贝完,自行在node节点测试kubectl命令
6)将主节点中的/etc/kubernetes/admin.conf文件拷贝到从node节点相同目录下
7)导入环境
echo export KUBECONFIG=/etc/kubernetes/admin.conf >> ~/.bash_profile source ~/.bash_profile
四、安装部署dashboard
ps:只在master执行
-
dashboard和kubernetes的版本对应关系,参考:https://github.com/kubernetes/dashboard/blob/v2.5.1/go.mod
-
下载镜像:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
ps:会下载kubernetesui/dashboard:v2.5.1、kubernetesui/metrics-scraper:v1.0.7两个镜像
-
定时刷新查看进度:watch -n 3 kubectl get pods -A
-
设置访问端口:kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
将type: ClusterIP改为:type: NodePort 添加 nodePort: 32414
-
查看端口命令:kubectl get svc -A | grep kubernetes-dashboard
-
访问dashborad页面:
https://192.168.248.11:32414
,如下所示
-
创建访问账号
1)vi /opt/dash.yaml
创建用户–》申明角色–》用户和角色绑定
apiVersion: v1 kind: ServiceAccount metadata:name: admin-usernamespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: admin-user roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin subjects: - kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
2)应用:
3)获取访问令牌: kubectl -n kubernetes-dashboard create token admin-user
4)将获取的token填入页面登录即可
相关文章:

1-k8s1.24-底座搭建-基于containerd
文章目录 一、服务器准备二、安装Containerd三、安装k8s四、安装部署dashboard ps:第一遍搭建ks8的时候,由于k8s在1.24版本之后就放弃了对docker的支持,如果要继续使用docker需要自己加载插件。所以一开始就是直接使用 k8s1.24containerd进行…...
Java文件前后端上传下载工具类
任何非压缩格式下载 package com.pisx.pd.eco.util;import java.io.*; import java.util.Collections; import java.util.HashMap; import java.util.Map;import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse;import org.springframewo…...
内燃机可变气门驱动研究进展
Review of Advancement in Variable Valve Actuation of Internal Combustion Engines AbstractIntroduction燃烧和气体交换需要电子控制 paper Abstract 近年来,人们对空气污染和能源使用的日益关注导致了车辆动力总成系统的电气化。 另一方面,一个多世…...
NEFU离散数学实验2-容斥原理
相关概念 离散数学中的容斥原理是一种使用集合运算的技巧,通常用于计算两个或更多集合的并集或交集的大小。以下是一些与容斥原理相关的常见概念和公式。 概念: 1. 集合:由元素组成的对象,通常用大写字母表示,如A、B、…...

解决Windows内存溢出/占满死机问题-PoolMon工具
某一天, 工作所用笔记本突然越来越卡直至死机 以为只是windows11的抽风行为,之前就因为windows11资源管理器经常卡死(后升级小版本好多了)。 遂长按电源键强制关机重启。 然慢慢又越来越卡,直至卡死,无…...

【ROS】ros-noetic和anaconda联合使用【教程】
【ROS】ros-noetic和anaconda联合使用【教程】 文章目录 【ROS】ros-noetic和anaconda联合使用【教程】1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1. 安装anaconda 在Ubuntu20.04中安装…...
自动化RPA开发 --获取所有窗口信息和进程信息
场景 准备做一个RPA工具,可以从桌面和浏览器选择元素,获取窗口信息和进程信息是必要的,因为获取了窗口信息和进程,可用对程序做一些想要的操作。 coding 工具类 /*** Windows系统工具类*/ public class WinOsUtils {static fi…...

【Qt之布局】QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout介绍及使用
在Qt中,布局管理器(Layout)用于管理窗口中的控件的位置和大小,以适应不同大小的窗口。 常用的布局管理器包括QVBoxLayout、QHBoxLayout、QGridLayout和QFormLayout。 先放张布局UI: 1. QVBoxLayout(垂直布…...

【计算机毕业设计】python在线课程培训学习考试系统637r7-PyCharm项目
使用说明 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 使用PyCharm 导入项目,修改配置,运行项目; 将项目中config.ini配置文件中的数据库配置改为自己的配置,…...

vue3后台管理系统之登录界面和业务的实现
1.静态页面的搭建 <template><div class"login_container"><el-row><el-col :span"12" :xs"0" /><el-col :span"12" :xs"24"><!-- 登录的表单 --><el-form ref"loginForms&qu…...

GEE19:基于Landsat8的常见的植被指数逐年获取
植被指数逐年获取 1. 常见的植被指数1.1 比值植被指数(Ratio vegetation index,RVI)1.2 归一化植被指数(Normalized Difference Vegetation Index,NDVI)1.3 增强植被指数(Enhanced Vegetation I…...
Python【多分支实际应用的练习】
要求:某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折)小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱? 代码如下: tshirt_price 35 # T恤的单价 pan…...

LeetCode 343. 整数拆分(动态规划)
LeetCode 343. 整数拆分 思路: 通过题目我们可以知道,一个正整数最少拆成2个数,最多拆成n个数,即可拆分的个数为2~n 若将拆除的第一个正整数令为k,那么剩下的数则为n-k,此时可以不拆分&#x…...

C++对象模型(12)-- 构造函数语义学:构造函数
1、默认构造函数生成规则 编译器不一定会为类生成默认构造函数,但在下列情况下,编译器会生成默认构造函数。 (1)该类没有任何构造函数,但包含一个类类型的成员变量,且成员变量所属的类有默认构造函数。 …...

[23] T^3Bench: Benchmarking Current Progress in Text-to-3D Generation
3D生成蓬勃发展,主流方法通过事例比较和用户调查来评价方法好坏,缺少客观比较指标;本文提出Bench,首次综合比较了不同生成方法;具体来说,本文设计了质量评估(Quality Assessment)和对…...
linux系统如何定时关机
立刻关机 poweroff 10分钟后自动关机 shutdown -h 10 如果希望终止上面执行的10分钟关机,则执行: shutdown -c 希望在22:00关闭计算机 shutdown -h 22:00...

构建高性能物联网数据平台:EMQX和CnosDB的完整教程
CnosDB 是一款高性能、高压缩率、高易用性的开源分布式时序数据库。主要应用场景为物联网、工业互联网、车联网和IT运维。所有代码均已在GitHub开源。本文将介绍如何使用EMQX 这一MQTT 服务器 CnosDB 构建物联网数据平台,实现物联网数据的实时流处理。 前言 在物联…...
【vim 学习系列文章 11 -- vim filetype | execute | runtimepath 详细介绍】
文章目录 filetype plugin indent on 什么功能?vim runtimepath 详细介绍vim 中 execute 命令详细介绍execute pathogen#infect() 详细介绍 filetype plugin indent on 什么功能? 在网上我们经常可以看到vimrc配置中有 filetype plugin indent on 这个配…...

[备忘]WindowsLinux上查看端口被什么进程占用|端口占用
Windows上 查看端口占用: netstat -aon|findstr <端口号> 通过进程ID查询进程信息 tasklist | findstr <上一步查出来的进程号> 图例: Linux 上 查看端口占用: netstat -tuln | grep <端口号> lsof -i:<端口号&…...
函数的扩展
文章目录 函数的扩展1.函数参数的默认值1.1 基本用法-- 参数变量是默认声明的,所以不能用 let或const 再次声明-- 使用参数默认值时,函数不能有同名参数1.2 与解构赋值默认值结合使用☆☆☆ 函数参数的默认值生效以后,参数解构赋值依然会进行…...

Cypress安装使用
node.js 安装使用Cypress总是会看见node.js,那就先看看node.js是什么。JavaScript以前运行需要在浏览器中(浏览器内置解释器),通过node.js框架内置v8引擎(也就是可以执行js脚本所需的工具),这样…...

怎么把图片改成jpg格式?
怎么把图片改成jpg格式?大家都知道,随着计算机被发明到现在已经存在了很多年,在这么多的的技术发展过程中,也形成了种类非常多的图片文件格式,例如平时我们能接触到的图片格式有jpg、png、gif、bmp、heic、tiff、jfif、…...
[一带一路金砖 2023 CTF]Crypto
题1 题目描述: from Crypto.Util.number import * from flag import flag import gmpy2 assert(len(flag)38) flag bytes_to_long(flag)p getPrime(512) q getPrime(512)e 304 enc pow(flag,e,p*q) print(p) print(q) print(enc) #9794998439882070838464987…...
FPGA【Verilog语法】
关键字: and always assign begin buf bufif0 bufif1 case casex casez cmos deassign default defparam disable edge else end endcase endfunction endprimitive endmodule endspecify endtable …...

Flume 整合 Kafka
1.背景 先说一下,为什么要使用 Flume + Kafka? 以实时流处理项目为例,由于采集的数据量可能存在峰值和峰谷,假设是一个电商项目,那么峰值通常出现在秒杀时,这时如果直接将 Flume 聚合后的数据输入到 Storm 等分布式计算框架中,可能就会超过集群的处理能力,这时采用 Kaf…...

VUE:侧边弹出栏组件,组件中有树状图,搜索框可筛选树状图节点,可收缩
作者:CSDN @ _乐多_ 本文记录了一个侧边弹出栏组件代码。代码即插即用。 弹出栏中有树状图,搜索框,可收缩。 其中,搜索框可筛选树状图节点。点击右侧小按钮可以收缩弹出框,点击X号也可以收缩弹出框。 文章目录 一、组件代码代码依赖element-plus库。且需要下载几个svg图…...

如何使用pytorch定义一个多层感知神经网络模型——拓展到所有模型知识
# 导入必要的库 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, random_split import torchvision.transforms as transforms import torchvision.datasets as datasets# 定义MLP模型 class MLP(nn.Module):def __…...

为什么引入SVG文件,给它定义属性不生效原理分析
背景: 我使用antd 的Icon组件引入SVG图片,但给svg图片定义styles样式时,不生效,为什么呢? 我们平时用antd组件库的 < ArrowRightOutlined style{{color: red }}>时为什么会生效呢,但我图一这样定义就…...
Integer包装类常用方法和属性
包装类 什么是包装类Integer包装类常用方法和属性 什么是包装类 Java 包装类是指为了方便处理基本数据类型而提供的对应的引用类型。Java 提供了八个基本数据类型(boolean、byte、short、int、long、float、double、char),每个基本数据类型对…...

基于Spring boot轻松实现一个多数据源框架
Spring Boot 提供了 Data JPA 的包,允许你使用类似 ORM 的接口连接到 RDMS。它很容易使用和实现,只需要在 pom.xml 中添加一个条目(如果使用的是 Maven,Gradle 则是在 build.gradle 文件中)。 <dependencies>&l…...