当前位置: 首页 > news >正文

K8s 一键部署 MongoDB 的 Replica-Set 和 MongoDB-Express

什么是 MongoDB 副本集?

MongoDB 副本集(Replica-Set)是一个分布式数据库系统,它包含一个主节点和多个从节点。主节点负责处理所有写操作,从节点用于读取数据。当主节点发生故障时,从节点可以自动选举一个新的主节点。

副本集的主要目的是 提供高可用性和数据冗余。如果主节点发生故障,系统仍然可用并且数据不会丢失。

接下来我们详细讲解如何在 k8s 中部署 MongoDB 副本集集群模式。

部署步骤

详细拆解 k8s 部署 mongodb 副本集(Replica-Set)模式相关服务的执行步骤。

1. Secret

apiVersion: v1
kind: Secret
metadata:name: mongodb-secret
type: Opaque
data:mongo-root-username: <base64-encoded-username>mongo-root-password: <base64-encoded-password>
  • 优化建议:确保 <base64-encoded-username><base64-encoded-password> 已经正确编码为 Base64 格式。
  • 解释:Secret 用于存储敏感信息,如用户名和密码,以保护这些信息不被直接暴露。

2. ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:name: mongodb-init
data:init-mongo.js: |rs.initiate({_id : "rs0",members: [{ _id: 0, host: "mongodb-replica-set-0.mongodb-replica-set:27017" },{ _id: 1, host: "mongodb-replica-set-1.mongodb-replica-set:27017" },{ _id: 2, host: "mongodb-replica-set-2.mongodb-replica-set:27017" }]})
  • 优化建议:确保 init-mongo.js 脚本中的主机名和端口与 StatefulSet 中的配置一致。
  • 解释:ConfigMap 用于存储配置文件或脚本,这里用于初始化 MongoDB 的副本集。

3. StatefulSet

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mongodb-replica-set
spec:serviceName: "mongodb-replica-set"replicas: 3selector:matchLabels:app: mongodb-replica-settemplate:metadata:labels:app: mongodb-replica-setspec:containers:- name: mongodbimage: mongo:7.0.14ports:- containerPort: 27017volumeMounts:- name: mongodb-datamountPath: /data/db- name: mongodb-init-scriptsmountPath: /docker-entrypoint-initdb.denv:- name: MONGO_INITDB_ROOT_USERNAMEvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-username- name: MONGO_INITDB_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-password- name: MONGO_REPLICA_SET_NAMEvalue: rs0volumeClaimTemplates:- metadata:name: mongodb-dataspec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 20Givolumes:- name: mongodb-init-scriptsconfigMap:name: mongodb-init
  • 优化建议:
    • 确保 volumeClaimTemplates 中的存储请求大小(storage: 20Gi)符合实际需求。
    • 确保 image: mongo:7.0.14 是否最新的稳定版本。
  • 解释:StatefulSet 用于管理有状态的应用程序,如 MongoDB 副本集。它确保每个 Pod 有一个唯一的标识符,并且可以持久化存储数据。

4. Service for MongoDB

apiVersion: v1
kind: Service
metadata:name: mongodb-replica-set
spec:ports:- port: 27017targetPort: 27017clusterIP: Noneselector:app: mongodb-replica-set
  • 优化建议:确保 clusterIP: None,这表示这是一个 Headless Service,适用于 StatefulSet
  • 解释:Service 用于定义如何访问 PodHeadless Service 不会分配集群 IP,而是通过 DNS 解析 PodIP 地址。

5. Deployment for Mongo Express

apiVersion: apps/v1
kind: Deployment
metadata:name: mongo-express
spec:replicas: 1selector:matchLabels:app: mongo-expresstemplate:metadata:labels:app: mongo-expressspec:containers:- name: mongo-expressimage: mongo-express:1.0.2-20-alpine3.19ports:- containerPort: 8081env:- name: ME_CONFIG_MONGODB_URLvalue: "mongodb://<username>:<password>@mongodb-replica-set-0.mongodb-replica-set:27017,mongodb-replica-set-1.mongodb-replica-set:27017,mongodb-replica-set-2.mongodb-replica-set:27017/?replicaSet=rs0"- name: ME_CONFIG_MONGODB_ENABLE_ADMINvalue: "true"- name: ME_CONFIG_MONGODB_ADMINUSERNAMEvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-username- name: ME_CONFIG_MONGODB_ADMINPASSWORDvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-password
  • 优化建议:
    • 确保 ME_CONFIG_MONGODB_URL 中的 <username><password> 替换为实际的用户名和密码。
    • 确保 image: mongo-express:1.0.2-20-alpine3.19 是最新的稳定版本。
  • 解释:Deployment 用于管理无状态的应用程序,如 Mongo Express,它提供了一个 Web 界面来管理和监控 MongoDB

