LeetCode题集-5 - 最长回文子串(一)
题目:给你一个字符串 s,找到 s 中最长的回文子串。
这一题作为中等难度,常规解法对于大多数人应该都没有难度。但是其中也有超难的解决办法,下面我们就一起由易到难,循序渐进地来解这道题。
01、暴力破解法
对于大多数题目来说,在不考虑性能的情况下,暴力破解法常常是最符合人的思维习惯的。
比如这道题,求一个字符串中最长的回文子串,那么我们只需要把字符串中所有可能的子字符串都判断一下是不是回文串,并找出长度最长的不就行了嘛。
这里需要三层循环,第一层和第二层循环组织出所有可能的子字符串,第三层循环判断是否为回文串。
而判断一个字符串是否为回文串,也很简单,只需要从字符串两端开始判断首尾字符是否相等,如果相等继续向字符串中心方向前进继续比较下一个首尾字符是否相等,直到比较完所有字符,如果都相等则为回文串。其核心思想是由外向内,逐一比较。
具体代码如下:
//暴力破解法
public static string BruteForce(string s)
{var result = string.Empty;var max = 0;var len = s.Length;//从第一个字符开始遍历,作为起始字符for (var i = 0; i < len; i++){//从第二个字符来开始遍历,作为结束字符for (var j = i + 1; j <= len; j++){//取出[i,j)字符串,即包含i,不好含j,为临时字符串var temp = s[i..j];//如果临时字符串是回文字符串,且临时字符串长度大于目标字符串长度if (IsPalindromic(temp) && temp.Length > result.Length){//则更新目标字符串为当前临时字符串result = temp;max = Math.Max(max, j - i - 1);}}}return result;
}
//判断字符串是否为回文串
public static bool IsPalindromic(string s)
{var len = s.Length;//遍历字符串的一半长度for (var i = 0; i < len / 2; i++){//如果对称位置不同,则不为回文串if (s[i] != s[len - i - 1]){return false;}}return true;
}
时间复杂度:两层for循环O(n^ 2 ),for 循环里边判断是否为回文串O(n),所以时间复杂度为O(n^3)。
空间复杂度:O(1),常数个变量。
02、暴力破解法优化(动态规划法)
要想优化暴力破解法,我们要先找到它到底有什么问题。它的时间复杂度之所以这么高,是因为有大量的重复计算,可能文字描述不够直观,下面我们先用二维表展示一个字符串的所有子字符串的组合情况,然后再在这个表中看判断是否为回文串时哪些子字符串被重复判断。
如上图在字符串abcde中,在判断其子字符串bcd是否是回文串时,作为字符串bcd已经计算过了,同样的其子字符串c,作为字符串也已经计算过了,其他的沿着箭头方向都是表示存在重复计算的地方。
到这里我们的优化方案就有了,我们可以把已经计算过的存下来,这样下次用到的时候直接拿过来用而不用再计算了。
既然我们通过图就发现了一些规律,我们不妨再深入思考一下,为什么会这样?
如果我们基于暴力破解法中判断是否为回文串的算法定义回文串,那么可得:
P(i,j)=P(i+1,j-1)&&S[i]==S[j]
可以理解为如果一个字符串是回文串,那么去掉首尾字符后子字符串依然是回文串。反过来如果子字符串是回文串并且其首尾一个字符相等,那么这个字符串整体也是回文串。
我们再对上图斜对角上加些辅助线,如果我们按所有子字符串的长度分类,则会发现长度为3的依赖长度为1的,长度为5的依赖长度为3的,长度为4的依赖长度为2的。如下图:
长度为1本身就是回文串,长度为2的如果两个字符相等则为回文串,那么所有长度大于等于3的都可以通过长度为1和2的计算出来。
到这里整个算法思路就出来了:先计算长度为1和2的子字符串并存入二维数组,然后基于此二维数组继续计算长度为3、4、5……。
具体代码如下:
//动态规划
public static string DynamicProgramming(string s)
{var length = s.Length;//判断该组合是否是回文字符串,行为起始点,列为结尾点var dp = new bool[length, length];//最长回文字符串,初始为0var result = string.Empty;//从回文长度为1开始判断,到字符长度n为止for (var len = 1; len <= length; len++){for (var startIndex = 0; startIndex < length; startIndex++){//结束索引 = 起始索引 + 间隔(len - 1)var endIndex = startIndex + len - 1;//结束索引超出字符串长度,结束本次循环if (endIndex >= length){break;}//回文字符串的公式就是子字符串也是回文,并且当前起始字符和结束字符相等,//所以得出公式 dp[startIndex+1,endIndex-1] && s[startIndex] == s[endIndex]//其中回文长度为1和2两种特殊情况需要单独处理,其特殊性在于他们不存在子字符串//回文长度为1时,自身当然等于自身//回文长度为2时,起始字符和结束字符是相邻的,只要相邻的字符相等就可以dp[startIndex, endIndex] = (len == 1 || len == 2 || dp[startIndex + 1, endIndex - 1]) && s[startIndex] == s[endIndex];//当前字符串是回文,并且当前回文长度大于最长回文长度时,修改resultif (dp[startIndex, endIndex] && len > result.Length){result = s.Substring(startIndex, len);}}}return result;
}
时间复杂度:O(n^2),即为两层for循环组成的所有子字符串情况。
空间复杂度:O(n^2),即存储已计算子字符串结果需要的空间。
这个算法还有一个专有名称:动态规划,我们这里之所以没有突出去讲,是想把整个解题思路展现出来,掌握好了基础解题能力,我们才能做总结,而这个解法的总结就可以概括为动态规划,这是一种通用的思想,后面会经常用到。
03、中心扩展法
上面的优化虽然时间复杂度降下来了,但是空间复杂度上升了,我们继续想想有什么其他方法呢?
上面的方法判断是否为回文串的核心思想是由外向内,那我们是否可以换个思路——从内向外呢?这就是中心扩展法的核心思想。
在暴力破解法中,我们需要两层循环表示任何一种子字符串排列,而且中心扩展法核心思想是通过一个中心点向两边扩展也就天然只需要一层循环即可表示探测所有字符的情况。
由中心往两边扩展是对称的,而回文串长度可以是奇数也可以是偶数,因此我们在中心扩展时就需要分奇偶两种情况来处理。
到这里我们可以大致梳理一下整体逻辑了:
(1)依次循环处理字符串的每个字符,向两边扩展;
(2)每次扩展分奇偶两种情况处理;
(3)计算出最大长度并保留;
(4)重复(2)、(3)直至所有字符处理完成;
具体实现代码如下:
//中心扩散法
public static string CenterExpand(string s)
{//如果字符串为空或只有一个字符,直接返回该字符串if (s == null || s.Length < 1){return "";}//记录最长回文子串的起始位置和结束位置var startIndex = 0;var endIndex = 0;//遍历每个字符,同时处理回文字串长度为奇偶的情况,//即以该字符或该字符与其下一个字符之间为中心的回文for (var i = 0; i < s.Length; i++){//获取回文字串长度为奇数的情况,//即以当前字符为中心的回文长度var oddLength = PalindromicLength(s, i, i);//获取回文字串长度为偶数的情况,//即以当前字符和下一个字符之间的空隙为中心的回文长度var evenLength = PalindromicLength(s, i, i + 1);//取两种情况下的最长长度var maxLength = Math.Max(oddLength, evenLength);//如果找到更长的回文子串,更新起始位置和长度if (maxLength > endIndex - startIndex){//重新计算起始位置startIndex = i - (maxLength - 1) / 2;//重新计算结束位置endIndex = i + maxLength / 2;}}//返回最长回文子串return s[startIndex..(endIndex + 1)];
}
//从中心向外扩展,检查并返回回文串的长度
public static int PalindromicLength(string s, int leftIndex, int rightIndex)
{//左边界大于等于首字符,右边界小于等于尾字符,并且左右字符相等while (leftIndex >= 0 && rightIndex < s.Length && s[leftIndex] == s[rightIndex]){//从中心往两端扩展一位//向左扩展--leftIndex;//向右扩展++rightIndex;}//返回回文串的长度(注意本来应该是rightIndex - leftIndex + 1,//但是满足条件后leftIndex、rightIndex又分别向左和右又各扩展了一位,//因此需要把这两位减掉,所以最后公式为rightIndex - leftIndex - 1) return rightIndex - leftIndex - 1;
}
时间复杂度:O(n^2)。
空间复杂度:O(1)。
此方法虽然时间复杂度没变,但是空间复杂度大大降低。这也给了我们继续优化的动力。
下一章节我们将详细讲解次题的马拉车解法。
注:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。https://gitee.com/hugogoos/Planner
相关文章:
LeetCode题集-5 - 最长回文子串(一)
题目:给你一个字符串 s,找到 s 中最长的回文子串。 这一题作为中等难度,常规解法对于大多数人应该都没有难度。但是其中也有超难的解决办法,下面我们就一起由易到难,循序渐进地来解这道题。 01、暴力破解法 对于大多…...
A3026 Java+jsp+servlet+mysql高校学生请假管理系统
高校学生请假管理系统 1.摘要2. 绪论3.功能结构4.界面展示5.源码获取 1.摘要 高校学生请假管理系统 摘要:随着计算机的发展与不断进步,各个领域都出现了新的技术,曾经各种规模之间的竞争已经发展成为技术之间的竞争,管理和人才之…...
LDO低压差线性稳压器
1. 简介 LDO 是 “Low Dropout Regulator” 的缩写,中文称为“低压差线性稳压器”。LDO 稳压器是一种用于电压调节的电子设备,它的主要特点是输出电压和输入电压之间的压差非常低。这种特性使得 LDO 在许多应用场景中非常有用,特别是在需要高…...
Angular由一个bug说起之十一:排序之后无法展开 Row
问题现象 在使用 Material Table 时,排序功能触发了一个奇怪的 Bug:表格的 Row 无法展开。最终排查发现,问题的根源在于 trackBy 的错误使用。trackBy 方法接受两个参数:index(数据索引)和 row(…...
wlanapi.dll丢失怎么办?有没有什么靠谱的修复wlanapi.dll方法
在遇到各种系统文件错误当中,其中之一就是“wlanapi.dll文件丢失”的问题。这种问题通常发生在Windows操作系统上,特别是当系统试图执行与无线网络相关的任务时。wlanapi.dll是一个重要的系统文件,它负责处理Windows无线网络服务的许多功能。…...
redis安装和使用教程【保姆级】
1.下载 通过网盘分享的文件:redis 链接: https://pan.baidu.com/s/1Tu1KZkf33YJFdul8s6SzqQ?pwd8888 提取码: 8888 2.启动 进入根目录,使用redis-server redis.windows.conf命令启行启动Redis服务, 如下图所示为启动成功,默认…...
Github 2024-12-01 开源项目月报 Top20
根据Github Trendings的统计,本月(2024-12-01统计)共有20个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10TypeScript项目9Go项目2HTML项目1Shell项目1Jupyter Notebook项目1屏幕截图转代码应用 创建周期:114 天开发语言:TypeScript, Py…...
C总结(C语言知识点,深化重难点)
C语言 1.使用C语言的7个步骤2.ASCII码3.提高程序可读性的机巧4.如何使用多种整形5.打印多种整形6.课移植类型:stdint.h和inttypes.h7.浮点数常量8.浮点值的上溢和下溢9.使用数据类型11.常量和C预处理器12.转换说明的意义12.1转换不匹配13.副作用和序列点14.数组简介…...
[Collection与数据结构] 位图与布隆过滤器
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
Redis与缓存
目录 缓存 缓存优缺点 缓存更新策略 超时剔除 先删缓存再更新数据库 旁路缓存(先更新数据库,再删缓存) 先更新数据库,再更新缓存 读写穿透 编辑 异步缓存写入模式 缓存常见问题 缓存穿透 缓存雪崩 缓存击穿 缓存 在业务开发…...
Ubuntu Linux 文件、目录权限问题(五)
本文为Ubuntu Linux操作系统- 第五弹 此文是在上期文件目录的内容操作基础上接着讲权限问题 上期回顾:Ubuntu Linux 目录和文件的内容操作 文件访问者身份与文件访问权限 Linux文件结构 所有者(属主)所属组(属组)其他…...
AI 名人堂:Jeff Dean
Jeff Dean,谷歌的高级研究员和人工智能领域的领军人物,以其在大规模分布式计算系统和人工智能系统的杰出贡献而闻名。 谷歌AI掌门人 TensorFlow项目负责人 美国工程院院士 2AGI.NET AI 名人堂 AI 名人堂:Jeff DeanAI 名人堂:Je…...
基础排序算法详解:冒泡排序、选择排序与插入排序
引言 上一章,我们聊到了排序的基本概念和常见算法的分类。这一次,我们从基础开始,深入剖析三种常见的O(n) 排序算法:冒泡排序、选择排序 和 插入排序。 它们是学习排序算法的入门神器,不仅实现简单,还能帮…...
Flink如何基于数据版本使用最新离线数据
业务场景 假设批量有一张商户表,表字段中有商户名称和商户分类两个字段。 批量需要将最新的商户名称和分类的映射关系推到hbase供实时使用。 原实现方案 a.原方案内容 为解决批量晚批问题,批量推送hbase表时一份数据产生两类rowkey:T-1和…...
什么是反向代理?作用、原理和实例详解
🚀 什么是反向代理?作用、原理和实例详解 在现代的网络架构中,反向代理(Reverse Proxy)无处不在。无论是负载均衡、加速缓存,还是WebSocket 支持,反向代理都是必不可少的工具。 这篇文章将带您…...
国产GPU中,VLLM0.5.0发布Qwen2.5-14B-Instruct-GPTQ-Int8模型,请求返回结果乱码
概述 国产GPU: DCU Z100 推理框架: vllm0.5.0 docker容器化部署 运行如下代码: python -m vllm.entrypoints.openai.api_server --model /app/models/Qwen2.5-14B-Instruct-GPTQ-Int8 --served-model-name qwen-gptq --trust-remote-code --enforce…...
Stable Diffusion本地部署:从零开始的完整指南
1、引言 Stable Diffusion是计算机视觉领域的一个生成式大模型,能够进行文生图(txt2img)和图生图(img2img)等图像生成任务。它利用深度学习技术,特别是RealisticVision v2.0模型,能够创造出接近…...
隐式神经网络实现低光照图像增强
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
Flutter动画(三)内建显式动画Widget
常见的内建显式动画Widget: ListenableBuilder: AnimatedBuilder AnimatedWidget AlignTransition DecoratedBoxTransition DefaultTextStyleTransition PositionedTransition RelativePositionedTransition RotationTransition ScaleTransiti…...
springSecurity自定义登陆接口和JWT认证过滤器
下面我会根据该流程图去自定义接口: 我们需要做的任务有: 登陆:1、通过ProviderManager的方法进行认证,生成jwt;2、把用户信息存入redis;3、自定义UserDetailsService实现到数据库查询数据的方法。 校验&a…...
Spring Boot日志:从Logger到@Slf4j的探秘
写在前面 Hello大家好,今日是2024年的第一天,祝大家元旦快乐?? 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用?三、日志怎么用?四、自定义日志打印 ?? 常见日志框架说明4.1 在程序中得到?志对象【…...
使用 LabVIEW 与 PLC 通信的方式
要将 PLC 与 LabVIEW 或其他 NI 产品进行通信,首先需要明确 PLC 支持的通信协议和接口类型。NI 提供了多种方案,包括 OPC 服务器、Modbus、Ethernet/IP 和其他工业通信协议。下面将详细介绍这些方法,并进行比较分析,帮助你选择最适…...
python录制鼠标键盘操作循环播放
依赖 pip install pynput 程序: from pynput import mouse, keyboard import time import threading# 用于存储录制的鼠标和键盘事件 mouse_events [] keyboard_events []# 定义事件处理函数# 处理鼠标事件 def on_move(x, y):mouse_events.append((move, x, y))def on_cl…...
开发者如何使用GCC提升开发效率Opencv操作
看此篇前请先阅读 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144216351?spm=1001…...
异常与文件
目录 1.异常 1.1.概念 1.2.常见异常 1.3.异常处理方式 1.3.1.try except 1.3.2.try except else 1.3.3.try except else finally 2.文件 2.1.文件分类 ps:python 程序的数据保存在哪里? 2.2.常见的文件类型 2.3.python 操作文件的函数 2.3.1.读取文件…...
【C语言】完成程序设计填空
文章目录 1、请阅读下面的程序,在空白处填写正确的代码,要求各在一行从头开始输出m和n的值。2、求100~599之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。3、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序 拆分并输出。请填空…...
西湖大学:LLM零样本推理任务校准
📖标题:Task Calibration: Calibrating Large Language Models on Inference Tasks 🌐来源:arXiv, 2410.18764 🌟摘要 🔸大型语言模型(LLM)在推理任务上表现出令人印象深刻的零样本…...
windows下Qt5自动编译配置QtMqtt环境(11)
文章目录 [toc]1、概述2、准备1.1 下载源码1.2 配置环境1.3 解释原理 3、编译4、验证5、参考6、视频 更多精彩内容👉内容导航 👈👉Qt网络编程 👈 1、概述 Qt默认是不包含mqtt库的,如果需要使用到mqtt库就只能自己编译配…...
每天五分钟深度学习:神经网络的前向传播的计算(多样本)
本文重点 前面我们学习了单样本的前向传播,本文我们学习多样本的前向传播,我们先来回忆一下,神经网络的单样本的前向传播的向量化的方式: m个样本依次进行前向传播 这里我们说明一下符号: 我们使用(m)表示第m个样本,用[m]表示神经网络的第m层 a[2](i) 表示第i个样本计…...
基于 NXP S32K312+FS23 的汽车通用评估板方案
S32K3 系列是 NXP 推出的面向汽车电子和工业应用的微控制器,基于 ARMCortex-M7 内核,支持单核、双核和锁步内核配置。S32K3 系列具有内核、内存和外设数量方面的可扩展性,符合 ISO26262 标准,能达到 ASIL B/D 安全等级,…...
11进阶篇:专业课论文阅读方向指南(2025版)
文章目录 第一个检索式:图情档核心期刊(北大 + CSSCI)发文情况研究方法类关键词研究主题类关键词论文阅读建议第二个检索式:川大公共管理学院在核心期刊(北大 + CSSCI)的发文情况研究方法类关键词研究主题类关键词特点关键词与2024年972(现815)两道题目的映射情况815信…...
Qt之第三方库QXlsx使用(三)
Qt开发 系列文章 - QXlsx(三) 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.写入数据 2.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用程序功能的控件…...
第145场双周赛: 使数组的值全部为 K 的最少操作次数、破解锁的最少时间 Ⅰ、使两个整数相等的位数操作、统计最小公倍数图中的连通块数目
Q1、使数组的值全部为 K 的最少操作次数 1、题目描述 给你一个整数数组 nums 和一个整数 k 。 如果一个数组中所有 严格大于 h 的整数值都 相等 ,那么我们称整数 h 是 合法的 。 比方说,如果 nums [10, 8, 10, 8] ,那么 h 9 是一个 合法…...
AJAX三、XHR,基本使用,查询参数,数据提交,promise的三种状态,封装-简易axios-获取省份列表 / 获取地区列表 / 注册用户,天气预报
一、XMLHttpRequest基本使用 XMLHttpRequest(XHR)对象用于与服务器交互。 二、XMLHttpRequest-查询参数 语法: 用 & 符号分隔的键/值对列表 三、XMLHttpRequest-数据提交 核心步骤 : 1. 请求头 设置 Content-Type 2. 请求体 携带 符合要求 的数…...
Android期末复习题
1.如何搭建Android开发环境? 答案:搭建Android开发环境需要以下几个步骤: (1)下载和安装JDK (2)配置PATH环境变量 (3)下载和安装Android Studio (4)创建A…...
《蓝桥杯比赛规划》
一、比赛简介 蓝桥杯全国软件和信息技术专业人才大赛是一项具有较高影响力的编程竞赛,旨在促进软件和信息技术领域专业技术人才的培养,提升高校毕业生的就业竞争力。比赛涵盖了多个编程语言和专业方向,包括 C/C、Java、Python 等。 二、目标…...
三、Zookeeper
Zookeeper 三、Zookeeper3.1什么是zookeeper?3.2为什么需要zookeeper3.3Zookeeper基本运行流程3.4Zookeeper数据模型3.5Zookeeper主要角色3.6Zookeeper工作原理3.7Zookeeper节点数据操作流程三、Zookeeper 3.1什么是zookeeper? ZooKeeper是一个分布式的,开放源码的分布式应…...
Wireshark数据抓包分析之传输层协议(TCP协议)
根据实验环境,本实验的步骤如下: 1.在测试环境使用发包工具和Wireshark抓取TCP三次握手和四次断开的数据包。 2.详细分析TCP协议的三次握手以及四次断开。 任务描述:安装发包工具,并配置TCP客户端,服务端࿰…...
用ai做机器视觉的事情
cnn(卷积神经网络)是典型的ai算法。 我们已经cnn实现像机器视觉中形状匹配的功能,因为使用了roi抠图匹配,所以就叫做roicnn,以区分整图匹配。下面是roicnn笔记总结: 20241022,roicnn搞定&…...
LLM - 开源视觉多模态 LLaVA-CoT(o1) 深度推理模型 测试与源码 教程
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144304351 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 LLaVA-…...
qtcanpool 知 10:包管理雏形
文章目录 前言痛点转机雏形实践后语 前言 曾听闻:C/Qt 没有包管理器,开发起来太不方便。这是一个有过 node.js 开发经验的人对 Qt 的吐槽。 确实,像 python、golang、node.js 这些编程语言都有包管理器,给用户带来了极佳的开发体…...
[保姆式教程]使用目标检测模型YOLO11 OBB进行旋转目标检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)
之前写了一个基于YOLOv8做旋转目标检测(OBB)的文章,内容写得不够好,内容也有些杂乱无序。现如今YOLO已经更新到11了,数据集也集齐了无人机和卫星的农业大棚,所以这次就写一个基于YOLO11 OBB的农业大棚旋转检…...
MySQL 权限管理分配详解
MySQL 权限管理分配详解 MySQL权限系统的工作原理权限表的存取用户通过权限认证、进行权限分配的流程账号管理我们常用的授权all privileges到底有哪些权限呢?以及带来的安全隐患有哪些?创建账户的时候最好分配指定的权限,这样子安全也高管理…...
【期末速成】《微机原理与接口技术》知识点总结
文章目录 前言第一、二章 接口技术概述1. 接口的定义*2. 接口功能特点*3. 接口的分类*4. 接口中的传输信息及其组成5. 接口的编址与译码*6. CPU 与外设之间的数据传送方式* 第三章 总线1. 总线(BUS)的定义*2. 总线的标准3. 采用标准总线的优点*4. 总线的…...
华为、华三交换机纯Web下如何创关键VLANIF、操作STP参数
华为交换机WEB操作 使用的是真机S5735,目前主流的版本都适用(V1R5~V2R1的就不在列了,版本太老了,界面完全不一样,这里调试线接的console口,电脑的网络接在ETH口) 「模拟器、工具合集」复制整段内…...
【Elasticsearch】初始化默认字段及分词
1、添加分词插件 1)在线安装 执行命令 需要指定相同的版本 bin/elasticsearch-plugin.bat install https://get.infini.cloud/elasticsearch/analysis-ik/7.17.24 2)离线安装 将安装包解压到 /plugins 目录下 安装包可以从对应的资源处下载 启动成…...
asdf-java配置
asdf list all java 无结果 asdf list all java 显示结果 No compatible versions available 解决方案 参考 执行 cp ~/.asdf/plugins/java/data/jdk-macosx-x86_64-ga.tsv $TMPDIR/asdf-java-$(whoami).cache/releases-macosx-x86_64.tsv 在此执行 asdf list all java 就可…...
2-2-18-14 QNX系统架构之 TCP/IP 网络
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...
RabbitMQ延迟消息的实现
RabbitMQ延迟队列的实现 延迟消息是什么延迟消息的实现死信交换机代码实现 延迟消息插件 延迟消息是什么 延迟消息是将消息发送到MQ中,消费者不会立即收到消息,而是过一段时间之后才会收到消息,进行处理。在一些业务中,可以用到延…...
Docker 安装 中文版 GitLab
Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…...