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

【ES实战】Elasticsearch6开始的CCR

【ES实战】学习使用Elasticsearch6开始的CCR

本文涉及官网文章地址

  • Overview
  • Requirements for leader indices
  • Automatically following indices
  • Getting started with cross-cluster replication
  • Upgrading clusters

CCR => Cross-cluster replication

文章目录

  • 【ES实战】学习使用Elasticsearch6开始的CCR
    • CCR => Cross-cluster replication
    • 概述
        • 配置主从关系
        • 主从复制的机制
        • 检查复制的进度
        • 暂停、恢复数据的复制
        • 复制时的主索引保的留操作
        • 发现数据复制远远落后的从索引,尝试修复
        • 结束主从复制关系
    • 主索引的必须项
        • 软删除配置
    • 自动创建从索引
      • 管理自动复制模式
    • CCR快速入门指南
        • 常规的开始之前
        • 连接到远程集群
        • 创建主索引
        • 创建从索引
        • 自动创建从索引
    • 远程恢复
    • 集群升级
        • 索引单向复制
        • 索引双向复制

跨集群复制 (CCR) 功能可以将远程集群中的索引复制到本地集群。 此功能可用于一些常见的生产用例:

  • 主集群发生故障时的灾难恢复。 辅助集群可以作为热备份
  • 地理位置邻近,以便可以在本地提供读取服务

概述

跨集群复制是在逐个索引的基础上完成的。 复制关系是在索引级别配置的。 对于每个配置的复制关系,都有一个称为leader index的复制源索引和一个称为follower index的复制目标索引。

复制是主动-被动的。 这意味着虽然leader索引可以直接写入,但follower索引不能直接接收写入。

复制是基于拉模式的。 这意味着复制是由关注者索引驱动的。 这简化了leader索引的状态管理,并且意味着跨集群复制不会干扰leader索引上的索引写入。

为了方便理解,将Leader索引和follower索引定义为主从索引。

配置主从关系

可以通过两种方式配置主从关系:

  • 手动创建特定的从索引
  • 根据自动关注模式自动创建从索引

还必须配置主索引。

当您手动或通过自动跟踪模式启动复制时,将在本地集群上创建从索引。 创建从索引后,远程恢复进程会从远程集群把主索引的所有 Lucene 分段文件复制到本地集群。

默认情况下,如果您手动启动关注,则恢复过程与创建关注者请求是异步的。 该请求在远程恢复过程完成之前返回。 如果您想等待该过程完成,可以使用wait_for_active_shards参数。

主从复制的机制

主从复制关系是在索引级别管理的,而复制是在分片级别执行的。 创建从索引时,它会自动配置为具有与主索引相同数量的分片。从索引中的分片任务通过发送新操作的读取请求来从主索引中相应的分片中拉取。 这些读取请求可以从领导分片的任何副本(主分片或副本)提供服务。

对于从索引的分片任务发送的每个读取请求,如果主索引分片上有可用的新操作,则主索引分片将使用受在配置从索引时建立的读取参数限制的操作进行响应。 如果主索引分片上没有可用的新操作,则主索引分片将等待新操作的配置超时。 如果在该超时时间内发生新操作,主索引分片会立即响应这些新操作。 否则,如果超时,从索引的分片会回复没有新操作。 从索引分片任务更新一些统计数据,并立即向主索引分片发送另一个读取请求。 这确保了远程集群和本地集群之间的网络连接持续被使用,以避免被外部源(例如防火墙)强制终止。

如果读取请求失败,则检查失败的原因。 如果故障原因被认为是可以恢复的故障(例如网络故障),则从索引分片任务进入重试循环。 否则,从索引分片任务将暂停并需要用户干预,然后才能使用 恢复 follower API。

当从索引分片任务接收到操作时,它们被放置在写入缓冲区中。 从索引分片任务管理此写入缓冲区并将批量写入请求从此写入缓冲区提交到从索引分片。 写入缓冲区和这些写入请求由您在配置从索引索引时建立的写入参数进行管理。 写缓冲区充当针对读请求的背压。 如果写入缓冲区超出其配置的限制,则从索引分片任务不会发送额外的读取请求。 当写入缓冲区不再超出其配置的限制时,从索引分片任务将恢复发送读取请求。

从主索引复制操作的复杂性取决于如何创建从索引时或使用 创建追随者 API

应用于主索引的映射更新会根据需要由从索引自动检索。???