6. Service for Mongo Express

apiVersion: v1
kind: Service
metadata:name: mongo-express
spec:ports:- port: 8081targetPort: 8081selector:app: mongo-expresstype: LoadBalancer
  • 优化建议:确保 type: LoadBalancer 符合你的环境要求,如果你在本地开发环境中,可能需要改为 NodePort
  • 解释:Service 用于定义如何访问 mongo-expressLoadBalancer 类型通常用于云环境中,提供外部访问。

应用配置

可将上述内容保存为一个文件(例如:k8s-mongodb-replicaset.yaml):

---
apiVersion: v1
kind: Secret
metadata:name: mongodb-secret
type: Opaque
data:mongo-root-username: <base64-encoded-username>mongo-root-password: <base64-encoded-password>---
apiVersion: v1
kind: ConfigMap
metadata:name: mongodb-init
data:init-mongo.js: |rs.initiate({_id : "rs0",members: [{ _id: 0, host: "mongodb-replica-set-0.mongodb-replica-set:27017" },{ _id: 1, host: "mongodb-replica-set-1.mongodb-replica-set:27017" },{ _id: 2, host: "mongodb-replica-set-2.mongodb-replica-set:27017" }]})---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: mongodb-replica-set
spec:serviceName: "mongodb-replica-set"replicas: 3selector:matchLabels:app: mongodb-replica-settemplate:metadata:labels:app: mongodb-replica-setspec:containers:- name: mongodbimage: mongo:7.0.14ports:- containerPort: 27017volumeMounts:- name: mongodb-datamountPath: /data/db- name: mongodb-init-scriptsmountPath: /docker-entrypoint-initdb.denv:- name: MONGO_INITDB_ROOT_USERNAMEvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-username- name: MONGO_INITDB_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-password- name: MONGO_REPLICA_SET_NAMEvalue: rs0volumeClaimTemplates:- metadata:name: mongodb-dataspec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 20Givolumes:- name: mongodb-init-scriptsconfigMap:name: mongodb-init---
apiVersion: v1
kind: Service
metadata:name: mongodb-replica-set
spec:ports:- port: 27017targetPort: 27017clusterIP: Noneselector:app: mongodb-replica-set---
apiVersion: apps/v1
kind: Deployment
metadata:name: mongo-express
spec:replicas: 1selector:matchLabels:app: mongo-expresstemplate:metadata:labels:app: mongo-expressspec:containers:- name: mongo-expressimage: mongo-express:1.0.2-20-alpine3.19ports:- containerPort: 8081env:- name: ME_CONFIG_MONGODB_URLvalue: "mongodb://<username>:<password>@mongodb-replica-set-0.mongodb-replica-set:27017,mongodb-replica-set-1.mongodb-replica-set:27017,mongodb-replica-set-2.mongodb-replica-set:27017/?replicaSet=rs0"- name: ME_CONFIG_MONGODB_ENABLE_ADMINvalue: "true"- name: ME_CONFIG_MONGODB_ADMINUSERNAMEvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-username- name: ME_CONFIG_MONGODB_ADMINPASSWORDvalueFrom:secretKeyRef:name: mongodb-secretkey: mongo-root-password---
apiVersion: v1
kind: Service
metadata:name: mongo-express
spec:ports:- port: 8081targetPort: 8081selector:app: mongo-expresstype: LoadBalancer

然后使用以下命令将其应用到 Kubernetes 集群中:

kubectl apply -f k8s-mongodb-replicaset.yaml

这样,你就可以在 Kubernetes 中部署一个高可用的 MongoDB 副本集(Replica-Set)和一个用于管理和监控的 Mongo Express

MongoDB 副本集连接字符串

