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

java—14 ZooKeeper

一、ZooKeeper简介

ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务 是一种复杂的过程,ZooKeeper通过简单的架构和API解决了这个问题。ZooKeeper运行开 发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。

ZooKeeper的应用场景:

  • ① 分布式协调组件:在分布式系统中,需要有ZooKeeper作为分布式协调组件,来协调分布式系统中的 状态。
  • ② 分布式锁:ZooKeeper在实现分布式锁上面,可以做到强一致性。
  • ③ 无状态化的实现:可以将一些具有无状态的信息存储到ZooKeeper中,分布式服务直接去ZooKeeper中 获取相关信息。

二、znode介绍

1. ZooKeeper中数据的存储结构

ZooKeeper中的数据是保存在节点(znode)上的,多个znode之间够成一棵树形的目录 结构。

树是由节点所组成,ZooKeeper的数据存储也同样是基于节点,这种节点就做Znode; 但是,不同于树的节点,Znode的引用方式是路径引用,类似于文件路径: /a/b;这种的 层级结构,让每一个Znode节点拥有唯一的路径,就像命名空间一样,对不同信息做出 清晰的隔离。如下所示:

2. znode的结构

znode包含下面四个部分:

3. znode的类型-1

持久节点(create [节点] [存储的值(可选)]):创建出的节点,在会话结束后依然存在。保存数据。

持久序号节点(create -s [节点]):兼具持久节点的特征。创建出的节点,根据先后顺序,会在节点之后带上一个数值, 越后执行,这个数值越大。适合于分布式锁的应用场景(单调递增)。

临时节点(create -e [节点]):创建一个临时节点后,如果创建节点的会话结束,该节点会被自动的删除。通过这个 特性,zk可以实现服务的注册与发现。临时节点通过心跳机制,告诉zk服务器自己还存活 着。

4. znode的类型-2

临时序号节点(create -es [节点] 或 create -e -s [节点]):兼具临时节点+序号节点的特征总和。

容器节点(create -c [节点]):是在3.5.3版本新增的节点。当我们创建完容器节点后,如果该节点下没有任何子节点, 那么60秒后,该容器节点就会被zk删除。

TTL节点(create -t [毫秒数] [节点]):可以指定节点的到期时间,到期后会被zk删除。 需要通过系统配置extendedTypesEnabled=true开启。

5. 数据持久化机制

ZooKeeper的数据是在内存中运行的,它提供了两种持久化机制:

① 事务日志:ZooKeeper把执行的命令以日志的形式保存在dataLogDir指定的路径中的文件里,如 果没有指定dataLogDir,则按照dataDir指定的路径。

② 数据快照:ZooKeeper会在一定的时间间隔内做一次内存数据的快照,把这段时间的内存数据保 存到快照文件中。

ZooKeeper通过上面的两种形式的持久化,在恢复时先恢复快照文件中的数据到内存中, 再用日志文件中的数据做增量恢复,这样可以加快恢复速度。查看事务日志和数据快照 文件,如下所示:

三、zkCli常用指令操作

1. 常用指令

官方文档 https://zookeeper.apache.org/doc/r3.7.0/zookeeperCLI.html

查询某个节点下所有“一级”节点: ls [节点路径]

查询某节点下“所有”节点: ls -R [节点路径]

查询节点上存储的值: get [节点路径]

查询节点的详细信息: get -s [节点路径]

设置/修改节点上存储的值: set [节点路径] [存储的值]

删除节点(删除某节点,并且该节点下没有子节点): delete [节点路径]

删除节点(删除某节点以及节点下的所有子节点): deleteall [节点路径]

乐观锁删除(如果删除的版本不匹配,异常提醒:version No is not valid): delete -v [dataVersion] [节点路径]

2. 权限设置

ACL权限:定义了什么样的用户能够操作这个节点,且能够进行怎样的操作。

为当前会话添加权限账号和权限密码。 addauth digest [用户名]:[密码]

创建节点并设置权限。 create [节点] [节点value] auth:[用户名]:[密码]:[ACL命令]

四、ZK的读写锁设计

1. 读写锁概述

读锁(Read Lock): 并发的时候,多个线程都可以去执行读操作,彼此不会阻塞。 加读锁成功的前提是:没有对其待访问的资源加写锁。

写锁(Write Lock) :并发时如果多个线程都要去获得写锁,那么只有一条线程可以获得写锁,彼此会发生 阻塞。 加写锁成功的前提是:没有对其待访问的资源加任和锁(无论是写锁or读锁)。

