02.Kubernetes 集群部署
Kubernetes 集群部署
Kubernetes 相关端口
1. Kubernetes 集群组件运行模式
独立组件模式
- 除 Add-ons 以外,各关键组件以二进制方式部署于节点上,并运行于守护进程;
- 各 Add-ons 以 Pod 形式运行
静态 Pod 模式
- 控制平面各组件以静态 Pod 对象运行于 Master 主机之上
- kubelet 和 docker 以二进制部署,运行为守护进程
- kube-proxy 等则以 Pod 形式运行
- k8s.gcr.io
2. 安装工具
- 原生安装工具 kubeadm
- CNCF 认证的安装工具
3. 部署前提
使用 kubeadm 部署 Kubernetes 集群的前提条件
- 支持 Kubernetes 运行的 Linux 主机,例如 Debian、RedHat 及其变体等
- 每主机 2GB 以上的内存,以及 2 颗以上的 CPU
- 各主机间能够通过网络正常通信,支持各节点位于不同的网络中
- 独占的 hostname、MAC 地址以及 product_uuid,主机名能够正常解析
- 放行由 Kubernetes 使用到的各端口,或直接禁用 iptables
- 禁用各主机的上的 Swap 设备
- 各主机时间同步
准备代理服务,以便接入 registry.k8s.io,或根据部署过程提示的方法获取相应的 Image
重要提示
- kubeadm 不仅支持集群部署,还支持集群升级、卸载、更新数字证书等功能
- 目前,kubeadm 为各节点默认生成的 SSL 证书的有效期限为1年,在到期之前需要更新这些证书
集群部署步骤
- 验证各前提条件是否已然满足
- 在各节点上安装容器运行时
- 在各节点上安装 kubeadm、kubelet和 kubectl
- 创建集群
- 在控制平面的第一个节点上,使用 kubeadm init 命令拉起控制平面
- 会生成 token 以认证后续加入的节点
- (实验环境可选)将其它几个控制平面节点使用 kubeadm join 命令加入到控制平面集群中
- 提示:需要先从第一个控制平面节点上拿到 CA 及 API Server 等相应的证书
- 将各 worker 节点使用 kubeadm join 命令加入到集群中
- 确认各节点状态正常转为 “Ready”
- 在控制平面的第一个节点上,使用 kubeadm init 命令拉起控制平面
4. 部署具体步骤
官方文档:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
使用 kubeadm 快速部署一个 Kubernetes 集群
环境准备
四台 Ubuntu2204 虚拟机 2G 2CPU
IP地址 | hostname |
---|---|
10.0.0.100 | master1.munan.com |
10.0.0.110 | node1.munan.com |
10.0.0.120 | node2.munan.com |
10.0.0.130 | node3.munan.com |
验证每个节点的 MAC 地址和product_uuid是否唯一
ip acat /sys/class/dmi/id/product_uuid
免密登录打通
4.1 设置 hostname
# master1 节点
[root@Ubuntu2204 ~]#hostnamectl set-hostname master1.munan.com
[root@Ubuntu2204 ~]#hostname
master1.munan.com
[root@Ubuntu2204 ~]#bash
[root@master1 ~]## node1 节点
[root@Ubuntu2204 ~]#hostnamectl set-hostname node1.munan.com
[root@Ubuntu2204 ~]#hostname
node1.munan.com
[root@Ubuntu2204 ~]#bash
[root@node1 ~]## node2 节点
[root@Ubuntu2204 ~]#hostnamectl set-hostname node2.munan.com
[root@Ubuntu2204 ~]#hostname
node2.munan.com
[root@Ubuntu2204 ~]#bash
[root@node2 ~]## node3 节点
[root@Ubuntu2204 ~]#hostnamectl set-hostname node3.munan.com
[root@Ubuntu2204 ~]#hostname
node3.munan.com
[root@Ubuntu2204 ~]#bash
[root@node3 ~]#
4.2 设置时间同步
一个 master 节点和三个 node 节点都需要安装,并修改 /etc/chrony/chrony.conf 文件
apt -y install chronyvim /etc/chrony/chrony.conf注释 pool 开头的几行20 #pool ntp.ubuntu.com iburst maxsources 421 #pool 0.ubuntu.pool.ntp.org iburst maxsources 122 #pool 1.ubuntu.pool.ntp.org iburst maxsources 123 #pool 2.ubuntu.pool.ntp.org iburst maxsources 224 server ntp.aliyun.com iburst25 server time1-5.cloud.tencent.com iburstsystemctl restart chrony.servicesystemctl enable --now chrony.servicesystemctl status chrony.servicechronyc sources -v
4.3 设置主机名称解析
一个 master 节点和三个 node 节点 都需要设置
vim /etc/hosts10.0.0.100 master1.munan.com
10.0.0.110 node1.munan.com
10.0.0.120 node2.munan.com
10.0.0.130 node3.munan.com
4.4 禁用 swap
一个 master 节点和三个 node 节点 都需要禁用
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab# 查看交换分区内存是否为 0
free -htotal used free shared buff/cache available
内存: 1.9Gi 296Mi 1.2Gi 1.0Mi 371Mi 1.4Gi
交换: 0B 0B 0B
4.5 禁用默认的防火墙服务
一个 master 节点和三个 node 节点 都需要禁用
ufw disable
ufw status
4.6 内核参数调整
一个 master 节点和三个 node 节点 都需要配置
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFmodprobe overlaymodprobe br_netfilterlsmod | grep br_netfilterbash -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/k8s.conf'
把 cri-containerd 的包上传
一个 master 节点和三个 node 节点 都需要上传
cri-containerd-cni-1.7.13-linux-amd64.tar.gz tar -xvf cri-containerd-cni-1.7.13-linux-amd64.tar.gz -C /containerd -vmkdir /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.tomlvim /etc/containerd/config.tomlsandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
SystemdCgroup = truesystemctl enable --now containerd
4.7 安装kubelet、kubeadm和kubectl
一个 master 节点和三个 node 节点 都需要安装和配置
apt-get update && apt-get install -y apt-transport-httpscurl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpgecho "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.listapt-get updateapt-get install -y kubelet kubeadm kubectl
4.8 初始化第一个主节点
sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.15 --cri-socket unix:///run/containerd/containerd.sock[root@master1 ~]#sudo kubeadm init \
--apiserver-advertise-address=10.0.0.100 \ # 修改为主节点 IP
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.28.15 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock
把这一段生成的复制下来
To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou 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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 10.0.0.100:6443 --token kr1pgl.ymatmfkihnklyhf6 \--discovery-token-ca-cert-hash sha256:af3f0be0229b6ab564eb778442f6488b3db586adc8e656db8a7be479fb2b266f
# master1 节点
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config# node1 node2 node3 节点
kubeadm join 10.0.0.100:6443 --token kr1pgl.ymatmfkihnklyhf6 \--discovery-token-ca-cert-hash sha256:af3f0be0229b6ab564eb778442f6488b3db586adc8e656db8a7be479fb2b266f [root@master1 ~]#kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1.munan.com Ready control-plane 5m1s v1.28.15
node1.munan.com Ready <none> 28s v1.28.15
node2.munan.com Ready <none> 6s v1.28.15
node3.munan.com Ready <none> 2s v1.28.15
故障处理
apt-get install -y kubelet kubeadm kubectl
E: 无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 1605(unattended-upgr)持有
N: 请注意,直接移除锁文件不一定是合适的解决方案,且可能损坏您的系统。
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?解决方法:等待一段时间,直到unattended-upgr进程完成其任务并释放锁
ps aux | grep apt
Ready 2s v1.28.15
故障处理```bash
apt-get install -y kubelet kubeadm kubectl
E: 无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 1605(unattended-upgr)持有
N: 请注意,直接移除锁文件不一定是合适的解决方案,且可能损坏您的系统。
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?解决方法:等待一段时间,直到unattended-upgr进程完成其任务并释放锁
ps aux | grep apt
相关文章:
02.Kubernetes 集群部署
Kubernetes 集群部署 Kubernetes 相关端口 1. Kubernetes 集群组件运行模式 独立组件模式 除 Add-ons 以外,各关键组件以二进制方式部署于节点上,并运行于守护进程;各 Add-ons 以 Pod 形式运行 静态 Pod 模式 控制平面各组件以静态 Pod …...
支持向量机(SVM)原理与应用
背景 支持向量机(Support Vector Machine, SVM)是一种经典的监督学习算法,广泛应用于分类和回归问题。SVM以其强大的数学基础和优异的性能在机器学习领域占据了重要地位。本文将详细介绍SVM的原理、核函数的作用以及如何在Python中使用SVM解决…...
【文献阅读】SPRec:用自我博弈打破大语言模型推荐的“同质化”困境
📜研究背景 在如今的信息洪流中,推荐系统已经成为了我们生活中的“贴心小助手”,无论是看电影、听音乐还是购物,推荐系统都在努力为我们提供个性化的内容。但这些看似贴心的推荐背后,其实隐藏着一个严重的问题——同质…...
【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)?
查看 WPS 的输入静态地理数据方法总结 方法 1:使用 gdal_translate 将二进制数据转换为 GeoTIFFgdal_translate 工具概述使用 gdal_translate 将二进制数据转换为 GeoTIFF方法 2:使用 ncdump 查看 geo_em.dXX.nc方法 3:使用 Python xarray + matplotlib 可视化 geo_em.dXX.n…...
介绍如何使用RDDM(残差噪声双扩散模型)进行知识蒸馏
下面为你详细介绍如何使用RDDM(残差噪声双扩散模型)进行知识蒸馏,从而实现学生RDDM模型的一步去噪。这里假定你已经有了RDDM模型,并且使用PyTorch深度学习框架。 整体思路 数据准备:加载训练数据并进行必要的预处理。…...
【lf中的git实战】
1)开发分支 develop 2)各种功能分支 author/feature_func 3)release分支 4)合并author/feature_func到develop author/feature_func 到 develop时: cd develop git merge --squash author/feature_func 5)develop合并到author/feature_func时: cd author/feature_func g…...
Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡
Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡 步骤一:服务端获取GPU元数据 1. 添加依赖 在pom.xml中引入Apache Commons Exec用于执行命令: <dependency><groupId>org.apache.commons</groupId><artifactId>comm…...
编译支持 RKmpp 和 RGA 的 ffmpeg 源码
一、前言 RK3588 支持VPU硬件解码,需要rkmpp进行调用;支持2D图像加速,需要 RGA 进行调用。 这两个库均能通过 ffmpeg-rockchip 进行间接调用,编译时需要开启对应的功能。 二、依赖安装 编译ffmpeg前需要编译 rkmpp 和 RGA…...
布隆过滤器(Bloom Filter)
布隆过滤器是一种概率型数据结构,用于快速判断一个元素是否可能在集合中存在。它的核心特点是: 节省空间:相比哈希表,布隆过滤器占用的存储空间非常小。高效查询:查询时间复杂度为 (O(k)),其中 (k) 是哈希…...
2025-03-10 学习记录--C/C++-C语言 易错点 大总结
C语言 易错点 大总结 一、strlen(strs) 使用错误 ⭐️ 若strs 是一个指针数组(const char* strs[]),则不可用strlen(strs) 计算 strs 的长度,因为 strlen 是用于计算 字符串 的长度,而不是数组的长度。 解决方法 &…...
康谋应用 | 基于多传感器融合的海洋数据采集系统
在海洋监测领域,基于无人艇能够实现高效、实时、自动化的海洋数据采集,从而为海洋环境保护、资源开发等提供有力支持。其中,无人艇的控制算法训练往往需要大量高质量的数据支持。然而,海洋数据采集也面临数据噪声和误差、数据融合…...
SpringMVC (二)请求处理
目录 章节简介 一 请求处理(初级) eg:请求头 二 请求处理(进阶) eg:请求体 三 获取请求头 四 获取Cookie 五 级联封装 六 使用RequestBoby封装JSON对象 七 文件的上传 八 获取整个请求 HttpEntity 九 原生请求 Spring…...
数据结构——单链表list
前言:大家好😍,本文主要介绍数据结构——单链表 目录 一、单链表 二、使用步骤 1.结构体定义 2.初始化 3.插入 3.1 头插 3.2 尾插 3.3 按位置插 四.删除 4.1头删 4.2 尾删 4.3 按位置删 4.4按值删 五 统计有效值个数 六 销毁…...
课程《Deep Learning Specialization》
在coursera上,Deep Learning Specialization 课程内容如下图所示: Week2 assignment, Logistic Regression....
低版本 Linux 系统通过二进制方式升级部署高版本 Docker
一、背景: 在一些 Linux 系统中,由于系统自带的软件源版本较低,或者因网络、权限等限制无法直接通过源文件来升级到最新版本的 Docker。这种情况下,采用二进制方式升级部署高版本 Docker 就成为一种有效的解决方案。下面将详…...
线索二叉树构造及遍历算法
线索二叉树构造以及遍历算法 线索二叉树(中序遍历版)构造线索二叉树构造双向线索链表遍历中序线索二叉树 线索二叉树(中序遍历版) 中序遍历找到对应结点的前驱(土方法) #mermaid-svg-eunGO5d2GhjLxCn5 {fo…...
3. 自定义类型****
目录 1. 内存对齐(必考) 如何计算? 为什么要内存对齐? 2. 联合 2.1 联合的定义 2.2 联合的特点 1. 内存对齐(必考) 结构体内存对齐是一个特别热门的考点。 如何计算? 第一个成员在与结构…...
Redis Sentinel (哨兵模式)深度解析:构建高可用分布式缓存系统的核心机制
一、传统主从复制的痛点 在分布式系统架构中,Redis 作为高性能缓存和数据存储解决方案,其可用性直接关系到整个系统的稳定性。传统的主从复制架构虽然实现了数据冗余,但在面临节点故障时仍存在明显缺陷: 手动故障转移…...
deepseek本地部署
deepseek本地部署 哈喽,兄弟们!大家可以想象一下,如果有一个超级聪明的人机大脑,能帮你解答任何问题,从复杂的数学难题到编程代码,再到那些让你头疼的写作任务,它都能轻松搞定。这不是科幻电影里的场景,而是DeepSeek带来的现实奇迹!DeepSeek,这个名字听起来就充满了…...
责任链模式的C++实现示例
核心思想 责任链模式是一种行为设计模式,允许多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合。请求沿着处理链传递,直到某个对象处理它为止。 解决的问题 解耦请求发送者与处理者:请求的发送者无需知道具…...
【蓝桥杯python研究生组备赛】003 贪心
题目1 股票买卖 给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易&…...
Banana Pi 与瑞萨电子携手共同推动开源创新:BPI-AI2N
2025年3月11日, Banana Pi 开源硬件平台很高兴宣布,与全球知名半导体解决方案供应商瑞萨电子(Renesas Electronics)正式达成技术合作关系。此次合作标志着双方将在开源技术、嵌入式系统和物联网等领域展开深度合作,为全…...
【算法工具】HDL: 基于摘要统计数据的高维连锁不平衡分析软件
## 前言 在基因组研究中,连锁不平衡(Linkage Disequilibrium, LD)分析是理解遗传变异之间关联的关键步骤。然而,当面对高维数据时,传统分析方法往往面临巨大计算挑战。今天为大家介绍一款强大的工具——HDL (High-Dimensional Linkage diseq…...
虚拟展览馆小程序:数字艺术与文化展示的新形式探索
虚拟展览馆小程序:数字艺术与文化展示的新形式探索 一、传统展览的痛点:物理空间的局限与数字化的必然 在传统的艺术与文化展览中,观众往往需要跨越地理距离、排队数小时才能进入展馆,而许多珍贵展品因保护需求无法长期展出。数据显示,全球90%以上的博物馆藏品常年沉睡于…...
docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境
docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境 docker-compose.yml services:mysql-8.0:container_name: mysql-8.0image: mysql:8.0restart: always#ports:#- "3306:3306"volumes:- ./etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro- ./var/log…...
java项目之基于ssm的在线学习系统(源码+文档)
项目简介 在线学习系统实现了以下功能: 该系统可以实现论坛管理,通知信息管理,学生管理,回答管理,教师管理,教案管理,公告信息管理,作业管理等功能。 💕💕作…...
macOS 安装配置 iTerm2 记录
都说 macOS 里替换终端最好的就是 iTerm2 ,这玩意儿还是开源的,所以就也根风学习一下,但全是英文的挺麻烦,所以这里记录一下自己的设置,以最简单的安装及设置为主,想要更酷炫、更好看的还请自己百度吧&…...
矩阵分析-浅要理解(深度学习方向)
梯度分析与最优化 在深度学习的任务中,我们所期望的是训练一个神经网络,使得预测结果与真实标签之间的误差最小化,这可以近似看作是一个提供梯度下降等优化找到全局最优解的凸优化问题。 奇异值分解 在信息工程领域,对数据处理的…...
Odoo 18 中的自动字段和预留字段
Odoo 18 中的自动字段和预留字段 作为一个开源平台,Odoo 的价值在于其使用和开发的灵活性、可扩展性和经济性。虽然 Odoo 本身主要用 Python 和 JavaScript 编写,但其作为开源 ERP 系统的价值超越了特定编程语言的范畴,为各行各业的企业提供了…...
【操作系统安全】任务1:操作系统部署
目录 一、VMware Workstation Pro 17 部署 二、VMware Workstation 联网方式 三、VMware 虚拟机安装流程 四、操作系统介绍 五、Kali 操作系统安装 六、Windows 系统安装 七、Windows 系统网络配置 八、Linux 网络配置 CSDN 原创主页:不羁https://blog.csd…...
Linux:自动化构建-make/Makefile
1.背景 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作…...
maven wrapper的使用
写在前面 考虑这样的场景,张三创建了一个maven项目使用了3.9版本,当李四下载下来去开发配置的却是3.6版本,此时李四就不得不再去配置一个3.9版本的maven,为了解决这个问题,maven引入了maven wrapper的机制(…...
DB-GPT-0.7版本win11安装,最新版本,安装方式变更了
之前两天折腾要死,只因为安装了旧版本问题太多,现在安装最新版本 快速开始_V0.7.0 语雀 DB-GPT 0.7.0 部署教程 - yyhhyys blog DB-GPT 0.7.0 与 DeepSeek 集成使用指南 - yyhhyys blog 首先代码结构换了,python包管理工作也换了…...
树莓集团落子海南,如何重构数字产业生态体系
树莓集团在海南的布局,是其整体商业战略中的关键一环。这背后,是对政策机遇、产业协同、以及区域优势的深度考量。 政策机遇 海南自贸港建设带来前所未有的政策红利,包括贸易、投资、资金等方面的自由便利。树莓集团紧抓这一机遇࿰…...
Spring Boot 项目部署启动异常问题分析与解决:主类缺失与依赖冲突的分析
Spring Boot 项目部署启动异常问题分析与解决 在近期的 Spring Boot 项目部署工作中,遭遇了一起典型的启动异常状况。经过多维度的深入排查以及细致的调试,最终确定问题的根源在于打包插件配置与依赖管理的综合影响。以下将详细阐述整个问题的分析过程以及对应的解决办法。 …...
共享内存(System V)——进程通信
个人主页:敲上瘾-CSDN博客 进程通信: 匿名管道:进程池的制作(linux进程间通信,匿名管道... ...)-CSDN博客命名管道:命名管道——进程间通信-CSDN博客 目录 一、共享内存的原理 二、信道的建立 …...
考研数学非数竞赛复习之Stolz定理求解数列极限
在非数类大学生数学竞赛中,Stolz定理作为一种强大的工具,经常被用来解决和式数列极限的问题,也被誉为离散版的’洛必达’方法,它提供了一种简洁而有效的方法,使得原本复杂繁琐的极限计算过程变得直观明了。本文&#x…...
12 DHCP的内容和HTTP的改良
一、回顾 计算机分配相关身份 网络号、主机号 网络号内的主机识别 局部网通信网关 不同网络的通信DNS服务器 域名解析 因特网通信 二、DHCP协议 建议学习前看这个视频,14分钟,所有的知识点都有,很容易理解 1、理解 DHCP 的全称是 Dynam…...
多光谱相机数据采集过程中常见仪器
1.BF1515多光谱相机 2.VIX-N220推扫式可见光近红外高光谱相机 覆盖光谱范围:400-1000nm; 光谱分辨率:2nm; 设备配套软件:VIX-N220、XuanDo(用于调节相机推扫速度); 镜头调节所需材料:黑色条…...
【调研】olmOCR解析PDF
测试用例: olmOCR GOT-OCR 将最底下没有文字的部分,可能是样式解析出重复 olmOCR GOT-OCR 无重复 重复 速度上,olmOCR效果更快 效果上,olmOCR解析得到的内容排版更加清晰整齐,而且对于6份GOT-OCR有重复的测…...
蓝桥杯随笔练——二分模板
答案 #include <bits/stdc.h> //洛谷2249 using namespace std;const int N 1e610; int n,m; int a[N];int Array_Search(int a[],int len,int x) {int L 0,R len1;while(L1 < R){int mid (RL) >> 1;if(a[mid] < x ) L mid;else R mid;}if(a[R] x) r…...
【Golang】第三弹----运算符
笔上得来终觉浅,绝知此事要躬行 🔥 个人主页:星云爱编程 🔥 所属专栏:Golang 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 一、运算符介绍 运算符是一…...
MongoDB 聚合管道速成教程
一、引言 MongoDB 的聚合管道(Aggregation Pipeline)是一种强大的数据处理工具,它允许你对文档进行一系列的操作,如过滤、转换、分组和聚合等。聚合管道由多个管道组成,每个管道对输入的文档进行特定的处理࿰…...
「JavaScript深入」二进制数据处理详解「Blob、File、FileReader、ArrayBuffer、Typed Arrays、DataView」
二进制数据处理详解 1. Blob(Binary Large Object)Blob 的特性创建 BlobBlob 主要方法Blob 的应用 2. FileFile 对象的属性获取 File 对象 3. FileReader创建 FileReader主要方法主要事件文件上传与读取内容示例文件分块读取示例 4. ArrayBuffer 与 Type…...
信号处理之插值、抽取与多项滤波
信号处理之插值、抽取与多项滤波 一、问题背景 插值(Interpolation)与抽取(Decimation)是数字信号处理中采样率转换的核心操作: 插值:在信号中插入新样本以提高采样率( L L L倍)抽取:按比例 M M M降低采样率…...
关于WPS的Excel点击单元格打开别的文档的两种方法的探究
问题需求 目录和文件结构如下: E:\Dir_Level1 │ Level1.txt │ └─Dir_Level2│ Level2.txt│ master.xlsx│└─Dir_Level3Level3.txt现在要在master.xlsx点击单元格进而访问Level1.txt、Level2.txt、Level3.txt这些文件。 方法一:“单元格右键…...
蓝桥 2109统计子矩阵
问题描述 给定一个NM 的矩阵 A, 请你统计有多少个子矩阵 (最小 11, 最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K ? 输入格式 第一行包含三个整数 N,M 和 K. 之后 NN 行每行包含 M 个整数, 代表矩阵 A. 输出格式 一个整数代表答案。 样例输入 3 4 10 1 2 3 4 5…...
AF3 make_fixed_size函数解读
AlphaFold3 data_transforms 模块的 make_fixed_size 函数的作用是将输入的蛋白质特征字典 protein 中的各个特征张量调整为固定大小。这是为了确保在批量处理时,所有特征张量的形状一致,从而避免形状不匹配的问题。 源代码: import itertools import torch from src.con…...
前端模块管理新思路:如何使用 Import Maps
前言 前端开发中,我们常常需要使用各种库和模块来构建功能丰富的应用。在传统方式中,管理这些库和模块的引用可能会有些繁琐。 幸运的是,Import Maps 的出现为我们提供了一种更简洁和高效的解决方案。今天我们就来聊聊如何使用 Import Maps。…...
交换机、路由器、网关、MAC地址——从入门到实战
你是否好奇,当你在手机上点击一个网页链接时,数据是如何从你的设备“飞”到千里之外的服务器并返回的?背后离不开交换机、路由器、网关和MAC地址的默契配合。本文用通俗语言实战场景,带你彻底搞懂这些网络核心组件,从此…...