连接字符串是连接到 MongoDB 副本集的必要信息。它包含以下几个部分:

  • 主机和端口:指定主节点的主机和端口号。
  • 副本集名称:指定要连接的副本集的名称。
  • 鉴权信息:如果需要用户名和密码进行身份验证,可以提供鉴权信息。
  • 其他选项:其他可选参数,如 SSL 配置、连接超时等。

连接字符串示例

  • 示例1:mongo-express 连接字符串示例

通过上面 k8s-mongodb-replicaset.yaml 文件部署的 MongoDB 副本集连接字符串示例如下:

# 字符串格式
mongodb://username:password@host1:port1,host2:port2,host3:port3/database?replicaSet=myReplicaSet&ssl=true# 集群部署式例
mongodb://<username>:<password>@mongodb-replica-set-0.mongodb-replica-set:27017,mongodb-replica-set-1.mongodb-replica-set:27017,mongodb-replica-set-2.mongodb-replica-set:27017/?replicaSet=rs0&ssl=true

在上面的示例中,我们提供了用户名<username> 和密码<password>进行身份验证,并指定了三个主机和端口号以及要连接的副本集名称为 “rs0”,并且还设置了 SSLtrue

  • 示例2:

假设我们有一个 MongoDB 副本集,包含一个主节点和两个从节点。主节点的主机和端口号为 “host1:27017″,从节点分别为 “host2:27017”“host3:27017″。我们使用的副本集名称为 “myReplicaSet”,需要使用用户名 “admin” 和密码 “password” 进行身份验证。

以下是一个示例的连接字符串:

mongodb://admin:password@host1:27017,host2:27017,host3:27017/test?replicaSet=myReplicaSet&ssl=true&authSource=admin

在上面的示例中,我们连接到了该副本集的主节点,使用了用户名 “admin” 和密码 “password” 进行身份验证,并将数据库设置为 “test”。副本集的名称为 “myReplicaSet”,启用了 SSL 连接,并且身份验证数据库为 “admin”

连接字符串选项

连接字符串中的选项可以根据需要进行配置。以下是一些常用的选项:

  • authSource:指定用于身份验证的数据库,默认为 “admin”
  • ssl:启用 SSL 连接。
  • retryWrites:如果写操作失败,是否自动重试。
  • readPreference:读操作的偏好设置,可以是 “primary”、”secondary” 或 “nearest”
  • readConcern:读操作的一致性级别,可以是 “local”、”majority” 或 “linearizable”
  • w:写操作的确认级别,可以是 数字或 “majority”

这些选项可以根据应用程序的需求进行配置。

总结

K8s 中的 YAML 文件部署说明:

  • SecretConfigMap 确保了敏感信息和初始化脚本的安全性和正确性。
  • StatefulSetService 确保了 MongoDB 副本集(Replica-Set)的高可用性和数据持久化。
  • DeploymentService 确保了 Mongo Express 的正常运行和外部访问。

MongoDB 副本集连接字符串说明:

  • 连接字符串包含了 必要的信息,例如:主机和端口号、副本集名称以及身份验证信息。我们还讨论了一些常用的 连接字符串选项,并给出了一个示例。
  • 连接到 MongoDB 副本集可以 提供高可用性和数据冗余,确保系统在主节点故障时仍然可用。通过 正确配置连接字符串,我们可以灵活地管理 MongoDB 副本集的连接和访问。

相关文章:

K8s 一键部署 MongoDB 的 Replica-Set 和 MongoDB-Express

什么是 MongoDB 副本集&#xff1f; MongoDB 副本集&#xff08;Replica-Set&#xff09;是一个分布式数据库系统&#xff0c;它包含一个主节点和多个从节点。主节点负责处理所有写操作&#xff0c;从节点用于读取数据。当主节点发生故障时&#xff0c;从节点可以自动选举一个…...

React Native的界面与交互

React Native (RN) 是一个由 Facebook 开发的开源框架&#xff0c;用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程&#xff0c;使得开发者可以更快速、更高效地构建高质量的应…...

【探寻密码的奥秘】-001:解开密码的神秘面纱

目录 1、密码学概述1.1、概念1.2、目的1.3、应用场景 2、密码学的历史2.1、第一时期&#xff1a;古代密码时代2.2、第二时期&#xff1a;机械密码时代2.3、第三时期&#xff1a;信息密码时代2.4、第四时期&#xff1a;现代密码时代 3、密码学的基本概念3.1、一般通信系统3.2、保…...

C++实现Raft算法