如何实现读写锁?

  • 首先,在/lock路径下创建临时序号节点/lock/WRITE- 或 /lock/READ-,该节点就代表 将要获取的Write/Read锁节点。
  • 其次:获取/lock下的子节点,并按照临时节点的顺序号排序。
  • 最后:检查此Read/Write锁之前是否有Write锁,若有,则先注册对该Write锁前一个 锁的监听,然后阻塞该Read/Write锁的获取。 若监听到该Read/Write锁前一个Write锁已释放,则打开阻塞,继续执行。

2. 读写锁操作

步骤1:两个线程同时要获得Read Lock【001和002加Read锁成功】。请注意在下图中, 黄色星星表示获取锁成功!

步骤2:一个线程尝试获得Write Lock,发现前一个节点存在锁,则监听前一个节点 【003加Write锁失败】

步骤3:一个线程尝试要获得Read Lock,发现前面存在存在Write Lock的节点,则监 听离它最近的Write Lock节点【004加Read锁失败】 读写锁操作演示-3

步骤4:一个线程尝试要获得Read Lock,发现前面存在存在Write Lock的节点,则监 听离它最近的Write Lock节点【005加Read锁失败】

步骤5:001和002的业务执行完毕,释放Read锁,那么由于003监听了002,所以002释 放之后,它就获得了Write锁【003加Write锁成功】 读写锁操作演示-5

步骤6:003业务执行完毕,释放Write锁,由于004和005都监听了003,所以003释放之 后,就获得了Read锁【004和005加Read锁成功】

3. 使用Curator提供的读写锁

引入Maven依赖:

五、Watch机制

我们可以把Watch理解成是注册在指定Znode上的触发器。

当被Watch的这个Znode发生了变化(即:create、delete、setData方法)时,将会触发 Znode上注册的对应监听事件,请求Watch的客户端会接收到异步回调通知。

客户端使用了NIO通信模式监听服务的调用。

监听节点内容的变化,我们可以使用get -w [节点]

监听节点目录的变化,我们可以使用ls -w [节点]

监听所有级别子目录变化,我么可以使用ls -w -R [节点]

基于Curator使用Watch: ZookeeperDemoApplicationTests类的watch()方法

六、ZooKeeper集群

1. 集群搭建

2. ZooKeeper的Leader选举

ZooKeeper作为非常重要的分布式协调组件,需要进行集群部署,集群中会以一主多从 的形式进行部署。为了保证数据的一致性,使用了ZAB(ZooKeeper Atomic Broadcase) 协议,这个协议解决了ZooKeeper的崩溃恢复和主从数据同步的问题。

ZAB协议定义了如下四种节点状态:

3. Leader选举流程

第一轮选举投票

第二轮选举投票

确定leader后

Leader选举出来之后,会周期性不断的向Follower发送心跳 (ping命令,没有内容的 socket)。

当Leader崩溃后,Follower发现socket通道已经关闭,那么Follower就会从Following状态 进入到Looking状态,然后重新开始进行Leader的选举,在Leader选举的这个过程中,zk 集群不能堆外提供服务。

4. ZooKeeper的数据同步

如果客户端连接了Leader节 点,则直接将数据写入到主 节点;如果客户端连接到了 Follower节点,那么 Follower节点会将数据转发 给Leader节点,Leader节点 再将数据写入到本节点中。

相关文章:

java—14 ZooKeeper

一、ZooKeeper简介 ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务 是一种复杂的过程,ZooKeeper通过简单的架构和API解决了这个问题。ZooKeeper运行开 发人员专注于核心应用程序逻辑,而不必担心应用程序的分…...

特征存储的好处:特征存储在机器学习开发中的优势

随着企业寻求提升机器学习生产力和运营能力 (MLOps),特征存储 (Feature Store) 的普及度正在迅速提升。随着 MLOps 技术的进步,特征存储正成为机器学习基础设施的重要组成部分,帮助企业提升模型的性能和解释能力,并加速新模型与生产环境的集成。这些存储充当集中式存储库,…...

【Promethus(普罗米修斯)介绍安装及使用】

一、系统介绍 1、什么是Prometheus? Prometheus:不仅是一款时间序列数据库,在整个生态上还是一套完整的监控系统。同时,还涉及许多以“explore”命名的客户端数据采集工具以及pushgateway网关。 官网:https://prometheus.io/ 文献:https://prometheus.io/docs/introdu…...

