结构的艺术:模糊查询

ClickHouse模糊查询实战:跳数索引优化与ES替代方案对比 本文深入探讨了在ClickHouse中进行模糊查询的实战优化方案。针对海量日志分析场景,详细解析了如何利用跳数索引(尤其是ngrambf_v1)显著提升LIKE查询性能,并通过对比Elasticsearch(ES)的核心差异,为不同业务场景提供了清晰的选型指南和混合架构建议。 阅读详情

系统的学过编程的人应该都知道,有一门基础课:《数据结构与算法》,这门课很重要,但是许多人却不怎么重视,导致后来算法学习频频碰壁。我不会给大家系统的讲数据结构,但是我会给大家讲一些很有趣的结构,下来的学习还是得靠大家自己努力啦。
这次讲的是模糊查询,在模糊查询之前,我们先看一下如何精确查询。
比如我想要在一堆(n个)字符串里查找我的名字‘liuruiyang’,那么我需要和这堆(n个)字符串里的每个字符串作比较,而每次比较时间复杂度都是O(len),所以总的时间复杂度就是O(n*len);
既然精确查询如此,模糊查询也不会差太多,模糊查询,当你查询‘liu’时,会出现所有开头为‘liu’的字符串,既然这样,我依然要跟每个字符串作比较,总的时间复杂度依然是O(n*len);
我们知道,英文字母有26个,不考虑大小写和符号的话,我们使用26个字母就可以表示所有的单词,那么对于一个单词而言,这个单词由字母组成,那么每个单词就由两部分组成:
①:单词的长度;
②:每个位置的字母。
单词的长度很容易,一个计数器就可以搞定了,而每个位置的字母却比较麻烦,因为每个字母都要保存下来,这样会大大增加操作的复杂程度,其实我们可以注意到,一共有26个字母,并且这些字母是连续的,这样我们就可以创建一个长度为26的数组,用这个数组的下标可以和字母形成一一对应的关系,0~25分别对应a~z。
这里写图片描述
这张图里的树结构,每条边代表一个字母,而一个节点对应的就是该节点的路径,而我们将数组下标和字母组成了一一对应的关系,字母对应的下标是该字母的字符值减去字母a的字符值,例:t对应的下标是’t’-‘a’;
上面的图里,有一点还没有表示清楚,那就是如何判断一个单词是否存在,其实很简单,我们只需要增加一个标记位,对单词的存在与否进行标记就好了。那么来看结构体吧:

typedef struct TrieTree
{
    int isStr;    //标记这个单词是否存在
    struct TrieTree * next[N];//N为26
}Trie;

举个例子吧,比如我已经在树中插入了”liuruiyang”,”liuyufu”,”lijing”这三条记录,由于字母表示边,单词本身表示路径,那么可以肯定,这三条记录的公共边一定有”l”,”i”两个字母,既然我们知道它们的公共边,那么就可以轻松的得到它们的最近公共祖先,也就是”li”这个节点,注意:这个节点不一定是单词,它有可能不存在。
既然我们在树中得到了它们的最近公共祖先,那么它们就都可以通过这个公共祖先的子树进行遍历得到。反过来说,开头为”li”的单词,一定是”li”节点的子孙,它们都可以通过遍历”li”的子孙得到。这样,我们查找开头为”li”的节点,就不需要遍历整个树了,只需要遍历”li

SpringBoot实现加密数据模糊查询:HMAC分片索引架构与实战 在数据安全领域,加密存储是保护敏感信息的基石,常用AES等强加密算法确保数据机密性。其原理是通过密钥对明文进行转换,生成无法直接解读的密文。然而,传统加密技术面临一个核心挑战:如何在数据加密后仍支持高效的模糊查询,这对于用户检索、风控等场景至关重要。可搜索加密技术应运而生,它旨在解决密文上的检索问题,其中一种工程实践思路是采用“索引化”策略,在安全与性能间取得平衡。HMAC(基于哈希的消息认证码)技术因其不可逆性和密钥依赖性,常被用于构建安全索引,通过对数据分片计算HMAC值,既能支持模糊匹配,又不泄露明文 阅读详情

