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

Elasticsearch ILM 故障排除:常见问题及修复

作者:来自 Elastic Stef Nestor

大家好!我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时,我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮助多个用户设置 ILM 后,我注意到升级主要来自少数配置问题。

在以下部分中,我想介绍常见的工单、诊断流程和常见错误恢复。显示的所有命令都可以通过 Kibana 的 Dev Tools 运行。

配置

ILM 后端进程默认运行,但需要用户配置才能影响索引。你可以通过 ILM 状态返回 operation_mode:RUNNING 来验证 ILM 是否正在运行。

常见问题 1:ILM 未运行

ILM 默认运行。如果你之前已停止 ILM,则需要重新启动 ILM。

ILM 设置为在六个连续阶段中保存数据。阶段 “new” 在索引创建时是隐含的,后面是五个可配置阶段。

常见问题 2:数据未删除

人们普遍误以为配置热阶段的滚动会自动删除数据。必须明确配置删除数据阶段才能删除数据。必须明确指定每个可配置阶段。

每个可配置阶段都有一组允许的连续操作。这些操作由你自行配置,但大多数用户至少启用设置优先级、滚动和删除操作。可以通过 Kibana UI 或 Elasticsearch API 配置策略和操作。我经常看到并使用以下策略(可从 “Get ILM Policy” 访问):

GET _ilm/policy/INDEX_POLICY_NAME
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_age": "30d","max_size": "50gb"},"set_priority": {"priority": 100}},"min_age": "0ms"},"warm": {"min_age": "7d","actions": {"set_priority": {"priority": 50},"shrink": {"number_of_shards": 1},"forcemerge": {"max_num_segments": 1}}},"delete": {"min_age": "365d","actions": {"delete": {}}}}}
}

此策略(policy)指示系统立即将数据发送至 hot 阶段,创建新索引并每 30 天或 50 GB(以先到者为准)滚动更新以前的数据。滚动更新七天后,索引将不再需要文档更新,从而进入 warm 阶段。此时,该策略附加了以下两个操作:shrink(减少分片数量)和 force merge(压缩数据并擦除已删除的记录)。数据将一直处于 warm 阶段,直到滚动更新 365 天后被删除。

常见问题 3:min_age 计算说明

在与客户合作时,我发现关于 min_age 的工作方式常常存在困惑。min_age 必须在后续阶段之间递增。如果使用了 rollover(滚动),min_age 是根据滚动日期计算的。这是因为滚动操作会生成一个新索引,并使用新索引的创建日期进行计算。否则,min_age 将基于原始索引的创建日期进行计算。

一旦创建策略,就需要明确附加到索引才能生效。

常见问题 4:明确将策略连接到索引

为策略和索引赋予相同的名称并不会将两者联系在一起。例如,将你的策略​​命名为 filebeat-* 并不会将其连接到你的 filebeat-* 索引;你仍然需要明确将索引附加到策略。

你可以手动将策略附加到现有索引,但通常你会设置模板以在索引通过 Beat YAML 配置文件(例如:Filebeat 和 Metricbeat)或通过索引模板(index template)配置创建时自动附加策略

PUT _index_template/TEMPLATE_NAME
{"index_patterns": ["INDEX_NAME-*"],"template": {"settings": {"number_of_shards": 1,"number_of_replicas": 1,"index.lifecycle.name": "POLICY_NAME","index.lifecycle.rollover_alias": "INDEX_ALIAS"}}
}

你还可以通过 Kibana UI 配置索引模板。越来越多的用户正在转向数据流,它可以自动为你处理这些配置。

常见问题 5:手动管理现有索引

新策略不会自动应用于任何现有索引。索引模板(Index templates)可以附加策略,但模板仅在创建索引时应用。如果你已更新索引模板以自动附加策略和别名,它将在未来应用,但你需要手动将策略附加到任何现有索引。

你可以通过检索索引设置(index settings)来检查当前附加到索引的策略