力扣热题100题解(c++)—矩阵

73.矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 int m matrix.size(); // 行数int n matrix[0].size(); // 列数bool firstRowZero false; // 标记第一行是否包含 0bool f…...

Spring Boot Controller 单元测试撰写

文章目录 引言标准用法必需依赖项核心注解说明代码示例 当涉及静态方法时的测试策略必需依赖项核心注解说明代码示例 引言 之前在编写 Controller 层的单元测试时,我一直使用 SpringBootTest 注解,但它会加载整个 Spring 应用上下文,资源开销…...

MVCC详解

目录 undo日志版本链 read view一致性视图 MVCC过程分析 读事务&写事务 Multi-Version Concurrency Control,多版本并发控制在读已提交和可重复读隔离级别下都实现了MVCC机制 undo日志版本链 一行数据被修改后,MySQL会保留修改前的数据(u…...

【通关函数的递归】--递归思想的形成与应用

目录 一.递归的概念与思想 1.定义 2.递归的思想 3.递归的限制条件 二.递归举例 1.求n的阶乘 2.顺序打印一个整数的每一位 三.递归与迭代 前言:上篇博文分享了扫雷游戏的实现,这篇文章将会继续分享函数的递归相关知识点,让大家了解并掌握递归的思…...

Python爬虫实战:移动端逆向工具Fiddler经典案例

一、引言 在移动互联网迅猛发展的当下,移动端应用产生了海量的数据。对于开发者而言,获取这些数据对于市场调研、竞品分析、数据挖掘等工作具有重要意义。Fiddler 作为一款功能强大的 Web 调试代理工具,能够有效捕获、分析和修改移动端的网络请求,为开发者深入了解移动端网…...

从平台工程视角出发,重塑云原生后端的工程体系

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从 DevOps 到平台工程,云原生后端的演进逻辑 云原生的广泛应用,使得后端系统的开发、部署与运维逐渐从“编写业务代码”演进为“构建工程平台”。过去,后端开发者通常将注意力集中于 API 编写…...

【Hive入门】Hive分区与分桶深度解析:优化查询性能的关键技术

引言 在大数据领域,Apache Hive作为构建在Hadoop之上的数据仓库工具,因其类SQL的查询语言(HiveQL)和良好的扩展性而广受欢迎。然而,随着数据量的增长,查询性能往往成为瓶颈。本文将深入探讨Hive中两种关键的数据组织技术——分区(…...

Pytorch中的Dataset和DataLoader

1. PyTorch数据处理的核心概念 在PyTorch中,数据处理主要依赖两个核心组件: torch.utils.data.Dataset:定义如何访问数据集(单个样本的数据和标签)。torch.utils.data.DataLoader:负责批量加载数据、打乱数据、并行加载等。1.1 为什么需要Dataset和DataLoader? 问题:深…...

中介者模式:解耦对象间复杂交互的设计模式

中介者模式:解耦对象间复杂交互的设计模式 一、模式核心:用中介者统一管理对象交互,避免两两直接依赖 当系统中多个对象之间存在复杂的网状交互时(如 GUI 界面中按钮、文本框、下拉框的联动),对象间直接调…...

IEEE综述 | 车道拓扑推理20年演进:从程序化建模到车载传感器

导读 车道拓扑推理对于高精建图和自动驾驶应用至关重要,从早期的程序化建模方法发展到基于车载传感器的方法,但是很少有工作对车道拓扑推理技术进行全面概述。为此,本文系统性地调研了车道拓扑推理技术,同时确定了未来研究的挑战和…...

手撕C++STL list:深入理解双向链表的实现

目录 1. 引言 3. list 类的实现 (1) 基本结构 (2) 初始化与清理 (3) 插入与删除 (4) 常用接口 (4) 常用接口 4. 测试代码 5. 总结 1. 引言 在C STL中,list是一个基于双向链表的容器,支持高效的头尾插入/删除操作(O(1)时间复杂度&…...

QMT学习课程Day1

我们先从交易的最基础,如何进行下单,最为简答的下单,帮助大家建立自信心。 首先导入相关函数: #encoding:gbk import pandas as pd import numpy as np import datetime import pandas as pd import numpy as np import talib i…...

【Rust结构体】Rust结构体详解:从基础到高级应用

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

Java面试实战:音视频场景下的微服务架构与缓存技术剖析

面试场景描述 谢飞机,一位自称“全栈工程师”的程序员,来到一家互联网大厂参加Java开发岗位的面试。面试官是一位严肃的技术专家,他希望通过一系列问题考察谢飞机的实际技术水平。 第一轮提问(基础问题) 面试官&…...

Vue 3 的核心组合式 API 函数及其完整示例、使用场景和总结表格

以下是 Vue 3 的核心组合式 API 函数及其完整示例、使用场景和总结表格&#xff1a; 1. ref 作用 创建一个响应式引用值&#xff0c;用于管理基本类型或单个值的响应式状态。 示例 <template><div><p>Count: {{ count }}</p><button click&quo…...

Kotlin学习基础知识大全(上)

文章目录 Kotlin基础知识全面解析第一章&#xff1a;Kotlin语言概述1.1 Kotlin的发展历程1.2 Kotlin的设计目标1.3 Kotlin的应用领域1.4 Kotlin与Java的比较 第二章&#xff1a;Kotlin基础语法2.1 变量与常量2.2 基本数据类型数字类型示例&#xff1a;字符和字符串示例&#xf…...

【Java面试笔记:进阶】18.什么情况下Java程序会产生死锁?如何定位、修复?

死锁(Deadlock)是指两个或多个线程因竞争资源而无限期阻塞的现象。 1. 死锁的定义与产生原因 定义:死锁是一种程序状态,多个线程或进程因循环依赖而永久处于等待状态,无法继续执行。 根据 Coffman 条件,死锁产生需同时满足以下四个必要条件: 互斥(Mutual Exclusion)…...

PS Mac Photoshop 2025 for Mac图像处理 PS 2025安装笔记

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、Anticc简化版安装1.1双击运行软件&#xff0c;安装1.2 解决来源身份不明的开发者问题**此代码为打开&#xff1a;系统偏好设置 – 隐私与安全性&#xff0c;中的【任何来源】&#xff0c;如下图&#xff1a;**1.3 再次运行…...

HarmonyOS 框架基础知识

参考文档&#xff1a;HarmonyOS开发者文档 第三方库&#xff1a;OpenHarmony三方库中心仓 基础特性 Entry&#xff1a;关键装饰器 Components&#xff1a;组件 特性EntryComponent​​作用范围仅用于页面入口可定义任意可复用组件​​数量限制​​每个页面有且仅有一个无数量…...

LabVIEW实现Voronoi图绘制功能

该 LabVIEW 虚拟仪器&#xff08;VI&#xff09;借助 MathScript 节点&#xff0c;实现基于手机信号塔位置计算 Voronoi 图的功能。通过操作演示&#xff0c;能直观展示 Voronoi 图在空间划分上的应用。 各部分功能详细说明 随机地形创建部分 功能&#xff1a;根据 “Maximum a…...

centos7的环境下ollama 如何卸载

在 CentOS 7 环境下卸载 ollama&#xff0c;可以按照以下步骤操作。假设 ollama 是通过手动安装的&#xff0c;以下是卸载的详细步骤。 1. 停止所有运行中的 ollama 进程 在卸载之前&#xff0c;确保所有与 ollama 相关的进程都已停止。 查找并停止进程 ps aux | grep ollam…...

中心极限定理(CLT)习题集 · 答案与解析篇

中心极限定理(CLT)习题集 答案与解析篇 与题目篇一一对应。若有其他解法欢迎在评论区补充。 1. 概念与判断题 1.1 经典叙述 若 (X_1,X_2,\dots) i.i.d.,满足 (E[X_1]=\mu,;0<\sigma^2:=\operatorname{Var}(X_1)<\infty)。 则 [ Z_n=\frac{\sum_{k=1}^{n}(X_k-\mu)}…...

Spring Cloud Gateway配置双向SSL认证(完整指南)

本文将详细介绍如何为Spring Cloud Gateway配置双向SSL认证,包括证书生成、配置和使用。 目录结构 /my-gateway-project ├── /certs │ ├── ca.crt # 根证书 │ ├── ca.key # 根私钥 │ ├── gateway.crt # 网关证书 │ ├── …...

中间系统-SPF计算

SPF计算 isis如何计算路由&#xff1a;以自己为根构建SPF树&#xff0c;之后填充叶子。 <R1>display isis lsdb 0000.0000.0001.00-00 verbose //查看lsp的详细信息 SOURCE 0000.0000.0001.00 //源节点系统&#xff0c;用于标识产生该LSP的路由器…...

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

作者&#xff1a;厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅 背景介绍 行业 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命&#xff0c;致力于洞悉达人变现需求和痛点&#xff0c;提供达人选高佣、稳变现、速响应的选品服务。 业务特…...

Diffusion inversion后的latent code与标准的高斯随机噪音不一样

可视化latents_list如下; 可视化最后一步与标准的噪声&#xff1a; 能隐约看出到最后一步还是会有“马”的形状 整个代码&#xff08;及可视化代码如下&#xff09;&#xff1a; ## 参考freeprompt(FPE)的代码 import os import torch import torch.nn as nn import torch.n…...

C语言-函数-1

以下是我初学C语言的笔记记录&#xff0c;欢迎在评论区留言补充 一&#xff0c;函数分为几类 * 函数分为两类&#xff1a; 一类是库函数&#xff1b;一类是自定义函数 * 库函数&#xff1a; 系统自己带的&#xff0c;在使用时候&#xff0c;要用到头文件&#xff1b; 查询库函…...

AXOP34032: 40V/40µA 轨到轨输入输出双通道运算放大器

AXOP34032是一款通用型高压低功耗双通道运算放大器&#xff0c;产品的工作电压为2.5V至40V&#xff0c;具有1.2MHz的带宽&#xff0c;压摆率为 0.7V/μs&#xff0c;单路静态电流为40A。该产品非常适合需要较高耐压的低功耗应用。 产品可选关断功能(AXOP34032S)。 主要特性 2…...

HTML5 服务器发送事件 (Server-Sent Events):实现网页自动获取服务器更新

一、引言 在现代 Web 应用开发中,实时性和动态交互性变得越来越重要。HTML5 引入的服务器发送事件(Server-Sent Events,简称 SSE)为网页获取来自服务器的实时更新提供了一种简单而有效的解决方案。与传统方式中网页需主动询问服务器是否有更新不同,SSE 能够让更新自动推送…...

如何创建和使用 Hive 视图

一、Hive 视图的基本概念 Hive 视图是一种虚拟表,其内容由查询语句定义,本身不存储实际数据。当查询视图时,Hive 会动态执行视图定义中的查询逻辑并返回结果。视图的核心作用是简化复杂查询、提供数据抽象和实现权限控制。例如,通过视图可以隐藏底层表的复杂关联关系,或限…...

快速体验tftp文件传输(嵌入式设备)

一、参考资料 Linux tftp 命令 | 菜鸟教程 Ubuntu最新版本(Ubuntu22.04LTS)安装Tftp服务及其使用教程-CSDN博客 Windows下的Tftpd32(Tftpd64)软件下载和使用教程-集成了Tftp服务器、客户端-CSDN博客 tftpd32 tftpd64文件传输安装和使用教程【图文并茂】-CSDN博客 二、快速…...

数据库进阶之MySQL 程序

1.目标 1> 了解mysqlId服务端程序 2> 掌握mysql客户端程序的使用 3> 了解工具包中的其他程序 2. MySQL程序简介 本章介绍 MySQL 命令⾏程序以及在运⾏这些程序时指定选项的⼀般语法(如:mysql -uroot -p)。 对常⽤程序进⾏详细的讲解(实用工具的使用方法)&#xf…...

细说STM32单片机FreeRTOS信号量和互斥量及二值信号量的应用实例

目录 一、信号量和互斥量概述 1、二值信号量 2、计数信号量 3、互斥量 4、递归互斥量 5、相关函数概述 &#xff08;1&#xff09; 负责创建的函数 &#xff08;2&#xff09; 负责释放和获取的函数 &#xff08;3&#xff09;负责返回数据的函数 二、二值信号量使用…...

云原生之认识DDD

一、DDD是什么? 领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。 比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水…...

Kingbase 数据库物理备份与恢复操作手册

版本环境&#xff1a;KingbaseES V8R6 适用对象&#xff1a;DBA / 运维工程师 / 技术支持人员 目标用途&#xff1a;生产环境灾备保障、全量迁移、异地容灾恢复 一、物理备份操作流程 物理备份是指直接对数据库实例的物理文件进行复制&#xff0c;具备完整性强、恢复速度快等特…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第四章 不定积分同步测试卷 A卷

第四章 不定积分同步测试卷 A卷 一、单项选择题(本大题共5小题&#xff0c;每小题3分&#xff0c;总计15分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15 分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分,总计30…...

【刷题Day25】用户态和内核态、Reactor、虚拟内存(浅)

什么是用户态和内核态&#xff1f; 用户态&#xff08;User Mode&#xff09;和内核态&#xff08;Kernel Mode&#xff09;是操作系统中的两种运行模式&#xff0c;用于区分应用程序与操作系统内核的操作权限。 两者区别在于权限级别&#xff1a; 用户态&#xff1a;应用程…...

使用Qt Quick Controls创建自定义日历组件

目录 引言相关阅读1. DayOfWeekRow2. MonthGrid3. WeekNumberColumn 项目结构及实现工程结构图代码实现及解析1. 组件封装2. 主界面实现 运行效果 总结下载链接 引言 Qt6 Quick框架提供了一套丰富的日历相关组件&#xff0c;包括 MonthGrid、DayOfWeekRow 和 WeekNumberColumn…...

Java 富文本转word

前言&#xff1a; 本文的目的是将传入的富文本内容(html标签&#xff0c;图片)并且分页导出为word文档。 所使用的为docx4j 一、依赖导入 <!-- 富文本转word --><dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId&…...

基于 Spring Boot 瑞吉外卖系统开发(七)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;七&#xff09; 新增菜品页面 菜品管理页面提供了一个“新增菜品”按钮&#xff0c;单击该按钮时&#xff0c;会打开新增菜品页面。 菜品分类列表 首先要获取分类列表数据。 请求路径/category/list&#xff0c;请求方法GE…...

react 子组件暴露,父组件接收

// Child.jsx import React, { forwardRef, useImperativeHandle, useState } from react; import { Form, Input } from antd;const Child forwardRef((props, ref) > {const [form] Form.useForm();const [customState, setCustomState] useState(默认值);useImperativ…...

如何在Spring Boot中配置自定义端口运行应用程序

Spring Boot 应用程序默认在端口 8080 上运行嵌入式 Web 服务器&#xff08;如 Tomcat、Jetty 或 Undertow&#xff09;。然而&#xff0c;在开发、测试或生产环境中&#xff0c;开发者可能需要将应用程序配置为在自定义端口上运行&#xff0c;例如避免端口冲突、适配微服务架构…...

5.第五章:数据分类的方法论

文章目录 5.1 传统分类方法5.1.1 基于规则的分类方法5.1.2 基于统计的分类方法5.1.3 传统分类方法的局限性 5.2 现代分类技术5.2.1 神经网络分类模型5.2.2 深度学习分类方法5.2.3 现代分类技术的优势 5.3 创新分类方法5.3.1 小样本学习方法5.3.2 零样本学习方法5.3.3 主动学习方…...

如何在 Unity 中导入 gltf /glb 文件

遗憾的是&#xff0c;默认情况下&#xff0c;Unity 无法导入 gltf 文件。 我们有 个好消息要告诉你 gltf&#xff0c;有一种方法可以将 glb 文件格式导入 Unity&#xff01; 看完这篇文章后&#xff0c;让我们将 “gltf&#xff0c; glb” 文件放入 Unity 中&#xff0c;并将其…...

Docker部署一款开源的极简服务器监控工具Ward内网穿透远程使用

文章目录 前言1.关于Ward2.Docker部署3.简单使用ward4.安装cpolar内网穿透5. 配置ward公网地址6. 配置固定公网地址总结 前言 各位小伙伴们&#xff0c;你们是不是也遇到过这样的情况&#xff1a;每次打开服务器管理界面&#xff0c;密密麻麻的数据和图表看得你眼花缭乱&#…...

Day11(回溯法)——LeetCode79.单词搜索

1 前言 今天主要刷了一道热题榜中回溯法的题&#xff0c;现在的计划是先刷热题榜专题吧&#xff0c;感觉还是这样见效比较快。因此本文主要介绍LeetCode79。 2 LeetCode79.单词搜索(LeetCode79) OK题目描述及相关示例如下&#xff1a; 2.1 题目分析解决及优化 感觉回溯的方…...

数据结构-图

一、图的定义与基本术语 图&#xff08;Graph&#xff09;是一种非线性数据结构&#xff0c;由顶点&#xff08;Vertex&#xff09;和边&#xff08;Edge&#xff09;组成。它包含以下基本术语&#xff1a; 顶点&#xff08;Vertex&#xff09; &#xff1a;是图中的数据元素。…...