相关推荐

掌握AI编程提问艺术:grill-me如何通过结构化问答提升代码生成质量

在AI辅助编程领域,如何有效提问是提升开发效率的关键。传统模糊指令往往导致AI生成代码与项目实际需求脱节,引发高返工成本。其核心原理在于将机器学习中的决策树思想应用于人机交互,通过结构化问答流程,系统性地澄清技术栈、业务规则和边界条件。这种方法的工程价值在于将不确定的后期调试成本转化为可控的前期需求澄清,显著提升代码的首次可用率。在应用场景上,它特别适用于复杂业务逻辑实现、多技术栈项目开发以及团队协作中的需求对齐。本文探讨的grill-me工具,正是这一理念的实践,通过模拟技术评审对话,帮助开发者建立严谨的

weixin_33778544的博客 401

MySQL模糊查询性能优化实战方案

数据库模糊查询是数据处理中的常见需求,传统LIKE语句在大数据量时面临严重性能瓶颈。通过索引技术优化查询效率是数据库性能调优的核心方法,其中全文索引利用倒排索引结构实现百倍性能提升,特别适合文本搜索场景。正则表达式则能处理更复杂的模式匹配需求,配合函数索引可实现对预处理数据的快速检索。在电商、日志分析等实际业务场景中,合理选择全文索引、正则匹配或第三方工具(如Elasticsearch),能有效解决海量数据下的模糊查询性能问题。本文通过MySQL实战案例,详解如何突破LIKE查询的性能困境。

weixin_33552698的博客 156

Java+sqlsever 实现美术馆管理系统 数据库课程设计/Java课程设计 后附源码及设计文档下载链接

功能实现: 游客注册 游客通过登录页面进入注册页面,正确填写账号、密码及个人信息后可以进行游客账号的注册。 游客登录 游客通过登录页面登录,登录时必须填写账号和密码,通过账号和密码验证后可进入系统。 -管理员登录 管理员通过登录页面登录,登录时必须填写账号和密码,通过账号和密码验证后可进入系统。 游客功能权限 1、艺术品信息查询 ;2、作者信息查询。(实现模糊查询) 管理员功能权限 1、艺术品信息增删查改; 2、作者信息进行增删查改;3、对游客账号进行查询和删除操作。 管理员操作日志 记录管理员对艺术品作

weixin_43100301的博客 1099

Python 模糊查询算法详解及源码

这是一个待编辑的博客,这是一个待编辑的博客。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 560

C/C++ 中文模糊查询算法详解及源码

中文模糊查询算法是一种根据用户给定的关键词,在中文文本中进行模糊匹配的算法。其主要目的是在给定的文本中找到与关键词相似的文本片段。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 3088

基于人脸识别的智能化艺术品鉴定与赏析

作者:禅与计算机程序设计艺术 艺术品鉴定是文化价值的重要组成部分,其过程对文化传承、艺术建设及人们观看艺术品产生深远影响。随着互联网和云计算技术的发展以及AI的不断深入人心,智能化艺术品鉴定技术逐渐成为创作画廊应对未来的重要手段。近年来,越来越多的画廊和博物馆采用了机器视觉技术来辅助艺术品鉴定,取得了良好的效果。 目前,采用人脸识别技术进

AI天才研究院 2878

DRAM内存模拟持久化设备的方法

