ElasticSearch下
DSL查询
- 叶子查询:在特定字段里查询特定值,属于简单查询,很少单独使用
- 复合查询:以逻辑方式组合多个叶子查询或更改叶子查询的行为方式
- 在查询后还可以对查询结果做处理:
- 排序:按照1个或多个字段做排序
- 分页:根据from或size做分页,类似MySQL
- 高亮:对搜索结果中的关键字添加特殊样式
- 聚合:对搜索结果做数据统计以形成报表
- 在查询后还可以对查询结果做处理:
基本语法
GET /{索引库名}/_search
{"query": {"查询类型": {"查询条件": "条件值"}}
}
【例】:
GET /items/_search
{"query": {"match_all": {}}
}
叶子查询
1. 全文检索查询
利用分词器对用户输入内容分词,然后去词条列表中匹配,默认按照匹配度排序。例如:match_query、multi_match_query
match查询(常用)
:会对用户输入的内容分词,然后去倒排索引检索,语法:
GET /{索引库名}/_search
{"query": {"match": {"字段名": "搜索条件"}}
}
【例】:搜索“脱脂牛奶”
GET /items/_search
{"query": {"match": {"name": "脱脂牛奶"}}
}
multi_match查询
:与match查询类似,只不过允许查询多个字段,参与查询的字段越多,性能越差。语法:
GET /{索引库名}/_search
{"query": {"multi_match": {"query": "搜索条件","fields": ["字段1", "字段2"]}}
}
2. 精确查询
不对用户输入的内容做分词,直接精确匹配,一般是查找keyword、数值、日期、布尔等类型。例如:ids、range、term
term查询(常用)
:
GET /{索引库名}/_search
{"query": {"term": {"字段名": {"value": "搜索条件"}}}
}
【例】:查询“牛奶”分类下的商品
GET /items/_search
{"query": {"term": {"category": {"value": "牛奶"}}}
}
range查询
:
GET /{索引库名}/_search
{"query": {"range": {"字段名": {"gte": {最小值},"lte": {最大值}}}}
}
【例】:查询价格≥5k,≤1w
GET /items/_search
{"query": {"range": {"price": {"gte": 500000,"lte": 1000000}}}
}
ids查询
:
【例】:查询id为1861099和1861100的商品
GET /items/_search
{"query": {"ids": {"values": ["1861099", "1861100"]}}
}
3. 地理查询
用于搜索地理位置。例如:geo_distance、geo_bounding_box
复合查询
1. bool查询
基于逻辑运算组合叶子查询,实现组合条件,例如:bool
- must:必须匹配每个子查询(“与”)
- should:选择性匹配子查询(“或”)
- must_not:必须不匹配,不参与算分(“非”)
- filter:必须匹配,不参与算分(“与”)
GET /索引库名/_search {"query": {bool查询条件: {叶子查询}}
}
用户在输入框搜索“手机”,在底下:品牌选择“华为”,价格选择“1600以上元”。
GET /items/_search
{"query": {"bool": {"must": [{"match": {"name": "手机"}}],"filter": [{"term": {"brand": "华为"}},{"range": {"price": {"gte": 160000}}}]}}
}
2. 算分函数查询
基于某种算法修改查询时的文档相关性算分,从而改变文档排名。例如:function_score、dis_max
排序和分页
排序
es默认根据相关度算分(_score)来排序,也可以指定字段排序。可以排序的类型有:keyword、数值、地理坐标、日期。
GET /索引库名/_search
{"query": {"match_all": {}},"sort": [{"排序字段": {"order": "排序方式asc和desc"}}]
}
【例】:搜索“脱脂牛奶”,结果按照销量排序,销量一样按照价格升序排列
GET /items/_search
{"query": {"match": {"name": "脱脂牛奶"}},"sort": [{"sold": "desc"},{"price": "asc"}]
}
分页
es默认只返回前10的数据,如果查询更多数据就需要修改分页参数。
- from:从第几个文档开始
- size:总共查询几个文档
【例】:搜索“脱脂牛奶”,查询出销量前10的商品,销量一样时按照价格升序
GET /items/_search
{"query": {"match": {"name": "脱脂牛奶"}},"from": 0, // 分页开始的位置,默认为0"size": 10, // 每页文档数量,默认10"sort": [{"sold": "desc"},{"price": "asc"}]
}
深度分页问题
es中from + size不能超过1w条,因为太深了会有深度分页问题。
【产生原因】因为es存储的数据很多,所以es数据一般会采用分片存储,把一个索引中的数据分成N份,存储到不同的节点上。查询时需要汇总各个分片的数据。查询的页码越深,从每个分片差的数据量越多,内存压力越大,性能越差。
【解决办法】search after模式:分页时需要排序
,原理是在上一次排序后,会记住上一次的排序值,下一次排序时,就会直接从上一次排序值开始,查询下一页数据。
- 优点:没有查询上限,支持深度分页
- 缺点:只能向后逐页查询,不能随即翻页
- 场景:数据迁移,手机滚动查询
高亮显示
在搜索结果中,把搜索结果突出显示
【原理】:
1. 高亮词条都加了<em>
标签,标签上都添加了红色样式
2. 倒排索引在分词的时候,会把词条列表进行分词,还会记录词条在文档中的位置
GET /{索引库名}/_search
{"query": {"match": {"搜索字段": "搜索关键字"}},"highlight": {"fields": {"高亮字段名称": {"pre_tags": "<em>", // 高亮的前置标签"post_tags": "</em>" // 高亮的后置标签}}}
}
一般搜哪个字段,就对哪个字段做高亮,标签可以不加,默认是em
【例】:
GET /items/_search
{"query": {"match": {"name": "脱脂牛奶"}},"highlight": {"fields": {"name": {}}}
}
JavaRestClient查询
基本语法
- 构建并发起请求
- 解析查询结果
@Test
void testSearch() throws IOException {// 1. 创建Request对象SearchRequest request = new SearchRequest("items");// 2. 配置Request参数request.source().query(QueryBuilders.matchAllQuery());// 3. 发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4. 解析结果SearchHits searchHits = response.getHits();long total = searchHits.getTotalHits().value; // 查询的总条数SearchHit[] hits = searchHits.getHits(); // 查询的结果数组for(SearchHit hit : hits) {String json = hit.getSourceAsString();// 得到sourceSystem.out.println(json);}
}
叶子查询
全文检索查询
精确查询
复合查询
布尔查询
【例】:搜索关键字为“脱脂牛奶”,品牌为“德亚”,价格低于300元
@Test
void testSearch() throws IOException {// 1. 创建Request对象SearchRequest request = new SearchRequest("items");// 2. 配置Request参数request.source().query(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", "脱脂牛奶")).filter(QueryBuilders.termQuery("brand", "德亚")).filter(QueryBuilders.rangeQuery("price").lt(30000)));// 3. 发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4. 解析结果parseResponseResult(response); // 对上边解析response的步骤进行了封装
}
排序和分页
@Test
void testSortAndPage() throws IOException {SearchRequest request = new SearchRequest("items");int pageNo = 1, pageSize = 5;request.source().query(QueryBuilders.matchAllQuery()) // query条件.from((pageNo - 1) * pageSize).size(pageSize) // 分页条件(分页开始的位置, 每页文档数量).sort("sold", SortOrder.DESC).sort("price", SortOrder.ASC); // 排序条件(排序字段, 排序方式)SearchResponse response = client.search(request, RequestOptions.DEFAULT);parseResponseResult(response);
}
高亮显示
高亮显示的结果解析:
@Test
void testHighLight() throws IOException {SearchRequest request = new SearchRequest("items");request.source().query(QueryBuilders.matchQuery("name", "脱脂牛奶")) // 查询条件.highlighter(SearchSourceBuilder.highlight().field("name")); // 高亮条件SearchResponse response = client.search(request, RequestOptions.DEFAULT);parseResponseResult(response);
}
由于高亮的结果不是在source里的,所以parseResponseResult()方法需要添加对高亮的处理:
private static void parseResponseResult(SearchResponse response) {SearchHits searchHits = response.getHits();long total = searchHits.getTotalHits().value; // 查询的总条数SearchHit[] hits = searchHits.getHits(); // 查询的结果数组for(SearchHit hit : hits) {String json = hit.getSourceAsString();// 得到sourceItemDoc itemDoc = BeanUtil.copyProperties(json, ItemDoc.class);// ===处理高亮结果===Map<String, HighlightField> hfs = hit.getHighlightFields();if(hfs != null && !hfs.isEmpty()) {// 根据高亮字段名获取高亮结果HighlightField hf = hfs.get("name");// 获取高亮结果后,用高亮结果覆盖非高亮结果String hfName = hf.getFragments()[0].string(); // 高亮结果itemDoc.setName(hfName); // 覆盖非高亮结果}System.out.println(itemDoc);}
}
数据聚合
聚合可以实现对文档数据的统计、分析、运算,聚合常见的有:
桶聚合
:用来对文档做分组- TermAggregation(term):按照文档字段值分组
- Date Histogram:按照日期阶梯分组,例如:一周为一组,或一月为一组
度量聚合
:用来计算一些值,如:最大值、最小值、平均值- Avg:求平均值
- Max:求最大值
- Min:求最小值
- Stats:同时求max、min、avg、sum
管道聚合
:其他聚合结果为基础做聚合,聚合的数据是其他聚合的结果
参与聚合的字段必须是Keyword、数值、日期、布尔类型的字段
DSL聚合
【例1】:统计所有商品中的商品分类
# select count(1) "categroyAgg" from items group by category
GET /items/_search
{"query": {"match_all": {}}, // 如果使用"match_all",可以省略"size": 0, // 如果不设置size,默认为10,不仅会返回聚合结果,还会返回搜索结果,增加网络传输的负担"aggs": { // 定义聚合"categroyAgg": { // 给聚合起个名字"terms": { // 聚合的类型,按照分类聚合,所以选择term"field": "category", // 参与聚合的字段"size": 5 // 希望获取的聚合结果数量}}}
}
【例2】:统计手机的品牌,每个品牌价格的最小值、最大值、平均值
GET /items/_search
{"query": {"term": {"category": "手机"}},"size": 0,"aggs": {"brandAgg": {"terms": {"field": "brand"},"aggs": {"price_stats": {"stats": {"field": "price"}}}}}
}
JavaRestClient聚合
解析聚合结果:
@Test
void testAgg() throws IOException {SearchRequest request = new SearchRequest("items");String brandAggName = "brandAgg";request.source().size(0) // 不返回文段,只返回聚合结果.aggregation(AggregationBuilders.terms(brandAggName) // 聚合类型、聚合名称.field("brand") // 聚合字段.size(20) // 聚合返回结果);SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 解析结果Aggregations aggregations = response.getAggregations();// 根据聚合名称获取对应的聚合Terms terms = aggregations.get(brandAggName); // 这里用了向下转型(Aggregation:父、Terms:子)// 获取bucketsList<? extends Terms.Bucket> buckets = terms.getBuckets();// 遍历每一个bucketfor (Terms.Bucket bucket : buckets) {System.out.println("brand:" + bucket.getKeyAsString());System.out.println("count:" + bucket.getDocCount());}
}
相关文章:
ElasticSearch下
DSL查询 叶子查询:在特定字段里查询特定值,属于简单查询,很少单独使用复合查询:以逻辑方式组合多个叶子查询或更改叶子查询的行为方式 在查询后还可以对查询结果做处理: 排序:按照1个或多个字段做排序分页…...
T-SQL语言的数据库交互
T-SQL语言的数据库交互 引言 随着信息技术的不断发展,数据库在各个行业中扮演着越来越重要的角色。数据库的有效管理和优化对于企业的数据安全、效率提升和决策支持至关重要。T-SQL(Transact-SQL)作为微软SQL Server的重要扩展语言…...
.Net 6.0 .Net7.0 .Net8.0 .Net9.0 使用 Serilog 按日志等级写入日志及 appsetting.json 配置方式实现
前言 最近使用最新版的Serilog记录日志时,发现以前有些关于Serilog的Nuget弃用了,最关键的是有些配置写法也改变,于是就整理了一下最新版的Serilog配置方式(appsetting.json)的使用 说明:我是用的.Net6,最新长期支持…...
[Qt]事件-鼠标事件、键盘事件、定时器事件、窗口改变事件、事件分发器与事件过滤器
目录 前言:Qt与操作系统的关系 一、Qt事件 1.事件介绍 2.事件的表现形式 常见的Qt事件: 常见的事件描述: 3.事件的处理方式 处理鼠标进入和离开事件案例 控件添加到对象树底层原理 二、鼠标事件 1.鼠标按下和释放事件(单击&#x…...
从零开始:Gitee 仓库创建与 Git 配置指南
引言 Git 是一款广泛使用的版本控制工具,它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee(码云)是国内知名的 Git 托管平台,它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…...
大文件上传的解决办法~文件切片、秒传、限制文件并发请求。。。
1、项目背景:针对大文件上传,如果将文件作为一个请求去发送给后端,会有以下几种问题,首先是上传时间长,用户不能进行其他操作,包括页面刷新等操作,其次有的接口会设置响应时间限制,可…...
如何在日常工作中使用AI
### 如何在日常工作中使用AI:提高效率与创造力 随着人工智能(AI)技术的不断发展,它已经成为我们日常工作的重要助手。无论是在准备演示文稿、进行知识搜索还是寻求技术支持方面,AI都能够提供有力的支持。本文将探讨如何…...
计算机网络 (47)应用进程跨越网络的通信
前言 计算机网络应用进程跨越网络的通信是一个复杂而关键的过程,它涉及多个层面和组件的协同工作。 一、通信概述 计算机网络中的通信,本质上是不同主机中的应用进程之间的数据交换。为了实现这种通信,需要借助网络协议栈中的各层协议&#x…...
医疗集群系统中基于超融合数据库架构的应用与前景探析
一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…...
2024年度推进可解释人工智能迈向类人智能讨论总结分享
目录 一、探索“可解释人工智能”:AI如何从“黑箱”走向“透明大师” 二、走进可解释人工智能:让AI的决策变得透明 (一)几种常见的特征导向方法 (二)像素级方法 1. 层次相关传播(LRP&#…...
【Unity】使用Canvas Group改变UI的透明度
目录 一、前言二、Canvas Group三、结合DOTween达到画面淡进的效果 一、前言 在平时开发中,可以通过控制材质、Color改变UI透明度,除此之外还可以CanvasGroup组件来控制透明度。 二、Canvas Group 官方文档链接👉👉 点击进入 …...
【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...
小例Java结合Spring框架和MyBatis ORM来实现 ERP项目中实现读写分离
前记:大家带着挑剔的眼光,多多批判和指正!🙏 在ERP项目中实现读写分离,我们可以使用Java结合Spring框架和MyBatis ORM来实现。以下是一个简化的例子,展示了如何在ERP项目中配置和使用读写分离。 一、项目…...
.gitignore配置忽略out目录
文章目录 说明操作 说明 可以结合IDEA可视化操作git,只要不删除远程仓库,如果本地操作项目出现错误,可以直接修改远程仓库的.gitignore文件,并重新拉取项目到本地。 操作 在项目根目录下找到 .gitignore 文件,打开并…...
mac 安装mongodb
本文分享2种mac本地安装mongodb的方法,一种是通过homebrew安装,一种是通过tar包安装 homebrew安装 brew tap mongodb/brew brew upate brew install mongodb-community8.0tar包安装 安装mongodb 1.下载mongodb社区版的tar包 mongdb tar包下载地址 2…...
向harbor中上传镜像(向harbor上传image)
向 Harbor 中上传镜像通常分为以下几个步骤: 1、登录 Harbor 2、构建镜像 3、标记镜像 4、推送镜像到 Harbor 仓库 1、登录 Harbor 首先,确保你已经能够访问 Harbor,并且已经注册了账户。如果还没有 Harbor 账户,你需要先注册一…...
项目太大导致 git clone 失败
git克隆也分深浅,大项目clone可以先用浅克隆,只克隆源代码和最新的提交记录。 具体分两步: 1. 浅克隆 git clone https://github.com/google/mydemo.git --depth 1 只会克隆最新的一次提交,没有历史记录, 2. 拉取剩…...
开发神器之cursor
文章目录 cursor简介主要特点 下载cursor页面的简单介绍切换大模型指定ai学习的文件指定特定的代码喂给ai创建项目框架文件 cursor简介 Cursor 是一款专为开发者设计的智能代码编辑器,集成了先进的 AI 技术,旨在提升编程效率。以下是其主要特点和功能&a…...
Python爬虫学习前传 —— Python从安装到学会一站式服务
早上好啊,大佬们。我们的python基础内容的这一篇终于写好了,啪唧啪唧啪唧…… 说实话,这一篇确实写了很久,一方面是在忙其他几个专栏的内容,再加上生活学业上的事儿,确实精力有限,另一方面&…...
MySQL触发器:概念、作用
MySQL触发器:概念、作用与问题解决 在MySQL数据库管理系统中,触发器是一项强大且实用的功能。它为数据库的操作提供了一种自动化响应机制,在许多场景下极大地提升了数据管理的效率和数据的完整性。本文将深入探讨MySQL触发器是什么ÿ…...
ASP.NET Core 中基于 Cookie 的身份鉴权实现
在 ASP.NET Core 应用中,基于 Cookie 的身份鉴权是一种常见的身份验证方式,特别适用于传统的 Web 应用程序。Cookie 能够在用户的浏览器中存储身份验证数据,从而在用户访问应用的不同页面时保持登录状态。 一、配置 Cookie 身份验证 首先&a…...
从玩具到工业控制--51单片机的跨界传奇【3】
在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯&am…...
Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
目录 模版 先序遍历 中序遍历 后序遍历 力扣原题 相同的二叉树 力扣原题 翻转二叉树 遍历树的层数 题目 静态变量 核心逻辑 模版 // 二叉树public static class Node{public int value;public Node left;public Node right;public Node(int v) {valuev;}} 先序遍历 …...
麒麟操作系统服务架构保姆级教程(十二)keepalived高可用
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 随着业务的扩大,服务器集群也越来越大,用户多了起来就要保证用户访问,服务绝对不能宕机,那么这个时候咱们除了做灾备以外,负载均衡服务器会…...
docker 部署confluence
1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042 4.编写do…...
【English-Book】Go in Action目录页翻译中文
第8页 内容 前言 xi 序言 xiii 致谢 xiv 关于本书 xvi 关于封面插图 xix 1 介绍 Go 1 1.1 用 Go 解决现代编程挑战 2 开发速度 3 • 并发 3 • Go 的类型系统 5 内存管理 7 1.2 你好,Go 7 介绍 Go 玩具 8 1.3 总结 8 2 Go 快速入门 9 2.1 程序架构 10 2.2 主包 …...
奉加微PHY6230兼容性:部分手机不兼容
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...
SSE 实践:用 Vue 和 Spring Boot 实现实时数据传输
前言 大家好,我是雪荷。最近我在灵犀 BI 项目中引入了 SSE 技术,以保证图表的实时渲染,当图表渲染完毕服务端推送消息至浏览器端触发重新渲染。 什么是 SSE? SSE 全称为 Server-Send Events 意思是服务端推送事件。 SSE 相比于 …...
HJ3 明明的随机数(Java版)
一、试题地址 明明的随机数_牛客题霸_牛客网 二、试题内容 描述 对于明明生成的 nn 个 11 到 500500 之间的随机整数,你需要帮助他完成以下任务: 删去重复的数字,即相同的数字只保留一个,把其余相同的数去掉;然后…...
C++ 模拟真人鼠标轨迹算法 - 防止游戏检测
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
Linux-----线程同步(条件变量)
目录 相关API restrict关键字 线程间条件切换函数 条件变量pthread_cond_t 案例 在前面的锁的基础上进一步提高线程同步效率,也就是两个线程只用锁去执行的话依然会存在资源竞争的情况,也就是抢锁,这里就需要在锁的这边加上限制…...
58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1
进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压,发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分,下面是PHP部分代码(HTML太长了,先放一…...
小汽车维修记录程序(PC版)
我需要一个小程序,记录我的小车保养相关的情况:时间,地点,某种零件,以什么价格被保养使用。这样我才能清楚的知道我的小车下一次保养,然后我可以有的放矢的去准备下一次的零件和时间,避免过度保…...
回顾2024年在CSDN的成长
文章目录 我与CSDN的初次邂逅初学阶段的阅读CSDN:编程新手的避风港初学者的福音:细致入微的知识讲解考试复习神器:技术总结的“救命指南”曾经的自己:为何迟迟不迈出写博客的第一步兴趣萌芽:从“读”到“想写”的初体验…...
AI编程工具使用技巧——通义灵码
活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…...
解读InnoDB数据库索引页与数据行的紧密关联
目录 一、快速走进索引页结构 (一)整体展示说明 (二)内容说明 File Header(文件头部) Page Header(页面头部) Infimum Supremum(最小记录和最大记录) …...
KubeSphere 与 Pig 微服务平台的整合与优化:全流程容器化部署实践
一、前言 近年来,为了满足越来越复杂的业务需求,我们从传统单体架构系统升级为微服务架构,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过 RPC 或者是 Rest 协议来进行通信,可以按照业务领域来划分成独立的单元。但是微服务系统相对…...
虚幻基础2:gameplay框架
能帮到你的话,就给个赞吧 😘 文章目录 ue框架:gameplay组成game modeactorcomponent player controllergame state 工作流程 ue框架:gameplay 组成 game mode 游戏类型和规则。可以控制游戏的开始与结束以及一些其他功能。 ac…...
在线base64转码工具
在线base64转码工具,无需登录,无需费用,用完就走。 官网地址: https://base64.openai2025.com 效果:...
2024年,我的技术探索与成长之路
2024年,我的技术探索与成长之路 2024年已经过去,作为一名技术爱好者和写作者,我回顾了过去一年在博客上记录的点滴,感慨良多。这一年,我不仅见证了技术的飞速发展,也在不断学习和实践中找到了自己的成长方向…...
【逆境中绽放:万字回顾2024我在挑战中突破自我】
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…...
图谱之前端关系应用
文章目录 图谱之前端关系应用(relation-graph、d3.js、echarts)1. relation-graph应用实例优缺点 2. d3.js应用实例优缺点 3. echarts应用实例优缺点 总结 图谱之前端关系应用(relation-graph、d3.js、echarts) 1. relation-grap…...
Kibana:ES|QL 编辑器简介
作者:来自 Elastic drewdaemon ES|QL 很重要 💪 正如你可能已经听说的那样,ES|QL 是 Elastic 的新查询语言。我们对 ES|QL 寄予厚望。它已经很出色了,但随着时间的推移,它将成为与 Elasticsearch 中的数据交互的最强大…...
建造者模式(或者称为生成器(构建器)模式)
一、什么是建造者模式? 将复杂对象的构建与表示进行分离,使得统一的构建过程,可以创建出不同的对象表现模式 就是将复杂对象里面的成员变量,设置不同的值,使得生成出来的对象拥有不同的属性值; 二、特点…...
【CTFHub】SQL注入cookie注入及知识点
打开题目页面如下 根据提示应该在cookie处注入,通过burp suite抓包并发到重放器 知识点 Cookie 是存储在用户本地计算机上的小文件,由 Web 服务器通过 HTTP 协议发送给浏览器,并保存在用户的浏览器端。当用户再次访问该网站时,浏…...
CSS中样式继承+优先级
继承属性和非继承属性 一、定义及分类 1、继承属性是指在父元素上设置了这些属性后,子元素会自动继承这些属性的值,除非子元素显式地设置了不同的值。 常见的继承属性: 字体 font 系列文本text-align text-ident line-height letter-spacing颜色 col…...
[leetcode](找到vector中的特定元素并删除)无重复字符的最长子串
一.找到vector中的特定元素并删除 #include <iostream> #include <vector> #include <algorithm> int main() { // 示例 vector std::vector<int> vec {1, 2, 3, 4, 5, 6}; // 要删除的元素 int aim 3; // 查找元素 auto it std::fin…...
记录一次 centos 启动失败
文章目录 现场1分析1现场2分析2搜索实际解决过程 现场1 一次断电,导致 之前能正常启动的centos 7.7 起不来了有部分log , 关键信息如下 [1.332724] XFS(sda3): Internal error xfs ... at line xxx of fs/xfs/xfs_trans.c [1.332724] XFS(sda3): Corruption of in-memory data…...
Linux使用SSH连接GitHub指南
基础配置流程 步骤1:生成SSH密钥 打开终端:首先,打开你的Linux终端。 生成SSH密钥对:输入以下命令来生成一个新的SSH密钥对: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"-t rsa:使用RSA加密算法生成密钥。-b 4096:密钥长度为4096位,增加安全性。…...
QModbusTCPClient占用内存持续增长
最近使用QModbusTCPClient通信,需要频繁发送读写请求,发现软件占用内存一直在增减,经过不断咨询和尝试,终于解决了。 1.方案一(失败) 最开始以为是访问太频繁,导致创建reply的对象比delete re…...