GET INDEX_NAME-000001/_settings?filter_path=*.settings.index.lifecycle
{"INDEX_NAME-000001" : {"settings" : {"index" : {"lifecycle" : {"name" : "INDEX_POLICY_NAME","rollover_alias" : "INDEX_ALIAS"}}}}
}

常见问题 6:配置错误导致错误

如果这些为 NULL 或配置错误,你将遇到滚动操作错误。这些是我见过的最常见的 ILM 错误,我们将在下面介绍,因为它们取决于用户配置先决条件,而不仅仅是后端系统处理。你可以考虑使用不需要配置滚动别名的数据流(Data Streams)。

策略更新仅存储最新版本。

常见问题 7:仅存储最新的策略版本

用户无法恢复到之前的策略版本,一旦策略被覆盖就无法找回。每次发送的策略 PUT 请求都会创建或完全覆盖之前的版本,而不会部分更新策略的 JSON。

为了在操作切换时保持一致性,索引会将当前正在执行的策略阶段缓存到索引的元数据 phase_execution 中。通过检查 ILM 的 explain 输出,可以查看缓存的策略版本,以及它正在应用于哪个索引、处于哪个阶段、执行哪个操作或步骤。

GET INDEX_NAME-000001/_ilm/explain
{"indices": {"INDEX_NAME-000001": {"index": "INDEX_NAME-000001","managed": true,"policy": "INDEX_POLICY_NAME","lifecycle_date_millis": 1538475653281,"lifecycle_date": "2021-06-01T13:45:21.981Z","age": "25.14s","phase": "hot","phase_time_millis": 1538475653317,"phase_time": "2021-06-01T13:45:22.577Z","action": "rollover","action_time_millis": 1538475653317,"action_time": "2021-06-01T13:45:22.577Z","step": "attempt-rollover","step_time_millis": 1538475653317,"step_time": "2021-06-01T13:45:22.577Z","phase_execution": {"policy": "my_lifecycle3","phase_definition": {"min_age": "0ms","actions": {"rollover": {"max_age": "30m"}}},"version": 2,"modified_date": "2021-06-01T11:00:11.576Z","modified_date_in_millis": 1539609701576}}}
}

phase_execution 显示该策略缓存了其 hot 阶段内容,以便每 30 分钟滚动到新索引。如果将来更新附加策略,则策略缓存将在安全的情况下更新为策略的最新版本。

常见问题 8:策略版本安全更新

在索引进入策略的下一阶段之前,某些策略版本更新不会反映在索引的 phase_execution 缓存中。这是为了保护你的数据,并且一切都按预期运行。

有时用户在继承新系统后会升级工单。通常这是因为

  • 他们需要在业务/网络需求发生变化时启用或禁用数据层。
  • 他们新设置的 Elasticsearch 用户在编辑策略时权限不足,导致策略开始失败。

默认情况下,你需要在集群上拥有 manage_ilm 权限并在相关索引上进行管理,例如通过 super_user 角色。

常见问题 9:ILM 以上次编辑用户的身份运行

ILM 以上次编辑用户的身份执行操作,其权限与上次编辑策略时的用户相同。这些错误将显示为 action [x] is unauthorized for user [y]。以下是 Elastic Discuss 问题的示例。

诊断

