Elasticsearch:ES|QL lookup JOIN 介绍 - 8.18/9.0
警告:此功能在 8.18/9.0 中刚推出。此功能处于技术预览阶段,未来版本可能会更改或删除。Elastic 会努力修复任何问题,但技术预览中的功能不受正式 正式发布功能支持 SLA 的约束。
ES|QL LOOKUP JOIN 处理命令将你的 ES|QL 查询结果表中的数据与指定的查找索引中的匹配记录合并。它根据联接字段中的匹配值,将查找索引中的字段作为新列添加到结果表中。
团队常常将数据分散在多个索引中,例如日志、IP、用户 ID、主机、员工等。如果没有直接的方式来丰富或关联每个事件与参考数据,那么根本原因分析、安全检查和操作洞察将变得耗时。
例如,你可以使用 LOOKUP JOIN 来:
-
获取每个主机的环境或所有权详细信息,以关联你的指标数据。
-
快速查看任何源 IP 是否与已知的恶意地址匹配。
-
为日志标记拥有团队或升级信息,以便更快地进行分类和事件响应。
与 ENRICH 对比
LOOKUP JOIN 和 ENRICH 的相似之处在于,它们都帮助你将数据结合在一起。你应该在以下情况下使用 LOOKUP JOIN:
-
你的富集数据经常变化
-
你想避免索引时处理
-
你想要 SQL 类似的行为,即多个匹配结果生成多行
-
你需要在查找索引中的任何字段上进行匹配
-
你使用文档或字段级安全
-
你希望限制用户只能使用特定的查找索引
-
你不需要使用范围或空间关系进行匹配
命令如何工作
LOOKUP JOIN 命令根据联接字段中的匹配值,将查找索引中的字段作为新列添加到结果表中。
LOOKUP JOIN <lookup_index> ON <field_name>
该命令需要两个参数:
-
lookup_index
查找索引的名称。必须是一个特定的索引名称——不支持通配符、别名和远程集群引用。用于查找的索引必须配置为查找模式(lookup mode)。 -
field_name
用于联接的字段。该字段必须在当前查询结果和查找索引中都存在。如果字段包含多值条目,这些条目将不会匹配任何内容(对于这些行,添加的字段将包含 null)。
如果你熟悉 SQL,LOOKUP JOIN 具有左连接行为。这意味着,如果在查找索引中没有匹配的行,传入的行将被保留,并且会添加 null。如果在查找索引中有多行匹配,LOOKUP JOIN
将为每个匹配添加一行。
一个例子:
如上所示,在左边的 events 例子中,它含有一个叫做 userid 的列,在右边的例子中它也含有一个叫做 userid 的列。我们实际上可以使用如下的命令来针对两个索引进行 JOIN:
FROM events |
LOOKUP JOIN userinfo ON userid
注意:针对右边的索引,它必须配置正确的 lookup mode:
PUT userinfo {"settings": {"index.mode": "lookup"} }
实际操作
下面,我们将由一个例子来详细说明如何实现上面所述的 JOIN。你可以通过设置索引并添加示例数据来亲自运行此示例,看看它是如何工作的。否则,你只需检查查询和响应。
设置索引
首先,让我们创建两个带有映射的索引:threat_list 和 firewall_logs。
PUT threat_list
{"settings": {"index.mode": "lookup" /* 1 */},"mappings": {"properties": {"source.ip": { "type": "ip" },"threat_level": { "type": "keyword" },"threat_type": { "type": "keyword" },"last_updated": { "type": "date" }}}
}
- 查找索引必须使用此模式进行设置。它创建 LOOKUP 所需的右索引
PUT firewall_logs
{"mappings": {"properties": {"timestamp": { "type": "date" },"source.ip": { "type": "ip" },"destination.ip": { "type": "ip" },"action": { "type": "keyword" },"bytes_transferred": { "type": "long" }}}
}
上面的命令将创建一个叫做 firewall_logs 的索引,也就是我们所指的左索引。
添加示例数据
接下来,让我们向两个索引添加一些示例数据。threat_list
索引包含已知的恶意 IP,而 firewall_logs
索引包含网络流量日志。
POST threat_list/_bulk
{"index":{}}
{"source.ip":"203.0.113.5","threat_level":"high","threat_type":"C2_SERVER","last_updated":"2025-04-22"}
{"index":{}}
{"source.ip":"198.51.100.2","threat_level":"medium","threat_type":"SCANNER","last_updated":"2025-04-23"}
POST firewall_logs/_bulk
{"index":{}}
{"timestamp":"2025-04-23T10:00:01Z","source.ip":"192.0.2.1","destination.ip":"10.0.0.100","action":"allow","bytes_transferred":1024}
{"index":{}}
{"timestamp":"2025-04-23T10:00:05Z","source.ip":"203.0.113.5","destination.ip":"10.0.0.55","action":"allow","bytes_transferred":2048}
{"index":{}}
{"timestamp":"2025-04-23T10:00:08Z","source.ip":"198.51.100.2","destination.ip":"10.0.0.200","action":"block","bytes_transferred":0}
{"index":{}}
{"timestamp":"2025-04-23T10:00:15Z","source.ip":"203.0.113.5","destination.ip":"10.0.0.44","action":"allow","bytes_transferred":4096}
{"index":{}}
{"timestamp":"2025-04-23T10:00:30Z","source.ip":"192.0.2.1","destination.ip":"10.0.0.100","action":"allow","bytes_transferred":512}
查询数据
POST _query?format=txt
{"query": """FROM firewall_logs /* 1 */| LOOKUP JOIN threat_list ON source.ip /* 2 */ | WHERE threat_level IS NOT NULL /* 3 */| SORT timestamp /* 4 */| KEEP source.ip, action, threat_level, threat_type /* 5 */| LIMIT 10 /* 6 */"""
}
- 源索引
- 查找索引和连接字段
- 筛选具有非空威胁级别的行
- LOOKUP JOIN 不保证输出顺序,因此必须显式排序
- 仅保留相关字段
- 将输出限制为 10 行
响应
source.ip | action | threat_level | threat_type
---------------+---------------+---------------+---------------
203.0.113.5 |allow |high |C2_SERVER
198.51.100.2 |block |medium |SCANNER
203.0.113.5 |allow |high |C2_SERVER
在这个示例中,你可以看到 firewall_logs 索引中的 source.ip 字段与 threat_list 索引中的 source.ip 字段匹配,对应的 threat_level 和 threat_type 字段被添加到输出中。
更多有关 ES|QL 的操作,请参考文章 “Elasticsearch:ES|QL 查询展示”。
附加示例
请参阅 LOOKUP JOIN 命令参考中的示例部分,获取更多示例。
前提条件
要使用 LOOKUP JOIN,必须满足以下要求:
- 用于查找的索引必须配置为查找模式(lookup mode)
- 兼容的数据类型:查找索引中的连接键和连接字段必须具有兼容的数据类型。这意味着:
- 数据类型必须完全相同或在 ES|QL 中以相同类型内部表示
- 数字类型遵循以下兼容性规则:
- short 和 byte 与 integer 兼容(都表示为 int)
- float、half_float 和 scaled_float 与 double 兼容(都表示为 double)
- 对于文本字段:你只能将文本字段作为左侧连接的连接键,并且只能在它们具有 .keyword 子字段时使用
如有需要,可以使用转换函数获取兼容类型的连接键。
有关支持的数据类型及其内部表示的完整列表,请参见支持的字段类型文档。
限制
以下是当前 LOOKUP JOIN 的限制:
- lookup 模式中的索引始终是单分片的。
- 初始时不支持跨集群搜索。源索引和查找索引必须是本地的。
- 目前,只支持基于相等性进行匹配。
- LOOKUP JOIN 只能使用一个匹配字段和一个索引。不支持通配符、别名、日期数学和数据流。
- LOOKUP JOIN 中的匹配字段名 lu++++idx ON match++++field 必须与查询中的现有字段匹配。这可能需要重命名或 evals 以实现。
- 如果查找索引中有太多匹配文档,或者文档太大,查询将触发断路器。更精确地说,LOOKUP JOIN 是按批次工作的,通常每批次大约 10,000 行;如果批次中来自查找索引的匹配文档有多个兆字节或更大,则需要大量堆空间。这与 ENRICH 的情况大致相同。
相关文章:
Elasticsearch:ES|QL lookup JOIN 介绍 - 8.18/9.0
警告:此功能在 8.18/9.0 中刚推出。此功能处于技术预览阶段,未来版本可能会更改或删除。Elastic 会努力修复任何问题,但技术预览中的功能不受正式 正式发布功能支持 SLA 的约束。 ES|QL LOOKUP JOIN 处理命令将你的 ES|QL 查询结果表中的数据…...
基于开闭原则优化数据库查询语句拼接方法
背景 在开发实践中,曾有同事在实现新功能时,因直接修改一段数据库查询条件拼接方法的代码逻辑,导致生产环境出现故障。 具体来看,该方法通过在函数内部直接编写条件判断语句实现查询拼接,尽管从面向对象设计的开闭原…...
无人机航拍牛只检测数据集VOC+YOLO格式906张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):906 标注数量(xml文件个数):906 标注数量(txt文件个数):906 标注…...
【LeetCode 560】和为K的子数组(前缀和+哈希)
题面: 思路: 看到连续非空序列之和,容易想到前缀和计算差分, n u m s nums nums 区间 [ j , i ] [j,i] [j,i] 的和即为: s u m ( i , j ) p r e [ i ] − p r e [ j − 1 ] sum(i, j) pre[i] - pre[j-1] sum(i,j)…...
手术中评估帕金森患者手部运动的无接触式系统
南开大学韩建达教授研究团队提出一种针对帕金森病手术治疗的评估系统,可在手术中对患者手部运动进行实时监测,实现无接触式运动特征提取,并结合可视化数据分析辅助临床决策。相关研究论文“A non-contact system for intraoperative quantita…...
服务器主动发送响应?聊天模块如何实现?
一、背景知识 当我们在某聊天界面中发送一个消息时,如A给B发送了一个消息,而B马上就收到,仔细思考会发现以下问题 : 1. A给服务器发送请求,但服务器却给B发送了响应 2.B没有向服务器发送请求,却收到了…...
服务器远程超出最大连接数的解决方案是什么?
以下是为您撰写的关于服务器远程连接超限问题的解决方案论文,包含技术原理分析、解决策略和实际应用案例: 服务器远程连接超限问题分析与多维解决方案研究 摘要 随着数字化转型进程加速,服务器远程连接过载问题已成为企业IT运维领域的重大挑…...
【资料分享】全志T536(异构多核ARMCortex-A55+玄铁E907 RISC-V)工业核心板硬件说明书
前 言 本文为创龙科技SOM-TLT536工业核心板硬件说明书,主要提供SOM-TLT536工业核心板的产品功能特点、技术参数、引脚定义等内容,以及为用户提供相关电路设计指导。 为便于阅读,下表对文档出现的部分术语进行解释;对于广泛认同释义的术语,在此不做注释。...
Missashe考研日记-day30
Missashe考研日记-day30 0 写在前面 日记也是写到第30篇了哈哈,满月了,虽然过了不止30天中间有断更,但还是表扬一下自己坚持下来了。:) 1 专业课408 学习时间:2h30min学习内容: 今天有其他事…...
工程管理部绩效考核关键指标与项目评估
工程管理部的关键绩效考核指标(KPI)设计旨在全面评估部门在设施设备管理、特种设备保养、维修质量以及业主满意度等方面的工作表现。每个指标都与部门的日常运营紧密相关,直接影响到设施的维护质量和业主的满意度。 本文将深入探讨工程管理部的主要绩效考核指标&am…...
【沉浸式求职学习day29】【信科知识面试题第一部分】【新的模块,值得收藏】
快五一辣,大家什么安排呀哈哈哈~可能五一期间我就不更新啦,时间比较碎片化,要陪重要的人 沉浸式求职学习 理论攻坚-计算机基础知识1.诞生2.发展3.特点4.分类巨型 5.应用计算机辅助: 6.计算机的性能指标7.信息的存储单位 理论攻坚…...
Cliosoft安装
创建安装目录、解压 [rootedatest opt]# mkdir Cliosoft [rootedatest opt]# mv sos_7.05.p9/ Cliosoft/ [rootedatest opt]# cd Cliosoft/ [rootedatest Cliosoft]# cd sos_7.05.p9/ [rootedatest sos_7.05.p9]# tar -xf sos_7.05.p9_linux64.tar 用普通用户eda安装 [rooteda…...
MES管理系统:重构生产任务管理的数智化引擎
在制造业的数字化浪潮中,生产任务管理正从传统的经验驱动转向数据驱动的精细化模式。作为连接计划层与执行层的核心枢纽,MES管理系统通过智能化、动态化的管理手段,将生产任务的接收、分配、执行与优化融入全流程闭环,为企业打造透…...
推荐系统在线离线打分不一致:核心原因与全链路解决方案
目录 一、特征维度:数据处理的「隐形杀手」1.1 特征穿越:训练数据的「上帝视角」1.2 线上线下特征不一致的四大陷阱(1)上线前一致性校验缺失(2)线上特征监控体系缺位(3)特征更新延迟…...
Markdown转WPS office工具pandoc实践笔记
随着DeepSeek、文心一言、讯飞星火等AI工具快速发展,其输出网页内容拷贝到WPS Office过程中,文档编排规整的格式很难快速复制。 注:WPS Office不支持Markdown格式,无法识别式样。 在这里推荐个免费开源工具Pandoc,实现…...
记录java线程中断理解,Thread.currentThread().interrupt();
记录java线程中断理解,Thread.currentThread().interrupt(); 一、概述 中断的理解: 1、Java 线程中断,协作式(通过 Thread.interrupt() 触发,需代码显式检查中断状态或调用可中断方法)。 2、操作系统中断…...
[零基础]内网ubuntu映射到云服务器上,http访问(frp内网穿透)
阿里云服务器,高校教师可以半价, frp下载地址:https://github.com/fatedier/frp/releases,选amd64, 云服务器开放端口 选择网络与安全–>安全组->管理规则 配置开放端口,7000为支持frp开放的端口&…...
Nginx 核心功能笔记
目录 一、Nginx 简介 二、核心功能详解 三、关键指令解析 四、性能优化要点 五、常见应用场景 一、Nginx 简介 定位 高性能的 HTTP/反向代理服务器,同时支持邮件协议代理(IMAP/POP3/SMTP)。采用 事件驱动、异步非阻塞 架构,…...
多地部署Gerrit Replication插件同步异常解决思路及方案(附脚本与CronJob部署)
背景 为了支持多地开发,我司在代码服务器(Gerrit)上使用了Replication插件,进行多地部署同步。 整体结构如下: A地区:主Gerrit服务器B地区:从Gerrit服务器正常的工作流程是: B地区开发者从从服务器拉取代码。B地区开发者向主服务器推送代码。Replication插件保证主从数…...
JAVA--- 关键字static
之前我们学习了JAVA 面向对象的一些基本知识,今天来进阶一下!!! static关键字 static表示静态,是JAVA中的一个修饰符,可以修饰成员方法,成员变量,可用于修饰类的成员(变…...
清华与智谱联合发布TTS模型GLM-4-Voice,支持情绪、语气控制,多语言,实时效果很不错~
项目背景 GLM-4-Voice是由清华大学知识工程组(Tsinghua KEG)和智谱AI(Zhipu AI)联合开发的一个开源端到端语音对话模型,旨在推动语音交互技术的进步,弥合机器与人类自然对话之间的差距。 语音交互的挑战与…...
华为云Astro大屏从iotda影子设备抽取数据做设备运行状态的大屏实施步骤
目录 背景与意义 1. 准备阶段 2. IoTDA 开放影子查询API 3. Astro轻应用创建连接器 4. Astro大屏设计界面 5. 数据绑定与交互逻辑 6. 发布与测试 小结(流程复盘) 背景与意义 随着物联网技术的快速发展,越来越多的设备接入云端&#x…...
Microsoft .NET Framework 3.5 离线安装包 下载
Microsoft. NET Framework 3.5 是支持生成和运行下一代应用程序和XML Web Services 的内部Windows 组件, 对 .NET Framework 2.0 和 3.0 中的许多新功能进行了更新和增补, 且附带了 .NET Framework 2.0 Service Pack 1 和 .NET Framework 3.0 Service…...
通用人工智能(AGI)的技术演进
通用人工智能(AGI)的技术演进是一个漫长而充满探索的过程,涉及多个领域的技术突破和理念转变。以下是对其演进历程的详细介绍: 早期人工智能探索(20世纪50年代 - 80年代) 符号主义兴起:1950年…...
mac word接入deepseek
网上大多使用Windows版word来接入deepseek,vba文件引入mac后,因底层工具不同,难以直接运行,例如CreateObject("MSXML2.XMLHTTP")无法创建,为此写了一版新的vba,基于mac底层工具来实现。 vba文件点…...
基于大模型的大肠息肉全程管理研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的 二、大模型预测大肠息肉的原理与数据基础 2.1 大模型的技术原理简介 2.2 数据收集与处理 三、术前预测与准备方案 3.1 息肉特征及风险预测 3.2 患者身体状况评估 3.3 术前准备措施 四、术中方案制定与监控 4.1 手术…...
Liunx安装Apache Tomcat
目录 一、了解tomcat 二、下载 三、启动tomcat 四、网页访问tomcat 五、Tomcat修改默认8080端口 六、Tomcat创建项目步骤-实现项目对外访问 一、了解tomcat Apache Tomcat 是一个开源的 Java Servlet 容器 和 Web 服务器,主要用于运行基于 Java 的 Web 应用…...
Java基于MyBatis 实现前端组装查询语句、后端动态执行查询的功能
1. 前端设计 前端逻辑与之前的设计保持一致,依然是将用户输入的查询条件组装成 JSON 格式,并通过 HTTP 请求发送到后端。 示例请求体: {"filters": [{"field": "name","operator": "LIKE",...
RabbitMQ Linux 安装教程详解
RabbitMQ Linux 安装教程详解 在 Linux 系统上安装 RabbitMQ 并确保其稳定运行,对于构建可靠的分布式消息系统至关重要。本文将详细介绍如何在 Linux 系统上安装 RabbitMQ,并提供关键的注意事项,帮助您避免常见的坑点,确保安装过…...
健康养生:拥抱活力生活
在生活节奏日益加快的当下,人们对健康养生的重视程度与日俱增。健康养生并非是一时的跟风之举,而是一种关乎生活品质与生命长度的科学理念和生活方式,其核心在于通过合理的饮食、适度的运动、充足的睡眠以及良好的心态调节,达成身…...
京东商品数据实时采集指南:API 接口调用与数据解析实战
在当今数字化时代,数据已经成为企业决策和市场分析的重要依据。对于电商领域的从业者来说,实时采集京东等平台的商品数据,能够帮助他们了解市场动态、分析竞争对手以及优化自身的产品策略。本文将详细介绍如何通过 API 接口调用实现京东商品数…...
最新字节跳动运维云原生面经分享
继续分享最新的go面经。 今天分享的是组织内部的朋友在字节的go运维工程师岗位的云原生方向的面经,涉及Prometheus、Kubernetes、CI/CD、网络代理、MySQL主从、Redis哨兵、系统调优及基础命令行工具等知识点,问题我都整理在下面了 面经详解 Prometheus …...
AimRT 从零到一:官方示例精讲 —— 六、pb_chn示例.md
pb_chn示例 官方仓库:pb_chn 这个官方示例展示了如何基于 protobuf 协议和 local 后端实现 channel 通信。主要包括四种场景: 基础示例:分别用两个模块(Publisher 和 Subscriber)发布和订阅 protobuf 消息ÿ…...
【Web】如何解决 `npm run dev` 报错 `address already in use 127.0.0.1:9005` 的问题
在开发过程中,我们可能会遇到端口占用的问题,尤其是当多个进程或服务尝试监听同一个端口时。最近在运行 npm run dev 时,我遇到的错误是 address already in use 127.0.0.1:9005,这让我花了些时间才找到问题的根源。本文将总结该问…...
每日一道leetcode(不会做学习版,多学一题)
2542. 最大子序列的分数 - 力扣(LeetCode) 题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都是 n ,再给你一个正整数 k 。你必须从 nums1 中选一个长度为 k 的 子序列 对应的下标。 对于选择的下标 i0 &#…...
当OA闯入元宇宙:打卡、报销和会议的未来狂想
引言:虚实共生中的组织基因突变 元宇宙正以虚实共生的形态重构人类协作的底层逻辑。传统OA系统建立的物理规则——指纹打卡验证在场性、纸质票据堆砌信任链、会议室排期协调时空资源——在元宇宙的数字原野上迎来基因级重组。这场变革不仅是技术工具的迭代…...
线程数据同步的三种方式
1. 线程同步机制(用于控制线程之间的访问顺序和互斥) 互斥锁(Mutex):用于保护共享资源,确保同一时间只有一个线程可以访问。 信号量(Semaphore):用于控制多个线程对共享…...
docker拉取国内镜像
1. 场景 最近整了一个tencent云服务器,想要玩一下docker,结果发现拉不下来,镜像根本拉不下来。 2. 原因 1.云服务器无法访问外网; 2. 国内的很多公有镜像仓库都被封了; 3. 推荐 https://zhuanlan.zhihu.com/p/713…...
中阳策略下的价格趋势识别技巧
中阳策略下的价格趋势识别技巧 在快速变化的市场环境中,掌握有效的趋势识别技巧成为交易者的重要技能。"中阳"策略主张通过量价关系和趋势线分析,捕捉价格运行的主方向,提升交易成功率。 市场中,价格的上行或下行并非随…...
MIT6.S081 - Lab11 networking(网络栈)
本篇是 MIT6.S081 2020 操作系统课程 Lab11 的实验笔记,这是课程的最后一个实验了,目标是为 xv6 实现 E1000 网卡驱动的两个核心函数:发送数据包 e1000_transmit() 和接收数据包 e1000_recv()。 Lab11 地址:https://pdos.csail.mi…...
创龙全志T536全国产(4核A55 ARM+RISC-V+NPU 17路UART)工业开发板硬件说明书
前 言 本文档主要介绍TLT536-EVM评估板硬件接口资源以及设计注意事项等内容。 T536MX-CXX/T536MX-CEN2处理器的IO电平标准一般为1.8V、3.3V,上拉电源一般不超过3.3V或1.8V,当外接信号电平与IO电平不匹配时,中间需增加电平转换芯片或信号隔离芯片。按键或接口需考虑ESD设计…...
《解锁CSS Flex布局:重塑现代网页布局的底层逻辑》
网页布局作为用户体验的基石,其重要性不言而喻。从早期简单的表格布局,到后来基于浮动与定位的复杂尝试,网页布局技术始终在不断演进。而CSS Flex布局的出现,宛如一颗璀璨的新星,彻底革新了网页布局的设计理念与实践方…...
deepseek_ai_ida_plugin开源插件,用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试
一、软件介绍 文末提供程序和源码下载 deepseek_ai_ida_plugin开源插件,用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试。FunctionRenamerDeepseekAI.cpp 此文件包含 Hex-Rays 反编译器的主要插件实现。它反编译当前函数…...
完整的 SSL 证书生成与 Spring Boot 配置流程
一、生成 SSL 证书 目标:创建 PKCS12 格式的密钥库文件(keystore.p12),供 Spring Boot 使用。 方法 1:使用 keytool(推荐,直接生成 PKCS12 文件) 生成密钥库:keytool -genkeypair \-alias mydomain \ # 别名(自定义,如 mydomain)-keyalg RSA \ …...
taro小程序如何实现大文件(视频、图片)后台下载功能?
一、需求背景 1、需要实现小程序下载最大500M视频 2、同时需支持图片下载 3、退到其他页面再次回到当前页面时,下载进度也需要展示 二、实现步骤 1、在app.ts文件定义一个全局变量globalDownLoadData 2、写一个独立的下载hooks,代码如下(…...
阿里云bgp服务器优势有哪些?搭建bgp服务器怎么做?
阿里云服务器bgp优势有哪些?搭建bgp服务器怎么做? BGP服务器的优势 BGP(Border Gateway Protocol) 是互联网的核心路由协议,用于在不同自治系统(AS)之间交换路由信息。BGP服务器的核心优势体现在网络连接…...
java连接redis服务器
直接从 Redis 获取数据通常是 Redis通过 客户端库实现的,Jedis 是 Java 中一个常用的 Redis 客户端库。有以下两种主要方式: 1. 使用单个 Jedis 实例(不使用连接池) import redis.clients.jedis.Jedis; public class RedisExampl…...
从零开始:Android Studio开发购物车(第二个实战项目)
一年经验的全栈程序员,目前头发健在,但不知道能撑多久。 文章目录 前言 一、页面编写 1. 顶部标签栏title_shopping.xml 2. 商品展现列表activity_shopping_channel.xml 3. 商品详情页面activity_shopping_detail.xml 4. 购物车页面activity_shopping…...
2. python协程/异步编程详解
目录 1. 简单的异步程序 2. 协程函数和协程对象 3. 事件循环 4. 任务对象Task及Future对象 4.1 Task与Future的关系 4.2 Future对象 4.3 全局对象和循环事件对象 5. await关键字 6. 异步上下文管理 7.异步迭代器 8. asyncio的常用函数 8.1 asyncio.run 8.2 asyncio.get…...
XSS靶场实战(工作wuwuwu)
knoxss knoxss Single Reflection Using QUERY of URL ——01 测试标签 <script>alert(666666)</script>——02: " <h1>test</h1>没有反应,查看源码 现在需要闭合双引号,我计划还是先搞标签 "><h1>tes…...