从索引所需的mapping会基于主索引的设置更新将根据从索引的需要,进行自动重试。 从索引并不会更新所有设置。 例如,更改主索引上的副本数量不会被跟从索引复制。

如果您对从索引所需的主索引setting采用非动态设置更改,则从索引将经历一个自行关闭、应用设置更新,然后重新打开自身的循环。 在此周期内,从索引将不可用于读取且无法复制写入。

检查复制的进度

您可以使用 get follower stats API 检查分片级别的复制进度 。 通过此 API,您可以深入了解从索引分片任务管理的读写操作。 它还报告可以重试的读取异常和需要用户干预的致命异常。

暂停、恢复数据的复制

您可以使用 pause follower API 暂停复制,然后使用 resume follower API。 如果您的初始配置不适合您的用例,串联使用这些 API 使您能够调整从分片任务的读写参数。

复制时的主索引保的留操作

如果从索引在一段时间内无法从主索引复制操作,则以下过程可能会由于主索引缺乏复制所需的完整操作历史记录而失败。

复制到从索引的操作是使用最初执行操作时生成的序列号来标识的。 Lucene 段文件偶尔会合并,以优化搜索并节省空间。 当这些合并发生时,与已删除或更新的文档相关的操作可以在合并期间被修剪。 当从索引请求修剪操作的序列号时,该过程将由于主索引上丢失的操作而失败。

这种情况在仅添加的工作流程中是不可能的。 由于文档永远不会被删除或更新,因此底层操作不会被修剪。

Elasticsearch 尝试使用称为软删除的 Lucene 功能来缓解更新工作流程的这一潜在问题。 当文档被更新或删除时,底层操作会在 Lucene 索引中保留一段时间。 这段时间由index.soft_deletes.retention_lease.period设置控制,可以在主索引上配置。

index.soft_deletes.retention_lease.period:控制创建或续订保留租期后,将其视为过期的最长时间。

index.soft_deletes.retention.operations:控制软删除文档在合并前的保留数量。保留更多已删除文档可增加基于操作的恢复机会,并允许查询更长的文档历史。 如果启用了软删除,引擎默认情况下会保留直至全局检查点的所有操作。

当从索引启动索引复制时,它会从主索引那里获取保留租约。 这通知主索引不应允许软删除被修剪,直到从索引指示它已收到操作或租约到期。 在租约到期之前进行监控以检测从索引复制问题非常有价值,以便可以在追随者严重落后之前解决问题。

发现数据复制远远落后的从索引,尝试修复

如果从索引远远落后于主索引,以至于无法再复制操作,则可以使用 get follow stats API。 它将被报告为indices[].fatal_exception

为了重新启动从索引,您必须暂停复制进程,关闭索引,然后再次创建从索引。 例如:

POST /follower_index/_ccr/pause_followPOST /follower_index/_closePUT /follower_index/_ccr/follow?wait_for_active_shards=1
{"remote_cluster" : "remote_cluster","leader_index" : "leader_index"
}

重新创建从索引是一种破坏性行为。 从属集群上所有现有的 Lucene 段文件都将被删除。 远程恢复进程再次从leader复制Lucene段文件。 当follower索引初始化后,复制的过程会再次开始。

结束主从复制关系

您可以使用 unfollow API 终止复制。 此 API 将关注者索引转换为常规(非从)索引。

主索引的必须项

跨集群复制的工作原理是重放在主索引分片上执行的各个写入操作的历史记录。 这意味着这些操作的历史记录需要保留在主索引分片上,以便从索引分片任务可以拉动它们。 用于保留这些操作的底层机制是“软删除”。 每当删除或更新现有文档时都会发生软删除。 通过将这些软删除保留到可配置的限制,操作历史记录可以保留在主索引分片上,并在从索引分片任务重放操作历史记录时可供其使用。

必须为要用作主索引的索引启用软删除。 启用软删除需要在创建索引时添加一些索引设置项。 必须将这些设置项添加到创建索引请求或用于管理新索引创建的索引模板中。

这意味着跨集群复制不能用于现有索引。 如果您想要从另一个集群复制现有数据,则必须将数据重新索引到启用软删除的新索引。

软删除配置
  • index.soft_deletes.enabled

    索引上是否启用软删除。 软删除只能在创建索引时配置,并且只能在 6.5.0 或之后创建的索引上配置。 默认值为false

  • index.soft_deletes.retention_lease.period

    在分片历史保留租约被视为过期之前保留分片历史保留租约的最长期限。 分片历史保留租约可确保在 Lucene 索引合并期间保留软删除。 如果软删除在复制到从索引之前被合并,则由于主索引的历史记录不完整,后续过程将失败。 默认值为12h