如果 ILM explain 报告 ERROR 步骤,你可能需要解决问题才能让 ILM 继续运行。以下是最常见的错误及其解决方法

  • rollover alias [x] can point to multiple indices, found duplicated alias [x] in index template [z]
    • 索引模板定义目标滚动别名。该别名只需要在第一个索引上引导一次,因为滚动操作将管理将别名滚动到下一个索引。你可以在索引模板中指定其他别名,但不能指定用于滚动的别名。

  • index.lifecycle.rollover_alias [x] does not point to index [y]
    • ​​​​​​​你需要检查索引设置 index.lifecycle.rollover_alias。索引指向错误的别名,或者别名不存在。你可以通过运行 Get Aliases 来检查后者。这是一个 Elastic Discuss 问题示例。你可以考虑使用 Data Streams 来处理这个问题。

  • setting [index.lifecycle.rollover_alias] for index [y] is empty or not defined
    • ​​​​​​​你的索引设置 index.lifecycle.rollover_alias 为空,无法使滚动生效。请更新索引设置以附加滚动别名来解决。以下是 Elastic Discuss 问题示例。你可以考虑使用 Data Streams 来处理此问题。

  • alias [x] has more than one write index [y,z]
    • ​​​​​​​运行 “Get Aliases” 时,你会注意到两个索引被标记为 is_write_index:true,但每个别名只能有一个索引。你需要通过 Aliases API 在其中一个索引上切换 is_write_index:false。

  • index name [x] does not match pattern ^.*-\d+
    • 索引名称的正则表达式模式匹配是滚动生效的先决条件。用户最常忽略的问题是没有意识到索引名称需要以尾随数字结尾,例如 my-index-000001,而是只使用符合模式要求的 my-index。以下是 Elastic Discuss 问题示例。你可以考虑使用 Data Streams 来处理这个问题。

  • circuitBreakingException: [x] data too large, data for [y]
    • ​​​​​​​这表明集群资源已达到极限。请查看 Elasticsearch 管理和故障排除,以获得临时的系统缓解,以便继续进行 ILM 设置。

  • high disk watermark [x] exceeded on [y]
    • ​​​​​​​作为子集资源警告,这表明你的集群数据存储已达到极限。如果你尚未设置 hot 到 warm 节点 ILM 翻转,则通常会出现这种情况。你需要通过增加资源或删除不需要的索引或文档数据(或通过 delete_by_query)为你的集群腾出一些喘息空间。

系统将每十分钟自动重试失败的步骤,或者,一旦解决,你可以通过 Retry Policy Execution 手动触发重试

POST INDEX_NAME-000001/_ilm/retry

如果你想要暂时覆盖此间隔以进行测试,则需要更新集群设置以减少 indices.lifecycle.poll_interval。默认 ILM 集群设置如下

GET _cluster/settings?include_defaults=true&filter_path=*.indices.lifecycle*,*.xpack.ilm*
{ "defaults" : {"indices.lifecycle.history_index_enabled" : "true","indices.lifecycle.poll_interval" : "10m","indices.lifecycle.step.master_timeout" : "30s"}
}

如果策略配置正确且没有报告错误但你的操作没有进展,你需要调查它是否正在等待先决条件运行。

常见问题 10:良好的集群维护有助于 ILM 平稳运行

未分配(UNASSIGNED)分片可能导致策略执行无法继续,因为 ILM 在执行某些操作时会等待索引达到 “绿色” 状态。例如,迁移操作(migrate action)可能因此受阻。

由于我们已经检查了当前状态配置,并开始转向时间序列调查,因此接下来将查看 ILM 历史记录。ILM 历史记录默认通过 Elasticsearch 集群设置 indices.lifecycle.history_index_enabled:true 启用。根据部署版本的不同,可以通过在 Kibana 中创建 .ds-ilm-history-*ilm-history-* 系统索引的索引模式来查看数据。在 Kibana Discover 中,我更喜欢通过切换表格列来浏览创建的索引模式,如:[index, policy, state.phase, state.action, state.step, success]。

如果 ILM 历史记录无法提供足够的详细信息,可以通过启用更详细的集群日志记录来获取更多信息。

PUT /_cluster/settings
{"transient": {"logger.org.elasticsearch.xpack.core.indexlifecycle": "TRACE","logger.org.elasticsearch.xpack.indexlifecycle": "TRACE"}
}

这非常繁重,只能暂时启用。对于本地集群,你可以在 Elasticsearch 日志中看到更详细的日志记录。对于 Elastic Cloud 部署,请参阅我的 Elastic Cloud 设置,了解如何启用和查看这些内容。

结论

