Elasticsearch_part3—ES分词器和索引基础操作
分词器
什么是分词器
分词器是 Elasticsearch
中用于处理文本数据的核心组件。它的任务是将一串原始的、连续的文本(比如一个句子或一段话),切分成一个个独立的、有意义的词条,并可能对这些词条进行规范化处理。
分词器是将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具。
想象一下你在处理英文句子
"I'm loving the beautiful scenery!"。
未经处理:对计算机来说,这只是一长串字符。
经过分词器处理后:它会被切分成
["i'm", "loving", "the", "beautiful", "scenery"],并且可能进一步规范化为
["i", "love", "beautiful", "scenery"](去停用词、词干提取等)。
这样,计算机才能基于这些独立的词条来构建倒排索引,并进行高效的搜索。
其中,ES 内置了许多分词器:
Standard Analyzer -
默认分词器,按词切分,小写处理
Simple Analyzer...
Elasticsearch part2—深入讲解ES倒排索引及其优化机制
Elasticsearch的索引
深入理解 ES 的索引
Elasticsearch是一个基于Lucene库的开源搜索引擎,它提供分布式的实时文件存储和搜索,可扩展性好,并且支持通过HTTP网络接口交互,数据以JSON格式展示。
之前中我们介绍过,Elasticsearch
索引是一个逻辑命名空间,其中包含一系列的文档。每个文档由一系列字段组成,字段则是包含数据的键值对。可以将
Elasticsearch
集群视为一个数据库,索引就相当于数据库中的表,而文档类似于表中的行。
而关系数据库中的索引是与表相关联的一种数据结构,用于加速数据检索。
Elasticsearch
索引是一个包含文档的逻辑单元,且无需预先定义模式便可导入数据,具有更高的灵活性。
而 Elasticsearch 的索引机制是完全不同于MySQL的 B+Tree
结构。索引会被压缩放入内存用于加速搜索过程,这一点在效率上是完爆 MySQL
的。但是 Elasticsearch 会对全部...
Elasticsearch part1—ES相关内容的安装和初步配置
Elasticsearch介绍
前言
想象一下:
你拥有一个超大型的galgame数据库(你的数据),里面有数百个galgame游戏(你的文档)。Elasticsearch
就是这个数据库里一位强大的“老资历”。
传统查找(如数据库):
如果你想找一本名叫《XXX》的galgame,你得知道它在哪个区、哪个文件夹、哪一层(这相当于数据库的索引和主键)。如果你记不清全名,只记得游戏里提到了“人工智能”和“未来”,传统方式就几乎无能为力了。
Elasticsearch 的方式:
这位老资历不同,他不仅记得每个galgame的游戏名、出场角色、cv,他甚至记得每个场景里每一句对话的每一个词。你只需要走过去对他说:“老资历,帮我找所有谈到‘人工智能’和‘未来’的galgame”,他几乎能瞬间给你一个精确的、按相关性排序的游戏——未来广播与人工鸽。
这个“超级老资历”就是
Elasticsearch。它是一个开源的、分布式的、RESTful
的搜索和分析引擎。
本质上,ES...
Windows下minio的配置和在Spring框架的使用
MinIO的配置
前言
MinIO
是一款高性能、分布式的对象存储系统,常用于存储非结构化数据(如图片、视频、文档等)。它可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS,
Redis 或者 MySQL。
对象存储服务(Object...
Trinoline_Genesis安装教程
本体解压完之后需要继续解压,解压完后会出现这些内容
image-20251016172455279
挂载镜像,GENESIS.iso
是光盘映像文件,需要先 “挂载”
到系统,模拟成真实光盘才能安装。
系统会自动把 GENESIS.iso
挂载为一个虚拟光驱(比如新增一个 “DVD
驱动器”,盘符可能是 D:、E: 等,我是Y:)。
挂载完之后是这样的
image-20251016172905535
注意先挂载,然后以管理员权限运行 anzhuang.bat,序列号全用大写
A,用来破序列
请注意全部输入 A,20个,多了就报错
这个安装目录是默认安装到 c:,打开 anzhuang.bat
也可以修改,但是貌似修改到非 C 盘会报错,因为权限不够
右键点击 anzhuang.bat → 选择
“编辑”(用记事本打开)。
在打开的批处理文件中,找到设置安装路径的代码行(
set...
不同的开源协议之间都有什么区别
什么是开源协议
开源协议是一种法律文件,它规定了开源软件的使用者、修改者和分发者在使用、修改和分发该软件时的权利和义务。其核心目的是在保护版权的同时,推动软件的共享和创新。
开源协议本质上是版权所有者对软件使用、修改、分发的规则定义,以下是
GitHub 上最常用的协议类型:
image-20250614185512976
image-20250614185526130
开源协议有 LGPL,Mozilla,GPL,BSD,MIT 和 Apache。
核心条款包括
条款类型
具体内容
商业使用
是否允许将开源软件用于商业产品或服务(如 MIT、Apache 允许,CC-BY-NC
禁止)。
衍生作品开源
是否要求修改后的代码或衍生作品必须开源(如 GPL 强制开源,MIT
无此限制)。
版权声明
是否必须保留原作者的版权和许可声明(几乎所有协议均要求)。
专利授权
是否包含专利授权条款,避免用户因使用代码而被起诉(如 Apache...
如何搭建微服务项目并且进行模块设计
如何在IDEA搭建一个微服务项目
最近在写微服务,在搭建微服务的时候,还是碰壁了许多,所以专门写一篇文章来总结一下相关内容
微服务就是将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。
搭建根目录
所以我们还是要建立 Spring Boot 的项目,根项目拿 Maven 搭建也可以
image-20250930105847970
下一步什么依赖也不选择,因为本质上,我们需要的根项目其实是空的
image-20250930105855904
新建的根项目中会有许多的内容,我们要删除一些保持项目目录整洁
image-20250930110021596
这里拿我之前的来演示了
我们把除了 .idea目录,pom.xml 和 .gitignore
留着外,剩下的都删了,包括 src,删了后就是这样
这些文件和目录都是什么作用呢?在这里简单说一下作用以及为什么能删,为什么不能删
.idea 目录
作用:这是 IntelliJ...
Spring Security part8—基于request的授权(上)
授权管理讲解
授权管理是什么
一般我们来说,权限认证就是解决你是谁的问题,也就是验证用户身份,在这个过程中,我们通常使用登录来实现,它的核心目标是,核实用户的身份合法性。
授权是在身份认证通过后,判断该用户是否有权限执行某个操作的过程。它的核心目标是,控制不同级别的用户对资源的访问权限。
授权的典型场景:
验证用户是否有权限访问某个 URL(如 /admin/*
仅管理员可访问)
验证用户是否有权限调用某个方法(如 deleteUser()
仅超级管理员可执行)
验证用户是否有权限操作某个数据(如只能修改自己创建的订单)
授权必须在认证之后进行(只有知道 “你是谁”,才能判断
“你能做什么”)。认证通过后,Spring Security 将用户的身份信息(含角色 /
权限)存入 SecurityContext,授权环节从
SecurityContext 中获取这些信息进行权限判断。
一般的授权需求有这样的两种:
用户-权限-资源
这是最基础的 “点对点”...
Spring Security part7—前后端分离的认证
前后端分离下的认证流程
大概描述下的认证流程
在前后端分离架构中,Spring Security
的认证流程与传统的单体应用有所不同
前后端分离认证的核心特点
无状态:服务器不存储用户会话信息,依赖客户端携带的令牌(Token)进行身份验证
跨域:前后端通常部署在不同域名下,需要处理
CORS(跨域资源共享)
令牌交互:使用 JWT(JSON Web
Token)等令牌代替传统的 Session-ID
分离部署:前端(如 Vue/React)和后端(Spring
Boot)独立部署,通过 RESTful API 通信
认证流程可以大概说为如下:
首先,前端发起了登录的请求
前端收集用户输入的用户名 / 密码,通过 POST
请求发送到后端的登录接口(如/api/login)
后端收到请求开始进行认证处理:
用户名密码验证:
Spring...
Redis part3—Redis在Spring框架下的开发使用
Redis进阶
Redis 事务
相关内容
Redis的事务和 MySQL
的本质上是差不多的,都是保证一组命令要么都执行要么都不执行
Redis
是将多个命令打包,主要用于解决需要批量操作且保证操作完整性的场景。
Redis 事务的设计基于 “命令队列” 和 “单线程执行”
特性,核心原理可以概括为:将一组命令一次性放入队列,在执行时按顺序原子化执行,中间不会被其他命令插入。
Redis 事务的执行分为 3 个阶段:开始事务→命令入队→执行 /
放弃事务,流程如下:
开始事务:执行MULTI命令,Redis
进入事务状态。
命令入队:后续输入的命令(如SET、INCR等)不会立即执行,而是被放入事务队列,并返回
“QUEUED” 表示入队成功。
若命令存在语法错误(如参数个数不对),入队时会直接报错,此时事务队列无效,后续EXEC会被忽略。
执行 /...
了解和会使用XSLT
什么是XSLT
XSLT(Extensible Stylesheet Language
Transformations,可扩展样式表语言转换)是一种用于将 XML
文档转换为其他格式(如 HTML、XML、文本等)的语言。它是 XML
技术体系中的重要组成部分,常被视为 XML 的 “转换引擎”。
XSLT 的主要功能是将一种 XML
结构转换为另一种结构或格式,实现数据与表现形式的分离:
将 XML 数据转换为 HTML 用于网页展示
将 XML 数据转换为其他 XML 格式(如不同行业标准的 XML)
将 XML 数据转换为纯文本、CSV 等格式
而其中
XSLT 本身是 XML 的一种应用,遵循 XML 语法规则
XSLT 使用 XPath(XML 路径语言)来定位和选择 XML 节点
可以将多个 XSLT 转换串联使用,实现复杂的数据处理流程
XSLT 的工作原理
XSLT 处理器解析源 XML 文档,构建 DOM 树
解析 XSLT...
n8n本地部署和搭建第一个工作流
n8n 简介
简介
n8n
是一个开源的工作流自动化工具,专注于通过可视化界面连接各种应用程序、服务和
API,实现数据流转和任务自动化。其核心特点包括:
开源免费:核心功能完全开源,可本地部署,数据隐私可控,适合对数据安全有较高要求的场景。
可视化编辑器:通过拖拽节点(Nodes)和连接流程线,无需代码即可构建复杂工作流,支持自定义节点扩展。
丰富的集成能力:内置数百个节点,覆盖常见服务(如
Gmail、Slack、GitHub、数据库、云服务等),支持 HTTP/API
调用连接任意服务。
灵活的触发方式:支持定时触发、Webhook
触发、手动触发等,满足不同自动化场景(如数据同步、通知提醒、批量处理等)。
本地部署与云服务兼顾:既可以通过 npm、Docker
等方式在本地服务器部署,也提供官方云服务(n8n
Cloud),适合个人开发者和企业用户。
n8n 与同类型平台(如
Dify、Make、Zapier 等)的对比
与 Dify 对比
Dify
更侧重于大语言模型(LLM)应用开发,核心是帮助用户快速搭建基于
AI...
Spring Security part5—密码加密算法
密码加密
何为密码加密
在 Spring Security 中,密码加密是保障系统安全的核心环节之一。Spring
Security
通过PasswordEncoder接口统一规范了密码加密与验证的行为,其核心思想是:存储加密后的密码而非明文,并通过标准化方法验证用户输入的密码与存储的加密密码是否匹配。
明文密码指的是用户输入的原始密码(如abc123、password),未经过任何加密或哈希处理,直接以字符串形式存储在数据库中。
但不是你加密了就不能破解,早期系统会使用哈希算法对密码进行处理:将明文密码通过哈希函数转换为一串不可逆的哈希值(如MD5("123456") = e10adc3949ba59abbe56e057f20f883e),然后存储哈希值而非明文。
彩虹表
但是这样,是双向加密,是可以被解密的,彩虹表(Rainbow
Table)...
