自动创建从索引

在您想要复制定期创建的新索引(例如每日 Beats 索引)的时间序列用例中,为每个新的主索引手动配置从索引可能会成为操作负担。 跨集群复制中的自动复制功能旨在减轻这种负担。 通过自动复制功能,您可以指定自动复制远程集群中名称与模式匹配的新索引。

管理自动复制模式

您可以使用创建自动跟随模式 API。 当您创建新的自动遵循模式配置时,您正在针对单个远程集群配置模式集合。 每当在远程集群中创建名称与集合中的模式之一匹配的新索引时,都会在本地集群中配置从索引。 从索引使用新索引作为其主索引。

您可以使用获取自动跟踪模式 API 。 要删除已配置的自动跟随模式集合,请使用删除自动跟随模式 API。

由于自动跟踪功能是在后台代表您自动处理的,因此错误报告是通过所选主节点上的日志和跨集群复制统计 API完成的。

CCR快速入门指南

  • Connect a local cluster to a remote cluster 将本地集群连接到远程集群
  • Create a leader index in a remote cluster 在远程集群中创建主索引
  • Create a follower index that replicates a leader index 创建复制主索引的从索引
  • Automatically create follower indices 自动创建从索引
常规的开始之前
  1. 安装两个集群作为本地集群和远程集群。

  2. 购买具有CCR使用权的license

  3. 如果在本地和远程集群中启用了 Elastic 安全功能,则您需要具有适当权限的用户来执行本教程中的步骤。

    跨集群复制功能使用集群权限和内置角色,可以更轻松地控制哪些用户有权管理跨集群复制。

    默认情况下,您可以使用内置的“elastic”用户执行本教程中的所有步骤。 但是,必须先为此用户设置密码,然后用户才能执行任何操作。 有关如何设置该密码的信息,请参阅教程:安全性入门。

    如果您在生产环境中执行这些步骤,请格外小心,因为 elastic用户具有superuser 角色,您可能会无意中进行重大更改。

    或者,您可以将适当的权限分配给您选择的用户 ID。 在包含主索引的远程集群上,用户将需要主索引的read_ccr集群权限以及monitorread权限。

    ccr_user:cluster:- read_ccrindices:- names: [ 'leader-index' ]privileges:- monitor- read
    

    在包含从索引的本地集群上,同一用户将需要从索引的manage_ccr集群权限以及monitorreadwritemanage_follow_index权限。

    ccr_user:cluster:- manage_ccrindices:- names: [ 'follower-index' ]privileges:- monitor- read- write- manage_follow_index
    

    如果您正在管理连接到远程集群 通过集群更新设置 API,您还需要一个具有all集群权限的用户。

连接到远程集群

跨集群复制功能要求将本地集群连接到远程集群。 我们将使用集群别名leader将本地集群连接到远程集群。

PUT /_cluster/settings
{"persistent" : {"cluster" : {"remote" : {"leader" : {"seeds" : ["127.0.0.1:9300" ]}}}}
}

指定远程集群中种子节点的主机名和传输端口。

您可以验证本地集群与远程集群是否成功连接。

GET /_remote/info

API 将通过显示本地集群已连接到远程集群来做出响应。

{"leader" : {"seeds" : ["127.0.0.1:9300"],"http_addresses" : ["127.0.0.1:9200"],"connected" : true, "num_nodes_connected" : 1, "max_connections_per_cluster" : 3,"initial_connect_timeout" : "30s","skip_unavailable" : false}
}

这表明本地集群已连接到远程集群,集群别名为leader

这显示了本地集群连接到的远程集群中的节点数。

创建主索引

主索引需要一个特殊的索引设置,以确保当从索引向主索引请求时,需要复制的操作是可用的。该设置用于在领导者索引上启用软删除。每当删除或更新文档时,就会发生软删除。软删除只能在 Elasticsearch 6.5.0 或之后创建的新索引上启用。

在下面的示例中,我们将在远程群集中创建一个主索引:

PUT /server-metrics
{"settings" : {"index" : {"number_of_shards" : 1,"number_of_replicas" : 0,"soft_deletes" : {"enabled" : true }}},"mappings" : {"metric" : {"properties" : {"@timestamp" : {"type" : "date"},"accept" : {"type" : "long"},"deny" : {"type" : "long"},"host" : {"type" : "keyword"},"response" : {"type" : "float"},"service" : {"type" : "keyword"},"total" : {"type" : "long"}}}}
}