我们已经介绍了 ILM 的常见问题、诊断流程和常见错误恢复。此时,如果你在解决问题时遇到困难,请随时联系我们。我们在这里,很乐意为你提供帮助!你可以通过 Elastic Discuss、Elastic Community Slack、咨询、培训和支持与我们联系。

原文:Troubleshooting Elasticsearch ILM: Common issues and fixes | Elastic Blog

相关文章:

Elasticsearch ILM 故障排除:常见问题及修复

作者:来自 Elastic Stef Nestor 大家好!我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时,我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…...

1. 设计模式的由来

设计模式的灵感来自建筑师亚历山大的“设计套路”,后来被程序员借用,总结出一套“编程武功秘籍”。 20世纪90年代,四位软件工程师(被称为“四人帮”)——Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides&…...

【Excel】Excel中将日期格式转换为文本格式,并按日期显示。

【问题需求】 在使用excel进行数据导入的过程中, 有的软件要求日期列必须是文本格式。 但是直接将日期列的格式改为文本后,显示一串数字,而不按日期显示。 进而无法导入使用。 【解决方法】 使用【TXET】函数公式进行处理, 在单独…...

SpringBoot入门:如何新建SpringBoot项目(保姆级教程)

在本文中,我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的,因为我发现有些java的初学者,甚至工作10年的老员工居然并不会新建一个SpringBoot项目,所以特别出了一篇文章来教大家新建一个SpringBoo…...

什么是Layer Normalization?

一、概念 前面的文章中,我们介绍了Batch Normalization。BN的目的是使得每个batch的输入数据在每个维度上的均值为0、方差为1(batch内,数据维度A的所有数值均值为0、方差为1,维度B、C等以此类推),这是由于神…...

基于神经网络的弹弹堂类游戏弹道快速预测

目录 一、 目的... 1 1.1 输入与输出.... 1 1.2 隐网络架构设计.... 1 1.3 激活函数与损失函数.... 1 二、 训练... 2 2.1 数据加载与预处理.... 2 2.2 训练过程.... 2 2.3 训练参数与设置.... 2 三、 测试与分析... 2 3.1 性能对比.... 2 3.2 训练过程差异.... 3 四、…...

ASP.NET CORE API 解决跨域问题

环境 vs2022 .net 8 创建ASP.net Core API项目 配置跨域 编写ApiController 启动项目 得到服务器运行的 地址 在Hbuiler中创建web项目,编写代码 【运行】-【运行到浏览器】-选择一个浏览器,查看结果 正常显示 问题 如果允许所有源访问,有安全风险方…...

西安理工大学丨ChatGPT助力学术论文写作训练营-助力发表SCI一区、二区

在当今学术研究中,科研人员在撰写论文时面临诸多挑战。首先是信息量的剧增,科研人员需要快速消化新知识,筛选相关信息并清晰表达。但论文写作不仅是信息的罗列,还需要条理清晰、逻辑严密、语言精准,特别是在竞争激烈的…...

Android hid 数据传输(device 端 )

最近一直在处理hid 数据需求,简而言之就是两台设备直接可以通过usb 线互相传递数据。 项目架构 为什么Device 端要采用HID(人机接口设备)的方式发送和接收数据呢? 主要是速度快,举个例子,就是鼠标移动&am…...

Facebook 人工智能:重塑社交新未来

在数字化迅速发展的今天,人工智能(AI)已经深入了我们的生活,尤其是在社交媒体领域。Facebook作为全球最大的社交平台之一,正利用AI技术,革新其服务和用户体验,为用户打造社交互动的新未来。 首先,人工智能…...

UIlicious - 自动化端到端测试

在现代软件开发中,测试自动化已然成为产品交付质量的基石。而端到端测试(E2E),作为验证整个应用流畅运行的关键,常常是测试工作中最具挑战性的一环。这时,一款简单高效的自动化测试工具——UIlicious&#…...

PHP 与 MySQL 搭配的优势