概念部分 Raft 算法是一种用于实现分布式系统中的一致性的算法。它是为了容易理解而设计的&#xff0c;其目标是实现和 Paxos 算法相同的功能&#xff0c;但更加容易理解和实现。Raft 算法在分布式系统中尤其关键&#xff0c;因为它帮助系统中的多个节点就其数据的准确状态达成…...

FastApi教程

FastAPI框架 fastapi&#xff0c;一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的web框架。 fastapi是建立在Starlette和Pydantic基础上的&#xff0c;Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/…...

HTB:WifineticTwo[WriteUP]

目录 连接至HTB服务器并启动靶机 信息搜集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机开放端口进行脚本、服务扫描 使用curl访问靶机8080端口 使用浏览器直接访问/login路径 漏洞利用 使用searchsploit搜索该WebAPP漏洞 Payload USER_FLAG&#xff1a;bb…...

ubuntu16.04在ros使用USB摄像头-解决could not open /dev/video0问题

首先检查摄像头 lsusb 安装 uvc camera 功能包 sudo apt-get install ros-indigo-uvc-camera 安装 image 相关功能包 sudo apt-get install ros-kinetic-image-* sudo apt-get install ros-kinetic-rqt-image-view运行 uvc_camera 节点 首先输入roscore 然后另外开一个终端输入…...

大模型专栏--什么是大模型

什么是大模型 来自 chatGPT 的回答&#xff1a; “大模型”通常指的是在机器学习和深度学习领域&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;和计算机视觉&#xff08;CV&#xff09;中&#xff0c;具有大量参数和复杂结构的模型。这些模型通常需要大量的数据和…...

LLaMA-Mesh: Unifying 3D Mesh Generation with Language Models 论文解读

目录 一、概述 二、相关工作 1、LLMs到多模态 2、3D对象生成 3、自回归的Mesh生成 三、LLaMA-Mesh 1、3D表示 2、预训练模型 3、有监督的微调数据集 4、数据集演示 四、实验 1、生成的多样性 2、不同模型text-to-Mesh的比较 3、通用语境的评估 一、概述 该论文首…...

golang实现TCP服务器与客户端的断线自动重连功能

1.服务端 2.客户端 生成服务端口程序: 生成客户端程序: 测试断线重连: 初始连接成功...

项目实战:基于深度学习的人脸表情识别系统设计与实现

大家好&#xff0c;人脸表情识别是计算机视觉领域中的一个重要研究方向&#xff0c;它涉及到对人类情感状态的理解和分析。随着深度学习技术的发展&#xff0c;基于深度学习的人脸表情识别系统因其高精度和强大的特征学习能力而受到广泛关注。本文旨在探讨基于深度学习的人脸表…...

【mongodb】社区版8:改变配置bindip和授权

更改配置 sudo systemctl restart mongod (base) root@k8s-master-pfsrv:/home/zhangbin# sudo tail -n 20 /var/log/mongodb/mongod.log 日志感觉是成功了:{"t":{"$date":"2024-11-19T19:57:47.076+08:00"...

python入门9-函数基础