开启主索引的软删除。

创建从索引

从索引是通过create follower API创建的。创建从索引时,必须引用remote cluster 和在远程群集中创建的leader index。

PUT /server-metrics-copy/_ccr/follow?wait_for_active_shards=1
{"remote_cluster" : "leader","leader_index" : "server-metrics"
}

从索引使用 remote recovery 进程初始化。远程恢复过程会将现有的 Lucene 段文件从主索引传输到从索引。远程恢复过程完成后,复制索引就开始了。

现在,当你将文档索引到主索引中时,你会看到这些文档被复制到从索引中。您可以使用 get follower stats API 查看复制的状态。

自动创建从索引

跨群集复制中的auto-follow功能有助于在时间序列用例中跟踪远程群集定期创建的新指数(如每日 Beats 指数)。自动跟踪可使用创建自动跟踪模式 API进行配置。通过自动跟踪模式,您可以引用与本地集群相连的远程集群。您还必须指定一个与要自动跟踪的索引相匹配的模式集合。

For example:

PUT /_ccr/auto_follow/beats
{"remote_cluster" : "leader","leader_index_patterns" :["metricbeat-*", "packetbeat-*" ],"follow_index_pattern" : "{{leader_index}}-copy" 
}

自动复制新的 Metricbeat 索引。

自动复制新的 Packetbeat 索引。

从索引的名称是通过在主索引的名称上添加后缀-copy而从主索引的名称派生而来的。

远程恢复

当您创建从索引时,在其完全初始化之前您无法使用它。 remote recovery过程通过从主索引所在集群中的主分片复制数据来在从索引的节点上构建分片的新副本。 Elasticsearch 使用此远程恢复过程,使用主索引中的数据来引导从索引。 此过程为从索引提供了主索引当前状态的副本,即使由于 Lucene 段合并导致领导者无法获得完整的更改历史记录。

远程恢复是一个网络密集型过程,它将所有 Lucene 段文件从主索引的集群传输到从索引的集群。 从索引请求在主索引集群中的主分片上启动恢复的会话。 然后,从索引同时向主索引请求文件块。 默认情况下,进程同时请求5个大1mb文件块。 此默认行为旨在支持领导者和追随者集群之间存在高网络延迟。

您可以使用动态设置来限制传输数据的速率并管理远程恢复消耗的资源。 请参阅跨集群复制设置。

您可以使用从索引集群上的 recovery API 获取有关正在进行的远程恢复的信息。 远程恢复是使用snapshot and restore基础设施来实现的。 这意味着正在进行的远程恢复在恢复 API 中被标记为snapshot类型。

集群升级

主动使用跨集群复制的集群需要谨慎升级。 否则,在滚动升级过程中,以下索引可能会因以下原因而失败:

  • 如果新的索引设置或映射类型从升级的群集复制到未升级的群集,那么未升级的群集将拒绝接受,并导致索引跟随失败。
  • Lucene 并不向前兼容,当索引跟随回退到基于文件的恢复时,非升级群集中的节点将拒绝来自较新 Lucene 版本的索引文件。

跨集群复制的滚动升级集群在单向索引复制和双向索引复制的情况下是不同的。

索引单向复制

在两个集群之间的单向设置中,一个集群仅包含主索引,另一个集群仅包含复制第一个集群中的索引的从索引。

在此场景中,具有从索引的集群应首先升级,具有主索引的集群应最后升级。 如果集群按此顺序升级,则索引跟踪可以在升级期间继续进行,而无需停机。

请注意,链式索引跟随设置也可以通过这种方式升级。例如,如果集群 A 包含所有主索引,集群 B 复制集群 A 中的索引,集群 C 复制集群 B 中的索引。在这种情况下,应首先升级群集 C,然后升级群集 B,最后升级群集 A。

索引双向复制

在两个集群之间的双向设置中,每个集群都包含主索引和从索引。

在此设置中升级群集时,需要在升级两个群集之前使用pause follower API 暂停所有索引跟踪。升级两个群集后,可以使用resume follower API 恢复索引跟踪。

相关文章:

【ES实战】Elasticsearch6开始的CCR

【ES实战】学习使用Elasticsearch6开始的CCR 本文涉及官网文章地址 OverviewRequirements for leader indicesAutomatically following indicesGetting started with cross-cluster replicationUpgrading clusters CCR > Cross-cluster replication 文章目录 【ES实战】学…...