一、PHP 与 MySQL 搭配的优势 强大的动态网页开发能力 PHP 是一种服务器端脚本语言,能够生成动态网页内容。它可以根据用户的请求、数据库中的数据等因素,实时地生成 HTML 页面返回给客户端浏览器。而 MySQL 是一个流行的关系型数据库管理系统&#xf…...

HDFS 操作命令

在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在 集群上的文件系统称为 分布式文件系统 。 HDFS ( Hadoop Distributed File System )是 Apache Hadoop 项目的一个子项目, Hadoo…...

第四篇:k8s 理解Service工作原理

什么是service? Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。 简单来说K8s提供了service对象来访问pod。我们在《k8s网络模型与集群通信》中也说过k8s集群中的每一个Pod(最小调度单位)都有自己的IP地址,都…...

什么是TCP的三次握手?

TCP的三次握手:深入理解建立可靠连接的过程 引言 在计算机网络中,传输控制协议(TCP)是确保数据可靠传输的核心协议之一。TCP通过三次握手机制来建立一个稳定的、双向的连接,这对于确保数据的完整性和顺序至关重要。本…...

Pytorch使用手册- TorchVision目标检测微调Tutorial的使用指南(专题十二)

这篇教程的目标是对一个预训练的 Mask R-CNN 模型进行微调,应用于 Penn-Fudan 行人检测与分割数据集。该数据集包含 170 张图像,里面有 345 个行人实例,我们将通过这个教程来演示如何使用 torchvision 中的新特性,训练一个面向自定义数据集的目标检测和实例分割模型。 注意…...

Modern Effective C++条款三十五:优先考虑基于任务的编程而非基于线程的编程

C中开发者可以通过两种主要方式异步执行一个函数,如doAsyncWork()。这两种方法分别是基于线程(thread-based)和基于任务(task-based)的方式。 基于线程的方式 使用std::thread创建一个新的线程来执行doAsyncWork()函数,直接且直观,但也有其…...

lyapunov指数的绘制