函数介绍 <1>什么是函数 请看如下代码: print(" _ooOoo_ ") print(" o8888888o ") print(" 88 . 88 ") print(" …...

AMD(Xilinx) FPGA配置Flash大小选择

目录 1 FPGA配置Flash大小的决定因素2 为什么选择的Flash容量大小为最小保证能够完成整个FPGA的配置呢&#xff1f; 1 FPGA配置Flash大小的决定因素 在进行FPGA硬件设计时&#xff0c;选择合适的配置Flash是我们进行硬件设计必须考虑的&#xff0c;那么配置Flash大小的选择由什…...

TypeScript学习笔记(二)

接一 四、类型声明 使用 : 来对变量或函数形参&#xff0c;进行类型声明&#xff1a; let a: string //变量a只能存储字符串 let b: number //变量b只能存储数值 let c: boolean //变量c只能存储布尔值 a hello a 100 //警告&#xff1a;不能将类型“number”分配给类型“…...

Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤

官网&#xff1a;https://www.jenkins.io/ 1 下载 环境准备&#xff1a; 版本支持查询&#xff1a;https://pkg.jenkins.io/redhat-stable/ 安装JDK17&#xff1a;https://blog.csdn.net/qq_44870331/article/details/140784297 yum -y install epel-release wget upgradew…...

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法

概述 多目标粒子群优化&#xff08;MOPSO&#xff09; 是粒子群优化&#xff08;PSO&#xff09;的一种扩展&#xff0c;用于解决具有多个目标函数的优化问题。MOPSO的目标是找到一组非支配解&#xff08;Pareto最优解&#xff09;&#xff0c;这些解在不同目标之间达到平衡。…...

【网络系统管理】2023年全国职业院校技能大赛:组策略--10套题组合--1

1、限制访问C盘; (1)搜索《我的电脑》 (2)用户配置\策略\管理模板\Windows组件\文件资源管理器 2、禁止运行run.exe; (1)搜索《应用程序》 (2)用户配置\策略\管理模板\系统...

【Golang】——Gin 框架中的 API 请求处理与 JSON 数据绑定

在现代 Web 开发中&#xff0c;API&#xff08;特别是 RESTful API&#xff09;是前后端分离架构的核心。Gin 框架提供了丰富的功能来处理 API 请求和 JSON 数据&#xff0c;使得开发者可以快速构建高效的接口服务。本篇博客将从基础到深入&#xff0c;全面讲解如何使用 Gin 框…...

在Linux下配置gitee与Github的远程仓库

目录 前言 云服务器下载git 检测是否下载成功git Linux下配置gitee远程仓库 代码提交演示 git三板斧 Linux下配置Github远程仓库 最后的提醒 前言 那么本篇文章将是在&#xff0c;你已经创建了本地仓库的基础上&#xff0c;在Linux下配置gitee的远程仓库的步骤&#xff…...

自动化测试过程操作细节

一、软件与框架介绍 1. Postman 读音&#xff1a;[pəʊstmən]&#xff08;剖斯特曼&#xff09; 介绍&#xff1a;API开发与测试的得力助手&#xff0c;通过直观界面发送HTTP请求&#xff0c;查看响应数据。支持环境变量、集合、脚本等功能。 主要特点&#xff1a;易于使用…...

iic协议

IIC&#xff08;Inter-Integrated Circuit&#xff09;协议&#xff0c;也被称为I2C协议&#xff0c;是一种由荷兰的PHILIPS公司&#xff08;现为NXP半导体公司&#xff09;开发的简单、高效的通信协议。以下是关于IIC协议的详细介绍&#xff1a; 一、IIC协议概述 定义&#…...

uniapp、js判断输入的内容是整数

清奇的思路 通过取余运算符 % 来检查 输入的内容是否为整数 for (var i 0; i < this.list.length; i) {if (this.list[i].times % 1 ! 0) { // 使用取余运算符检查是否为整数uni.showToast({icon: none,title: 请输入整数的套餐次数,})return;}}...

《Qt Creator:人工智能时代的跨平台开发利器》

《Qt Creator&#xff1a;人工智能时代的跨平台开发利器》 一、Qt Creator 简介&#xff08;一&#xff09;功能和优势&#xff08;二&#xff09;快捷键与效率提升&#xff08;三&#xff09;跨平台支持&#xff08;四&#xff09;工具介绍与使用主要特性&#xff1a;使用步骤…...

The Yarn application application_xxx_xxx doesn‘t exist in RM

本文主要解决flink在standalone模式下&#xff0c;flink run却一直使用yarn-session模式的问题。 问题 有个客户找到笔者&#xff0c;问题是报错如下: 分析 笔者先从环境入手&#xff0c;首先要确定的是flink是使用了什么模式。确认过后是使用standalone模式。 那就很奇怪&a…...

爬虫实战:采集知乎XXX话题数据

目录 反爬虫的本意和其带来的挑战目标实战开发准备代码开发发现问题1. 发现问题[01]2. 发现问题[02] 解决问题1. 解决问题[01]2. 解决问题[02] 最终结果 结语 反爬虫的本意和其带来的挑战 在这个数字化时代社交媒体已经成为人们表达观点的重要渠道&#xff0c;对企业来说&…...

【C++篇】像解谜一样转换字符串:stoi 带你走向整数的世界

文章目录 前言 在现代 C 编程中&#xff0c;字符串与数字之间的转换是非常常见的需求。随着编程语言的发展&#xff0c;C 提供了多种方式来处理这种转换。stoi&#xff08;string to integer&#xff09;函数正是为了简化这一任务而被引入的。 在 C 的早期版本中&#xff0c;字…...

小U数数问题

问题描述 小U正在数偶数&#xff0c;从 0,2,4,6,8,10,12,…0,2,4,6,8,10,12,… 开始&#xff0c;依次将这些数连在一起&#xff0c;形成一个无穷长的字符串&#xff0c;例如&#xff1a;"0246810121416..."。小U想知道这个字符串中的第 nn 个字符是什么。 测试样例 …...

Rocky Linux 系统安装/部署 Docker

1、下载docker-ce的repo文件 [rootlocalhost ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo % Total % Received % Xferd Average Speed Time Time Time Current Dloa…...

程序语言语法上手题目合集

程序语言语法上手题目合集 1跑步2猜年龄3Vigenre 密码 1跑步 2.跑步 - 蓝桥云课 枚举日期&#xff0c;判断是否符合条件即可。 参考程序&#xff1a; #include<stdio.h> int y2022,m1,d1; int week6; int month[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int judg…...

MCU通过APB总线与FPGA 数据交互(实现JATG 模块的控制)

问题出发点: 通过MCU 的APB 将数据发送到fpga 端;fpga 端实现 jtag 模块功能,支持状态机TAP的移动主要是:从IDLE 移动到 shirft-IR 发送指令数据然后再回到 IDLE ,从 IDLE 移动到shirft-DR 发送用户数据再回到IDLE;从而可以 通过 mcu端实现jtag 协议控制。 为了实现 MC…...

Mysql的UPDATE(更新数据)详解

MySQL的UPDATE语句是用于修改数据库表中已存在的记录&#xff0c;本文将详细介绍UPDATE语句的基本语法、高级用法、性能优化策略以及注意事项&#xff0c;帮助您更好地理解和应用这一重要的SQL命令。 1. 基本语法 单表更新 单表更新的基本语法如下&#xff1a; UPDATE [LOW…...

【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦

Dual Pixel 简介 双像素是成像系统的感光元器件中单帧同时生成的图像&#xff1a;通过双像素可以实现&#xff1a;深度估计、图像去模糊去雨去雾恢复、图像重建 成像原理来源如上&#xff0c;也有遮罩等方式的pd生成&#xff0c;如图双像素视图可以看到光圈的不同一半&#x…...

如何使用AWS Lambda构建一个云端工具(超详细)

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;如何使用AWS Lambda构建一个云端工具&#xff08;超详细&#xff09; 1 前言 1.1 无服务器架构 无服务器架构&#xff08;Serverless Computing&#xff09;是一种云计算服务模型&#xff0c;它允许开发者构建和运行…...

Scala—数组(数组定义、数组常用方法等)— 用法详解

Scala Scala-数组-用法详解 Scala一、数组的定义1. new 关键字2. Array 对象的 apply 方法3. 创建多维数组 二、数组常用方法1. length&#xff1a;获取数组的长度。2. apply&#xff1a;通过索引获取数组中的元素。3. update&#xff1a;通过索引更新数组中的元素。4. foreach…...

使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介

作者&#xff1a;来自 Elastic Chema Martinez 在安全领域&#xff0c;能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点&#xff0c;Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 - 这是一种强大的 Windows 原生机…...

二分排序

二分问题之前遇到很多次了&#xff0c;不过一直是手写完整二分&#xff0c;现在转变一下想法&#xff0c;直接使用函数lower_bound和upper_bound更方便 lower_bound 有序数组中 查找第一个不小于指定值的位置。 本质二分代码&#xff1a; int lower_bound_custom(int* arr, i…...

数据库---HSQLDB使用教程详解

本学校期末的课程设计要求使用HSQLDB数据库&#xff0c;作为一个小众且轻量的数据库&#xff0c;很少人接触过&#xff0c;再加上同学们都问这个方面&#xff0c;所以就出教程&#xff0c;展示怎么使用HSQLDB。 第一步&#xff1a;启动HSQLDB 下载HSQLDB的jar包&#xff0c;因…...

Makefile基础应用

1 使用场景 在Linux环境下&#xff0c;我们通常需要通过命令行来编译代码。例如&#xff0c;在使用gcc编译C语言代码时&#xff0c;需要使用以下命令。 gcc -o main main.c 使用这种方式编译代码非常吃力&#xff0c;每次调试代码都需要重新在命令行下重新编译&#xff0c;重复…...

一个点绕任意点旋转后的点的坐标

在平面坐标上&#xff0c;任意点P(x1,y1)&#xff0c;绕一个坐标点Q(x2,y2)逆时针旋转θ角度后,新的坐标设为(x, y)的计算公式&#xff1a; x (x1 - x2)*cos(θ) - (y1 - y2)*sin(θ) x2 ; y (x1 - x2)*sin(θ) (y1 - y2)*cos(θ) y2 ; 另一个场景应用&#xff0c;坐标轴绕…...

嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)

引言&#xff1a;对于嵌入式硬件这个庞大的知识体系而言&#xff0c;太多离散的知识点很容易疏漏&#xff0c;因此对于这些容易忘记甚至不明白的知识点做成一个梳理&#xff0c;供大家参考以及学习&#xff0c;本文主要针对芯片输入接入0.1uf电容的本质的知识点的进行学习。 目…...

算力100问☞第16问:什么是TPU?

TPU全称是Tensor Processing Unit芯片&#xff0c;中文全称是张量处理单元芯片&#xff0c;是谷歌开发的一种特殊类型的芯片&#xff0c;用于加速人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;工作负载。TPU主要针对张量&#xff08;tensor&#xf…...

Level DB --- SkipList

class SkipList class SkipList 是Level DB中的重要数据结构&#xff0c;存储在memtable中的数据通过SkipList来存储和检索数据&#xff0c;它有优秀的读写性能&#xff0c;且和红黑树相比&#xff0c;更适合多线程的操作。 SkipList SkipList还是一个比较简单的数据结构&a…...

全面解析 JMeter 后置处理器:概念、工作原理与应用场景

在性能测试中&#xff0c;Apache JMeter是一个非常流行的工具&#xff0c;它不仅能够模拟大量用户进行并发访问&#xff0c;还提供了丰富的扩展机制来满足各种复杂的测试需求。后置处理器&#xff08;Post-Processor&#xff09;是JMeter中非常重要的组件之一&#xff0c;用于在…...

【视频】二维码识别:libzbar-dev、zbar-tools(zbarimg )

1、简介 ZBar可以使用多个方式识别各种条形码和二维码。 支持的格式有:EAN-13/UPC-A、UPC-E、EAN-8、Code 128、Code 93、Code 39、Codabar、Interleaved 2 of 5、QR Code和SQ Code 支持的来源有:视频流、图像文件等 libzbar-dev:二维码识别开发库 zbar-tools(zbarimg …...

EasyExcel: 结合springboot实现表格导出入(单/多sheet), 全字段校验,批次等操作(全)

全文目录,一步到位 1.前言简介1.1 链接传送门1.1.1 easyExcel传送门 2. Excel表格导入过程2.1 easyExcel的使用准备工作2.1.1 导入maven依赖2.1.2 建立一个util包2.1.3 ExcelUtils统一功能封装(单/多sheet导入)2.1.4 ExcelDataListener数据监听器2.1.5 ResponseHelper响应值处理…...

志愿者小程序源码社区网格志愿者服务小程序php

志愿者服务小程序源码开发方案&#xff1a;开发语言后端php&#xff0c;tp框架&#xff0c;前端是uniapp。 一 志愿者端-小程序&#xff1a; 申请成为志愿者&#xff0c;志愿者组织端进行审核。成为志愿者后&#xff0c;可以报名参加志愿者活动。 志愿者地图&#xff1a;可以…...

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…...

小白学多线程(持续更新中)

1.JDK中的线程池 JDK中创建线程池有一个最全的构造方法&#xff0c;里面七个参数如上所示。 执行流程分析&#xff1a; 模拟条件&#xff1a;10个核心线程数&#xff0c;200个最大线程数&#xff0c;阻塞队列大小为100。 当有小于十个任务要处理时&#xff0c;因为小于核心线…...

【uni-app多端】修复stmopjs下plus-websocket无心跳的问题

从这篇文章接着向下看&#xff1a; uniapp plus-websocket 和stompjs连接教程 安卓ios手机端有效 - 简书 按照文章的方式&#xff0c;能够实现APP下stmopjs长连接。但是有一个问题&#xff0c;就是会频繁输出 res-创建连接-1- 跟踪连接&#xff0c;会发现连接都会在大约40s后…...