Deployment Pay

axure watermark...

MySQL创建member表失败

最近在做一个项目,在台式机上可以跑通,也测试了各个已完成的接口,提交到了GitHub后想着用宿舍的电脑跑一下,在测试member表相关接口时就出错了。报了SQL语法错误,但SQL语句很简单,就根据手机号查询不至于出…...

使用minio实现大文件断点续传

部署 minio 拉取镜像 docker pull minio/minio docker images新建映射目录 新建下面图片里的俩个目录 data(存放对象-实际的数据) config 存放配置开放对应端口 我使用的是腾讯服务器所以 在腾讯的安全页面开启 9000,9090 两个端口就可以了(根据大家实际…...

插入排序之C++实现

描述 插入排序是一种简单直观的排序算法。它的基本思想是将一个待排序的数据序列分为已排序和未排序两部分,每次从未排序序列中取出一个元素,然后将它插入到已排序序列的适当位置,直到所有元素都插入完毕,即完成排序。 实现思路…...

Tomcat日志乱码了怎么处理?

【前言】 tomacat日志有三个地方,分别是Output(控制台)、Tomcat Localhost Log(tomcat本地日志)、Tomcat Catalina Log。 启动日志和大部分报错日志、普通日志都在output打印;有些错误日志,在Tomcat Localhost Log。 三个日志显示区,都可能…...

[node] Node.js的路由

[node] Node.js的路由 路由 & 路由解析路由信息的整合URL信息路由处理逻辑路由逻辑与URL信息的整合路由的使用 路由 & 路由解析 路由需要提供请求的 URL 和其他需要的 GET/POST 参数,随后路由需要根据这些数据来执行相应的代码。 因此,根据 HT…...

网络编程第三天作业

...

AIGC:大语言模型LLM的幻觉问题

引言 在使用ChatGPT或者其他大模型时,我们经常会遇到模型答非所问、知识错误、甚至自相矛盾的问题。 虽然大语言模型(LLMs)在各种下游任务中展示出了卓越的能力,在多个领域有广泛应用,但存在着幻觉的问题&#xff1a…...

【C语言刷题每日一题#牛客网BC68】——X形图案

问题描述 思路分析 首先根据输入的描述&#xff0c;多组输入需要将scanf放在循环中来实现 #include<stdio.h> int main() {int a 0;while (scanf("%d", &a) ! EOF){} } 完成了输入之后&#xff0c;再来分析输出——输出的是一个由“*”组成的对称的X形…...

阻断血缘关系以及checkpoint文件清理

spark-sql读写同一张表&#xff0c;报错Cannot overwrite a path that is also being read from 1. 增加checkpoint&#xff0c;设置检查点阻断血缘关系 sparkSession.sparkContext.setCheckpointDir("/tmp/spark/job/OrderOnlineSparkJob")val oldOneIdTagSql s&…...

PHP代码审计之反序列化攻击链CVE-2019-6340漏洞研究

关键词 php 反序列化 cms Drupal CVE-2019-6340 DrupalKernel 前言 简简单单介绍下php的反序列化漏洞 php反序列化漏洞简单示例 来看一段简单的php反序列化示例 <?phpclass pingTest {public $ipAddress "127.0.0.1";public $isValid False;public $output…...

PyTorch之线性回归

1.定义&#xff1a; 回归分析是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。线性回归是利用称为线性回归方程的最小二乘函数&#xff0c;对一个或多个自变量和因变量之间关系&#xff0c;进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参…...

SSTI模板注入基础(Flask+Jinja2)

文章目录 一、前置知识1.1 模板引擎1.2 渲染 二、SSTI模板注入2.1 原理2.2 沙箱逃逸沙箱逃逸payload讲解其他重要payload 2.3 过滤绕过点.被过滤下划线_被过滤单双引号 "被过滤中括号[]被过滤关键字被过滤 三、PasecaCTF-2019-Web-Flask SSTI参考文献 一、前置知识 1.1 模…...

React网页转换为pdf并下载|使用jspdf html2canvas

checkout 分支后突然报错&#xff0c;提示&#xff1a; Cant resolve jspdf in ... Cant resolve html2canvas in ... 解决方法很简单&#xff0c;重新 yarn install 就好了&#xff0c;至于为什么&#xff0c;我暂时也不知道&#xff0c;总之解决了。 思路来源&#xff1a; 先…...

EASYEXCEL导出表格(有标题、单元格合并)

EASYEXCEL导出表格&#xff08;有标题、单元格合并&#xff09; xlsx格式报表的导出&#xff0c;导出的数据存在父子关系&#xff0c;即相当于树形数据&#xff0c;有单元格合并和标题形式的要求&#xff0c;查阅了一些资料&#xff0c;总算是弄出来了&#xff0c;这里另写一个…...

pytest 断言异常

一、前置说明 在 pytest 中,断言异常是通过 pytest 内置的 pytest.raises 上下文管理器来实现的。通过使用 pytest.raises,可以捕获并断言代码中引发的异常。 二、操作步骤 1. 编写测试代码 atme/demos/demo_pytest_tutorials/test_pytest_raises.py import pytest# 示例…...

听GPT 讲Rust源代码--src/tools(22)

File: rust/src/tools/tidy/src/lib.rs rust/src/tools/tidy/src/lib.rs是Rust编译器源代码中tidy工具的实现文件之一。tidy工具是Rust项目中的一项静态检查工具&#xff0c;用于确保代码质量和一致性。 tidy工具主要有以下几个作用&#xff1a; 格式化代码&#xff1a;tidy工具…...

OD Linux发行版本

题目描述&#xff1a; Linux操作系统有多个发行版&#xff0c;distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联&#xff0c;例如Ubuntu基于Debian开发&#xff0c;而Mint又基于Ubuntu开发&#xff0c;那么我们认为Mint同Debian也存在关联。 发行版集是一个或多…...

华为端口隔离简单使用方法同vlan下控制个别电脑不给互通

必须得用access接口&#xff0c;hybrid口不行 dhcp enable interface Vlanif1 ip address 192.168.1.1 255.255.255.0 dhcp select interface interface MEth0/0/1 interface GigabitEthernet0/0/1 port link-type access port-isolate enable group 1 interface GigabitEther…...

DaVinci各版本安装指南

链接: https://pan.baidu.com/s/1g1kaXZxcw-etsJENiW2IUQ?pwd0531 ​ #2024版 1.鼠标右击【DaVinci_Resolve_Studio_18.5(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 DaVinci_Resolve_Studio_18.5(64bit)】。 2.打开解压后的文…...

【黑马甄选离线数仓day10_会员主题域开发_DWS和ADS层】

day10_会员主题域开发 会员主题_DWS和ADS层 DWS层开发 门店会员分类天表: 维度指标: 指标&#xff1a;新增注册会员数、累计注册会员数、新增消费会员数、累计消费会员数、新增复购会员数、累计复购会员数、活跃会员数、沉睡会员数、会员消费金额 维度: 时间维度&#xff08…...

OD 完美走位

题目描述&#xff1a; 在第一人称射击游戏中&#xff0c;玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动&#xff0c;从而完成走位。假设玩家每按动一次键盘&#xff0c;游戏人物会向某个方向移动一步&#xff0c;如果玩家在操作一定次数的键…...

SpringSecurity6 | 失败后的跳转

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 失败后的跳转 📚个人知识库: Leo知识库,欢迎大家访问 学习…...

MySQL数据库增删改查

常用的数据类型&#xff1a; int&#xff1a;整数类型&#xff0c;无符号的范围【0&#xff0c;2^32-1】&#xff0c;有符号【-2^31,2^31-1】 float&#xff1a;单精度浮点&#xff0c;4字节64位 double&#xff1a;双精度浮点&#xff0c;8字节64位 char&#xff1a;固定长…...

Altium Designer(AD24)新工程复用设计文件图文教程及视频演示

&#x1f3e1;《专栏目录》 目录 1&#xff0c;概述2&#xff0c;复用方法一视频演示2.1&#xff0c;创建工程2.2&#xff0c;复用设计文件 3&#xff0c;复用方法二视频演示4&#xff0c;总结 欢迎点击浏览更多高清视频演示 1&#xff0c;概述 本文简述使用AD软件复用设计文件…...

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测

【遥感影像深度学习】系列的第一章,Python遥感影像深度学习的入门课程,介绍如何使用卷积神经网络(CNN)从卫星图像中分割云层 1、数据集 在本项目中,我们将使用 Kaggle 提供的 38-Cloud Segmentation in Satellite Images数据集。 该数据集由裁剪成 384x384 (适用…...

Hive-DML详解(超详细)

文章目录 前言HiveQL的数据操作语言&#xff08;DML&#xff09;1. 插入数据1.1 直接插入固定值1.2 插入查询结果 2. 更新数据3. 删除数据3.1 删除整个分区 4. 查询数据4.1 基本查询4.2 条件筛选4.3 聚合函数 总结 前言 本文将介绍HiveQL的数据操作语言&#xff08;DML&#x…...

PHP实现可示化代码

PHP是一种服务器端脚本语言&#xff0c;它主要用于开发Web应用程序。虽然PHP本身不提供可视化代码的功能&#xff0c;但你可以使用一些第三方库和工具来实现可视化代码。 以下是一些常用的PHP可视化代码的工具和库&#xff1a; 1. Graphviz&#xff1a;Graphviz是一个开源的可…...

useState语法讲解

useState语法讲解 语法定义 const [state, dispatch] useState(initData)state&#xff1a;定义的数据源&#xff0c;可视作一个函数组件内部的变量&#xff0c;但只在首次渲染被创造。dispatch&#xff1a;改变state的函数&#xff0c;推动函数渲染的渲染函数。dispatch有两…...

堆与二叉树(下)

接着上次的&#xff0c;这里主要介绍的是堆排序&#xff0c;二叉树的遍历&#xff0c;以及之前讲题时答应过的简单二叉树问题求解 堆排序 给一组数据&#xff0c;升序&#xff08;降序&#xff09;排列 思路 思考&#xff1a;如果排列升序&#xff0c;我们应该建什么堆&#x…...

讲诉JVM

jvm是Java代码运行的环境&#xff0c;他将java程序翻译成为机器可以可以识别的机器码&#xff0c;可以跨平台运行如linuc或者windos 简单说一下我对jvm运行的理解&#xff0c; 首先我们运行程序的时候&#xff0c;类加载器会将类按需加载到元空间/方法区里面 …...

8、SpringCloud高频面试题-版本1

1、SpringCloud组件有哪些 SpringCloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用 SpringBoot 的开发风格做到一键启…...

PHP案例代码:PHP如何提供下载功能?

对Web开发人员来说,“下载”功能是一个非常常见的需求。在网站中提供文件下载,通常用于提供用户手册、软件升级、音乐、视频等各种资源文件。本教程将向您介绍如何实现一个PHP下载功能,同时告诉浏览器文件名称、文件大小、文件类型,并统计下载次数。 首先,我们需要了解一些…...

The Cherno C++笔记 03

目录 Part 07 How the C Linker Works 1.链接 2.编译链接过程中出现的错误 2.1 缺少入口函数 注意:如何区分编译错误还是链接错误 注意&#xff1a;入口点可以自己设置 2.2 找不到自定义函数 2.2.1缺少声明 2.2.2自定义函数与引用函数不一致 2.3 在头文件中放入定义 …...

蓝牙物联网与嵌入式开发如何结合?

蓝牙物联网与嵌入式开发可以紧密结合&#xff0c;以实现更高效、更智能的物联网应用。以下是一些结合的方式&#xff1a; 嵌入式开发为蓝牙设备提供硬件基础设施和控制逻辑&#xff1a;嵌入式系统可以利用微处理器和各种外设组成的系统&#xff0c;为蓝牙设备提供硬件基础设施和…...

前端面试——JavaScript面经(持续更新)

一、数据类型 1. JavaScript用哪些数据类型、它们有什么区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别包括5种基本数据类型和3种非基本数据类型。 基本数据类型&#xff1a;Undefined、Null、Boolean、Number、String。非基本数据类型&#xff1a;Object、S…...

微前端——无界wujie

B站课程视频 课程视频 课程课件笔记&#xff1a; 1.微前端 2.无界 现有的微前端框架&#xff1a;iframe、qiankun、Micro-app&#xff08;京东&#xff09;、EMP&#xff08;百度&#xff09;、无届 前置 初始化 新建一个文件夹 1.通过npm i typescript -g安装ts 2.然后可…...

连锁便利店管理系统有什么用

连锁便利店管理系统对于连锁便利店的运营和管理非常有用。以下是一些常见的用途&#xff1a; 1. 库存管理&#xff1a;连锁便利店通常需要管理多个门店的库存&#xff0c;管理系统可以帮助实时掌握各个门店的库存情况&#xff0c;包括商品数量、进货记录、库存调拨等。这样可以…...

Vue 的两种实现:VSCode 中配置 vue 模板快捷方式的过程

1、创建配置文件&#xff1a; 其一、打开 VSCode &#xff0c;CtrlShiftP, 打开搜索框&#xff1a; 其二、输入&#xff1a;user, 并点击进去 Snippets:Configure User Snippets 其三、输入 vue3js 并回车&#xff1a; 其四、打开项目&#xff0c;发现配置文件 vue3js.code-sn…...

electron 切换至esm

前言 好消息&#xff0c;经过不知道多少年的讨论。 electron28.0.0开始&#xff08;23.08.31&#xff09;&#xff0c;默认支持esm了。 see https://github.com/electron/electron/issues/21457 使用方法 升级至electron^28.0.0简单地在package.json中添加"type":…...

【新版】软考 - 系统架构设计师(总结笔记)

个人总结学习笔记&#xff0c;仅供参考&#xff01;&#xff01;&#xff01;! →点击 笔者主页&#xff0c;欢迎关注哦&#xff08;互相学习&#xff0c;共同成长&#xff09; 笔记目录 &#x1f4e2;【系统架构设计系列】系统架构设计专业技能 计算机组成与结构操作系统信…...

Spring MVC 方法中添加参数、HttpServletRequest 和 HttpServletResponse 对象

在这个例子中&#xff0c;我们添加了 HttpServletRequest 和 HttpServletResponse 对象作为控制器方法的参数。这样&#xff0c;你就可以在方法内部同时访问请求参数、请求对象和响应对象&#xff0c;从而进行更灵活的 HTTP 请求和响应处理。 RestController public class MyC…...

单片机的RTC获取网络时间

理解网络同步校准RTC的原理需要考虑NTP、SNTP、RTC这三个关键组件的作用和交互。下面详细解释这个过程&#xff1a; 1. NTP&#xff08;Network Time Protocol&#xff09;&#xff1a; 协议目的&#xff1a;NTP是用于同步计算机和设备时钟的协议。它通过在网络上与时间服务器通…...

Android 13 内置可卸载的搜狗输入法

环境 系统&#xff1a;Android 13 芯片厂商&#xff1a;展锐 需求 默认只有英文输入法&#xff0c;没有中文&#xff0c;需要中文输入法&#xff0c;且可以卸载的。 实测为搜狗输入法&#xff0c;百度等其它输入法也同样适用。 实现 在SDK目录中创建packages/apps/SogouIM…...

持续集成交付CICD:GitLabCI 封装Python类 并结合 ArgoCD 完成前端项目应用发布

目录 一、实验 1. 环境 2. Python代码实现获取文件 3.Python代码实现创建文件 4.Python代码实现更新文件 5.GitLab更新库文件与运行流水线 6.ArgoCD 完成前端项目应用发布 二、问题 1.Python获取GitLab指定仓库文件报错 2. K8S master节点运行Python代码报错 一、实验…...

第十三章 常用类(Math 类、Arrays 类、System类、Biglnteger 和BigDecimal 类、日期类)

一、Math 类&#xff08;P481&#xff09; Math 类包含&#xff0c;用于执行基本数学运算的方法&#xff0c;如初等指数、对数、平方根和三角函数。 &#xff08;1&#xff09;abs&#xff1a;绝对值 &#xff08;2&#xff09;pow&#xff1a;求幂 &#xff08;3&#xff09;c…...

2023年12月24日学习总结

今日to do list&#xff1a; 做kaggle上面的流量预测项目☠️ 学习时不刷手机&#x1f921; okkkkkkkkkkkkkk 开始&#x1f44d;&#x1f34e; 0、我在干什么&#xff1f; 我在预测一个名字叫做elborn基站的下行链路流量&#xff0c;用过去29天的数据预测未来10天的数据 1、…...

第26关 K8s日志收集揭秘:利用Log-pilot收集POD内业务日志文件

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 OK&#xff0c;到目前为止&#xff0c;我们的服务顺利容器化并上了K8s&#xff0c;同时也能通过外部网络进行请求访问&#xff0c;相关的服务数据也能进行持久化存储了&#xff0c;那么接下来…...

芯科科技以卓越的企业发展和杰出的产品创新获得多项殊荣

2023年共获颁全球及囯內近20个行业奖项 Silicon Labs&#xff08;亦称“芯科科技”&#xff09;日前在全球半导体联盟&#xff08;Global Semiconductor Alliance&#xff0c;GSA&#xff09;举行的颁奖典礼上&#xff0c;再次荣获最受尊敬上市半导体企业奖&#xff0c;这是公…...