有如下方程: %% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)绘制其对应的lyapunov指数。 MATLAB实现方式: clc; clearvars; close all;%% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)%% 代码 N 1000; a (0:0.001:1.4); b 0.3; na length(a…...

WPF+MVVM案例实战与特效(三十二)- 封装一个Appconfig 操作类(保留注释)

文章目录 1、概述2、ConfigHelper 的功能3、代码实现1、ConfigHelper.cs 代码2、帮助类使用4、总结1、概述 在开发 WPF 应用程序时,配置文件(如 App.config )是存储应用程序设置、连接字符串和其他运行时信息的常用方式。然而,直接操作这些配置文件可能会涉及到复杂的 XML…...

决策树:ID3、C4.5和CART特征选择方式

1 前言 该文章主要目的是记录ID3、C4.5和CART特征选择方式,这里只对决策树进行简单介绍。 决策树(Decision Tree)算法是一种有监督学习算法,它利用分类的思想,根据数据的特征构建数学模型,从而达到数据的筛…...

02 conda常用指令

目录 命令快速查找命令详细解释列出当前conda中存在的解释器环境使用指定的解释器环境创建虚拟环境激活自己创建的虚拟环境虚拟环境删除切换回主环境找到你计算机中安装的miniconda3的跟目录找到虚拟环境的目录选择需要删除的虚拟环境文件夹确认环境是否删除 补充删除虚拟环境指…...

从仪表盘探索 MongoDB 关键指标

这是 MongoDB 监控系列文章的第七篇,前面几篇文章的链接如下: MongoDB 监控(一)MongoDB 监控(二)MongoDB 监控(三)MongoDB 监控(四)MongoDB 监控&#xff08…...

Grule前端表单post后端执行grule引擎规则

Grule前端表单post后端执行grule引擎规则 编写前端表单和后端接口 编写test.go执行grule引擎规则 示例都是 go test 执行的测试代码,所以将里面的测试代码去除 由于之前 NumberExponentExample_test.go 已经验证可运行, 所以将 err 的异常处理去除 package mai…...

EasyRTC支持嵌入式智能硬件与微信小程序实时通话

基础建设如此发达的时代,各种物联网设备都越来越普及,尤其是可穿戴设备和智能家居设备的发展,而在物联网设备中,视频物联网设备又是特别受人关注的设备,因为他们具备有看得见的属性,像智能家居里面的摄像头…...

openGauss开源数据库实战十九

文章目录 任务十九 openGauss DML 语句测试任务目标实施步骤一、准备工作二、INSERT语句三、DELETE语句四、UPDATE语句五、清理工作 任务十九 openGauss DML 语句测试 任务目标 掌握DML语句的用法,包括INSERT语句、DELETE语句和UPDATE语句。 实施步骤 一、准备工作 使用Li…...

基于XML的AOP开发

AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程。 AOP相关术语: 目标对象(Target): 你要去代理的对象,可以理解为之前很单纯的那个对象。 代理对象(Proxy): 你把你那个单纯的对象给我&#xff0c…...

获取Ubuntu-22.04.1 对应的vmlinux文件

0.前言 🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言&#x1…...

Python后端 -- 万字长文全面解析Django框架

自从2005年诞生以来,Django因其“开发速度快、安全性高”的特点迅速成为许多开发者的首选。无论是小型的个人项目,还是大型的企业应用,Django都能游刃有余地满足需求。我们将从Django的基础知识带你全面掌握Django,从基础知识到高…...

“指标管理系统”是什么?企业如何搭建指标管理系统?

在当今数字化时代,数据已成为企业决策的重要依据。然而,海量数据中如何筛选出关键指标,并对其进行有效管理,成为了众多企业面临的难题。为此,指标管理系统应运而生,它旨在帮助企业规范化定义、统一管理和高…...

Node.js简单接口实现教程

Node.js简单接口实现教程 1. 准备工作 确保您的计算机已安装: Node.js (建议版本16.x以上)npm (Node包管理器) 2. 项目初始化 # 创建项目目录 mkdir nodejs-api-tutorial cd nodejs-api-tutorial# 初始化npm项目 npm init -y# 安装必要依赖 npm install expres…...

交换机四大镜像(端口镜像、流镜像、VLAN镜像、MAC镜像)应用场景、配置实例及区别对比

在网络管理中,端口镜像、流镜像、VLAN镜像和MAC镜像都是用于监控和分析网络流量的重要技术。 端口镜像(Port Mirroring) 定义:端口镜像是将一个或多个源端口的流量复制到一个目标端口,以便于网络管理员能够监控和分析…...

服务器上的常见Linux命令教程

在管理服务器(如香港服务器)时,掌握常见的 Linux 命令 是非常重要的,它们可以帮助你高效地完成服务器管理任务,如文件操作、进程管理、用户管理、网络配置等。 以下是一个系统化的 Linux 常见命令教程,分为…...

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置…...

【MySQL】使用 JDBC 连接数据库

文章目录 前言1. 认识 JDBC 1.1 概念1.2 好处 2. 使用 JDBC 2.1 安装数据驱动包2.2 把 jar 包导入到项目中2.3 代码编写2.4 测试结果 3. 代码优化4. 源码展示结语 前言 在 MySQL 系列中,我们介绍了很多内容,包括但不限于建库建表,增删查改等…...

深入浅出:PHP会话管理(Session 和 Cookie)

深入浅出:PHP会话管理(Session 和 Cookie) 前言 在Web开发中,会话管理是确保用户状态持续性和数据安全的关键。通过会话管理,我们可以在多个页面请求之间保持用户的登录状态、购物车信息等。PHP提供了两种主要的会话…...

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计) 逻辑回归(Logistic Regression,LR)逻辑回归的基本思想逻辑回归模型逻辑回归的目标最大似然估计优化方法 逻辑回归…...

【开源】A063—基于Spring Boot的农产品直卖平台的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...