由于持久化内存介质NVM技术的发展,越来越多的科研工作者投身到NVM相关的研究当中。但由于目前工业界并没有推出广泛使用的NVM介质设备,所以科研工作都需要自己以现有的条件,模拟NVM设备使用场景。一个简单的方法是:通过修改DRAM模拟器,达到模拟NVM的目的(可以参考:DRAMSim2模拟器分析与应用)。更高端的方式是:在真实系统中,将内存划分出一块儿,用来模拟NVM设备(类似于传统的ramdis

酷炫人笨笨熊 1899

Innovus ECO修复时序违例:ecoAddRepeater插Buffer原理与实战

芯片物理设计越到后期,时序收敛越依赖局部修正而非全局重跑。ECO(Engineering Change Order)作为数字后端高频操作,能在不破坏既有布局布线结果的前提下,精准修复DRV违例、hold时序问题或实现功能补丁。其中,插入Buffer或Inverter是拆解长线RC负载、改善max_transition/max_capacitance最直接的手段。Innovus提供的ecoAddRepeater命令封装了单元选择、坐标摆放和网表重连等底层细节,配合ecoRoute可快速完成绕线。合理选型Buf

weixin_31858171的博客 300

Win10如何使用BC3.1精简版

Win10如何使用BC3.1精简版 使用Borland C++3.1 学习μC/OS—Ⅱ几乎是现在的普遍做法,但是由于Win10系统不能直接使用BC3.1,所以需要用到DOSBox。 1、解压bc3.1精简版压缩包,本文将BC3.1文件夹复制在D盘下,DOSBOX按照默认路径安装。下图为两者安装目录图示: 2、修改DOSBOX的配置文件,找到DOSBox文件安装路径,记事本方式打开DOSBox 0.74-3 Options.bat文件,在此文件末尾添加: MOUNT C D:\BC//意为把D:\BC目录

qq_45547236的博客 2377

从零开始用Plaxis 2D设计深基坑支护结构:含地锚与桩墙实战教程

本文提供了一份基于Plaxis 2D的深基坑支护结构设计实战教程。教程以钻孔灌注桩排桩结合预应力锚索的典型支护体系为例,详细阐述了从地质模型建立、材料参数定义(重点介绍硬化土模型)、施工阶段模拟(含开挖、锚索施加预应力和地下水渗流固结耦合分析)到结果解读与设计优化的全流程。旨在帮助岩土工程师掌握数值模拟核心,实现从经验设计到量化分析的跨越。

kotlin6android的博客 505

棋牌App逆向工程实战:透视风险分析与反作弊加固思路

在移动应用安全领域,逆向工程是一项关键的攻防技术,它通过静态分析、动态调试与协议抓包等手段,深入还原客户端真实逻辑。这项技术的核心原理,是从已编译的安装包中提取数据流,验证服务端下发的信息是否超出了客户端应有的可见范围。从技术价值看,安全测试人员可以借此定位协议层、内存层与缓存层的潜在风险,为反作弊体系提供精准的加固建议。在棋牌类App等实时对局场景中,逆向工程常被用于排查牌局信息泄露类隐患,而合规授权与测试环境是开展此类研究的必要前提。本文结合一次棋牌App的安全评估实践,梳理了从环境准备到数据流还原的完

weixin_29326909的博客 175

全功能tgbot/Telegram机器人多功能有后台版源码

trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有。全功能tgbot/telegram机器人多功能有后台版源码-打包好的可以直接上手。

百创科技 2702

全球首发48V架构的Cybertruck,到底牛在哪?| 深扒特斯拉高压系统架构

特斯拉Cybertruck作为全球首款标配48V架构的量产车,在电气系统架构上进行了多项创新。首先,它采用以太网连接高压控制器与后域控制器,提升了数据传输效率和智能化水平。其次,Cybertruck引入了Pyro烟火断开装置,用于碰撞时快速断开电池连接,提高安全性。在电流监测方面,特斯拉既保留了传统的Shunt分流器技术,又引入了更先进的磁通门电流传感器,后者具有无温漂、完全隔离等优势。48V供电系统在降低电流损耗方面表现优异,但也面临电弧风险、盐水腐蚀等挑战。Cybertruck的48V系统通过PCS供电

weixin_43199439的博客 1348

YOLOv8改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 348

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 继续贪心:删数问题
下一篇: C语言的艺术:强大的宏
算法吹
博客等级 码龄12年 49粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值