单链表---合并两个链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 struct ListNode {int val;struct ListNode* next; }; w 方法一---不使用哨兵位 我们创建一个新链表用于合并两个升序链表, 将两个链表中最小的结点依次尾插到…...

draggable插件——实现元素的拖动排序——拖动和不可拖动的两种情况处理

最近在写后台管理系统的时候,遇到一个需求,就是关于拖动排序的功能。 我之前是写过一个关于拖动表格的功能,此功能可以实现表格中的每一行数据上下拖动实现排序的效果。 vue——实现表格的拖拽排序功能——技能提升 但是目前我这边的需求是…...

vite+vue3 配置ip和端口以及自动打开浏览器

编辑文件vite.config.ts 修改前vite.config.ts文件内容 import { defineConfig } from vite import vue from vitejs/plugin-vue// https://vite.dev/config/ export default defineConfig({plugins: [vue()], })修改vite.config.ts后文件内容 新增server内容 server:{host…...

Netty面试内容整理-Netty 概述

Netty 是一个基于 Java 的异步事件驱动网络应用框架,常用于构建高性能、高并发的网络服务。Netty 封装了 Java NIO 的复杂细节,使得开发者可以方便地构建高效的网络应用。以下是 Netty 的概述: Netty 的特点 ● 异步和事件驱动:Netty 采用异步非阻塞的 I/O 模型,基于事件驱…...

Docker搭建达梦数据库--基于 X86 架构

1、部署环境 X86_64 架构的服务器 1 台,安装好docker 拉取镜像 官方最新非授权版本有些函数方法无法使用 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/dm8_single:dm8_20230808_rev197096_x86_rh6_64查看镜像 docker images | grep dm8运行容器 docker run…...

4. 设计模式分类

4.1 创建型模式 这类模式提供创建对象的机制,能够提升已有代码的灵活性和可复用性。 序 号 类 型 业务场景 实现要点 1 工 厂 方 法 多种类型商品不同接口,统一发奖服 务搭建场景 定义一个创建对象的接口,让其子类自 己决定实例化哪一个工厂类,工厂模式 使其创建过程延迟…...

【SKFramework框架核心模块】3-12、网络请求模块

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…...

MacOS安装软件后无法启动报错:“已损坏,无法打开,你应该将它移到废纸篓“

目录 报错截图 解决方法 知识科普 报错截图 解决方法 1. 打开系统设置->安全性与隐私->选择任何来源 2. 如果打开没有看到"任何来源",如果不开启“任何来源”的选项,会直接影响到无法运行的第三方应用。开启“任何来源”的方法如下&a…...

每日速记10道java面试题14-MySQL篇

其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...

结构型-组合模式(Composite Pattern)

什么是组合模式 又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 结构 抽象根节点(Co…...

Netty面试内容整理-高级特性

Netty 提供了一些高级特性,使得它成为一个功能强大、灵活且适用于高并发、高性能场景的网络框架。以下是 Netty 的一些高级特性及其详细介绍: 零拷贝技术 ● 概念:零拷贝(Zero-Copy)是一种避免将数据从内核缓冲区复制到用户缓冲区的技术,从而减少内存拷贝,提高性能。 ●…...

【自动化】十款开源测试开发工具推荐自动化、性能、造数据、流量复制等

目录 一、AutoMeter-API 自动化测试平台二、QA Wolf 浏览器自动化测试工具三、Mimesis 用于 Python 的高性能虚假数据生成器四、Ddosify 高性能负载测试工具五、AutoCannon HTTP/1.1 基准测试工具六、Sharingan 流量录制回放工具七、randdata 随机测试数据生成工具八、Drission…...

【网络篇】HTTP知识

键入网址到网页显示,期间发生了什么? 浏览器第一步是解析URL,这样就得到了服务器名称和文件的路径名,然后根据这些信息生成http请求,通过DNS查询得到我们要请求的服务器地址,然后添加TCP头、IP头以及MAC头&…...