当前位置: 首页 > news >正文

ES|QL:Elasticsearch的 新一代查询语言

作者:李捷

学会选择很难。学会正确选择更难。而在一个充满无限可能的世界里学会正确选择则更难,也许是太难了。” 巴里-施瓦茨(Barry Schwartz)在《选择的悖论--多就是少》(The Paradox of Choice -More is Less)一书中的一段话概括了为什么灵活性和可定制性过高会让用户不知所措。现代生活中的大量选择可能会导致瘫痪和不满,而不是我们所期望的自由和幸福。多年来,我们在 _search API 中添加了更多的功能和特性,并提供了一个非常灵活和高度可定制的数据搜索平台。但在某些时候,这也是 Elasticsearch 不再像以前那样简单,尤其是对于那些刚刚起步的人来说

随着 Elasticsearch 8.11 版本的即将推出,我们非常高兴地宣布,我们将迎来一个全新的查询语言 ES|QL (Elasticsearch Query Language 的简称)。ES|QL 是一种更加一致、简洁、实用、高效的语言,旨在解决用户在使用 Elasticsearch 时面临的复杂性问题。这是一个里程碑式的发布,我们深知这将改变数据分析的方式,因此我们致力于提供最好的体验。新的 ES|QL 查询语言和引擎 (_query API) 将会替代原有的语言和聚合引擎 (_search API),成为大多数场景下的默认选择,并且将会有大幅的性能提升。

因此,在本博文以及接下来的系列文章中,我们将会带领大家提前预览和体验 ES|QL,这个 Elastic 在数年前就开始秘密开发的杀手级功能。这是一个重要的更新,我们也将会持续提供有关 ES|QL 的相关信息,以确保您可以尽快掌握这个新的功能。

Why ES|QL

Elasticsearch 是一个分布式、非关系型、半结构化、带有时间维度的强大数据平台,支持全文检索、聚合分析、机器学习等功能。在 Elasticsearch 的历史上,曾经诞生过多种语言,如 DSL、KQL、EQL、Lucene、SQL 等,这些语言为 Elasticsearch 的用户在不同的场景下提供了多样的查询能力。

语言

全称

说明

DSL

Elasticsearch 特定领域语言

Elasticsearch 最基础和最强大的查询语言,基于JSON格式

KQL

Kibana 查询语言

用于快速和交互式地进行数据探索和可视化的查询语言,基于文本格式

EQL

事件查询语言

专门用于事件检测和威胁狩猎的查询语言,基于文本格式

Lucene

Elasticsearch 内部 Lucene 搜索引擎的原生语言

用于直接操作 Lucene 索引和文档的底层语言,基于文本格式

SQL

标准结构化查询语言的本地子集

广泛使用的关系型数据库查询语言,基于文本格式

Painless

Elasticsearch 脚本语言

用于对数据进行自定义处理和计算的脚本语言,基于Java语法

Canvas

由其他语言补充的表达式语言

用于创建动态和交互式的数据展示和可视化的表达式语言,基于文本格式

Timelion

用于时间序列的表达式语言

用于对时间序列数据进行分析和可视化的表达式语言,基于文本格式

Vega

用于描述数据处理和可视化的语法

用于创建复杂和高级的数据展示和可视化的语法,基于JSON格式

然而,这一情况也给用户带来了困扰,尤其是在需要决定在特定场合下应该使用哪种语言时。

复杂性是我们的敌人

虽然 Elasticsearch 在许多领域都表现出了非凡的能力,但其碎片化的查询语言在检索和分析方面给用户带来了挑战。我们所说的碎片化是什么意思?事实上,根据客户的反馈,在全观测性和安全分析场景中,在调查问题时,他们往往需要通过多达 6 个或更多的查询,使用不同的查询语言,并在 Kibana 中进行导航,才能找到所需的内容。因此,降低复杂性的关键在于能够在一个屏幕上以一种语言,以组合的方式尽可能多地在单一语句中进行搜索、过滤、转换、聚合和可视化。

并且,这种复杂性也表现在以下几个方面:

  1. 专业知识 - Elasticsearch 提供了丰富的功能,但需要在学习和配置方面进行投资。

  2. 经验 - 在调查过程中,需要多个窗口来提供必要的信息。规划和获取数据需要时间和精力。

  3. 语言 - Elastic 是变通之王。但是,实现查找、连接和内联统计等功能需要额外的工具。

因此,ES|QL 应运而生。ES|QL 的设计初衷是为了解决实际的查询问题,减轻用户学习负担,更加一致、简洁、实用、高效地解决实际问题。ES|QL 不仅具有直观易用性,还能在一个屏幕、一条语句中进行搜索、过滤、转换、汇总和可视化,从而减少复杂性的体现。

What is ES|QL

ES|QL 是一种功能强大的声明式语言,专为 Elasticsearch 设计,注重可组合性、表现力和速度。同时,它也是一种支持数据迭代探索的查询语言。

ES|QL 查询由一系列由管道分隔的命令组成。每个查询都以 Source 命令 开始。源命令会生成一个表,通常包含来自 Elasticsearch 的数据。

源命令后面可以跟一个或多个 处理命令。处理命令通过添加、删除或更改行和列来更改输入表。

你可以链接处理命令,并用管道符分隔:|。每个处理命令都作用于前一个命令的输出表。

查询的结果是最终处理命令生成的表。

与之前提到的ES支持的各种搜索语言不同,这九种语言中的每一种都具有以下功能之一:过滤、处理、分组、重命名、排序、查找和列剪枝等功能。然而,不能同时实现所有这些功能。相比之下,ES|QL则能够在单一、统一的管道化命令语法和数据模型中执行所有这些功能。ES|QL相对于许多其他语言来说更易于使用,功能也更强大。它独立于DSL,并可利用Elasticsearch集群提供的分布式处理功能。

重要的是,ES|QL 将会成为 Elasticsearch 的默认搜索语言

Highlight of ES|QL

专用高性能查询引擎

ES|QL 不仅是一种语言,还是 Elasticsearch 的一个完整的、专门的查询和计算引擎。ES|QL 查询不需要翻译或转换为 Query DSL:所有 ES|QL 查询都会经过词法分析、语法分析、语义分析、验证和优化,然后进行规划阶段以便对集群中的数据进行分布式执行。指定的目标节点负责本地执行,并利用 ES|QL 基础架构通过执行节点本地的重新规划来利用本地数据特性。

ES|QL 带来了一种在设计时考虑到性能的新执行引擎 —— 以块(block)的形式执行,而不是逐行执行,以向量化运算和缓存局部性为目标,并支持专业化和多线程。它是一个独立于现有 Elasticsearch 聚合框架的组件,具有不同的性能特征。

简单总结,ES|QL 的专用查询引擎具备以下特性:

  • 无需转译或翻译

  • 查询会被解析和优化以进行分布式执行

  • 以块(block)的形式运行,而不是逐行执行

  • 充分利用专业化和多线程技术

  • 以向量化和高速缓存定位为目标

在我们当前的基准测试中,ESQL 在许多情况下都优于 DSL,即便不进行任何的优化措施,也比已有的聚合框架更快:

上图中展示了 ES|QL 与原有搜索引擎在不同场景中的性能对比:

  • 绿色折线(search/aggs)代表已有的 DSL 搜索和原有的聚合引擎的性能

  • 蓝色折线(esql/shard partitioning)代表 ES|QL 在分片数据上单核运行

  • 粉红色折线(esql/doc partitioning)代表 ES|QL 在分片数据上多核运行

通过这个基准测试,我们看到,通过充分使用多线程技术,并且面向向量化和缓存的计算,ES|QL 已经实现了对现有框架在性能层面的遥遥领先,并且还将在未来充分受益于 Java 在向量化运算上的增强。

简约是终极的精致

我们深信简约是终极的精致,在 ES|QL,我们始终如一地践行这一理念。ES|QL 提供了管道式查询语言,让您能够轻松地在单一的语句中完成搜索、汇总、计算、转换和可视化等所有操作。并且,ES|QL 的查询语言与您可能已经熟悉的其他查询语言相似,为您提供了无缝体验。而在我们的下一代搜索引擎的设计标准是,需要能够实现更快的搜索速度,同时为数据调查和探索提供了全面的语言。我们一直致力于为用户提供更好的体验,并不断突破数据分析的极限。

其优势表现为:

  • 更快的查询速度:利用 Elasticsearch 查询引擎,可在多个阶段同时执行搜索和聚合,从而提高速度和效率。

  • 简化 Elasticsearch 和数据摄取:Elasticsearch 的搜索功能非常丰富,但需要投资学习。ES|QL 语法大大简化了对 Elasticsearch 及其功能的使用和理解。

  • 全新的变革性搜索引擎:ES|QL 查询引擎提供了lookup等新功能。只需一次查询,即可轻松实现搜索、聚合、计算和数据转换。未来,ES|QL 还将提供 inline stats 和 joins等其他功能

  • 快速洞察:直接从 Kibana Discover 创建可视化、计算和聚合,将调查工作流程浓缩在一个屏幕中,从而更快地获得答案。

  • 减少将数据引入 Elasticsearch 的摩擦:无论数据来源、结构、复杂性或数量如何,ES|QL 都能简化 Elasticsearch 中的数据摄取。

  • 警报:利用 ES|QL 写入可观测性和安全警报,并将汇总值作为阈值。通过强调有意义的趋势而非孤立的事件、减少误报并提供更具操作性的通知,提高检测准确性。

在解决方案上的增强

基于上面提到的 ES|QL 的诸多优点,在 Elastic 搜索平台上,各种解决方案都能够受益于 ES|QL 的强大功能。

搜索

使用 Elasticsearch 查询语言(ES|QL)提升搜索能力,这是一种创新的管道查询语言和引擎,旨在提供更好的开发体验和更高的性能。利用 ES|QL,用户可以在一次查询中检索、汇总、计算和转换数据。它的主要功能包括在查询时定义字段、执行数据丰富查询和并发处理查询。使用 ES|QL 以多种方式了解和探索数据。从利用客户端直接集成 API/代码,到直接从 Kibana 的搜索框中可视化结果,ES|QL 简化了您的数据调查,确保您轻松简单地从数据集中获得最大收益。有了 ES|QQL,开发人员将体会到代码和查询复杂性的降低,从而节省时间和成本。ES|QL 简化了查询结果在后续搜索中的使用,减少了对复杂脚本和多次查询的依赖,从而降低了计算成本。ES|QL 不仅仅是一个应用程序接口,它还是一种简单而强大的方式,可帮助您改变搜索方法。

全观测

使用 Elasticsearch 查询语言 (ES|QL),在 Elastic Observability 中对数据进行可视化和分析。您可以直接从搜索栏汇总、转换、计算和搜索您的指标、日志和跟踪数据,只需一次查询,即可优化定位性能瓶颈和系统问题,缩短解决问题的时间,消除浏览多个屏幕的麻烦。ES|QL 的高级查询引擎引入了多种功能,如在查询时定义字段、查找数据以丰富数据,以及并发查询处理以提高速度和效率。ES|QL 不仅能处理各种可观测性数据(无论数据来源和结构如何),还能帮助建立以汇总值作为阈值的可观测性警报。ES|QL 与 Elastic ML 和 AiOps 可通过强调有意义的趋势而非孤立事件、减少误报并提供更多可操作的通知,帮助提高检测准确性。ES|QL 可直接从搜索栏提供查询、聚合和可视化功能,从而确保系统性能和正常运行时间。

安全分析

利用 ES|QL(Elasticsearch 查询语言)提升安全态势。无论数据来源和结构如何,它都能加快 SecOps 工作流程并提高警报准确性。

快速灵活地搜索数据,并即时定义新字段,以推动调查和响应。汇总结果,例如查看最常访问的服务器。执行计算,例如入站流量和出站流量的比率。利用地理位置等上下文丰富结果。将结果可视化,以了解有意义的模式和异常情况。所有这些都只需一次管道式查询。

为了更准确地发出警报并减少警报疲劳,可在检测规则中加入汇总值。结果:信号更多,噪音更少。

ES|QL 对每个 SOC 开放,对每个分析师友好:

通过查找丰富数据:通过在当前数据集中引入额外的上下文,ES|QL 可提供更全面的视图,这在安全调查中至关重要。例如,客户可以通过一个搜索栏对 IP 地址执行查询,以确定其地理位置、与已知恶意实体的关联,或是否属于已知的云服务提供商。

总之,ES|QL 作为 Elastic 搜索平台上的核心功能,为各种解决方案带来了非凡的收益。它提供了高效准确的搜索、强大的数据分析和可视化能力,以及高度可扩展性和灵活性。这些优势使得各种解决方案能够更好地满足用户需求,并为企业带来更大的价值。

我在哪里可以得到它?

ES|QL 代码可在 Elasticsearch主分支中获取,并将作为 Elasticsearch 8.11 中的技术预览版发布。这是一项免费功能(basic订阅级别),可供所有人使用。每晚快照很快就会可供下载,因此请随时查看代码并自行构建。

因为我们正处于 ES|QL 的早期阶段,可能存在一些未解决的问题、障碍,甚至是错误,请提出问题。我们迫不及待地想与 Elasticsearch 社区分享 ES|QL!

我们代表 ES|QL 团队期待您的反馈!

 原文:ES|QL:Elasticsearch的新一代查询语言

相关文章:

ES|QL:Elasticsearch的 新一代查询语言

作者:李捷 “学会选择很难。学会正确选择更难。而在一个充满无限可能的世界里学会正确选择则更难,也许是太难了。” 巴里-施瓦茨(Barry Schwartz)在《选择的悖论--多就是少》(The Paradox of Choice -More is Less&…...

C语言实现句子中的单词颠倒排序

一、运行结果 二、源代码 # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <assert.h>//实现逆转函数&#xff1b; void reverse(char* left, char* right) {//断言left和right都不能为空&#xff1b;assert(left);assert(right);//循环逆转字母…...

MySQL学习(八)——锁

文章目录 1. 锁概述2. 全局锁2.1 全局锁的必要性2.2 语法2.3 全局锁的特点 3. 表级锁3.1 表锁3.2 元数据锁3.3 意向锁3.4 自增锁 4. 行级锁4.1 介绍4.2 记录锁4.3 间隙锁4.4 临键锁 1. 锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传…...

让iPhone用电脑的网络上网

让iPhone用电脑的网络上网&#xff0c;可以按照以下步骤操作&#xff1a; 在iPhone上找到并点击“设置”选项&#xff0c;进入“蜂窝移动网络”。打开“个人热点”选项。此时下方的弹出对话框会显示“仅USB”。用数据线将你的iPhone与电脑相连&#xff0c;并在电脑上打开“控制…...

ThreeJS-3D教学十-有宽度的line

webgl中线是没有宽度的&#xff0c;现实的应用中一般做法都是将线拓宽成面来绘制。默认threejs的线宽是无法调节的&#xff0c;需要用有厚度的线 THREE.Line2。 先看效果图&#xff1a; 看下代码&#xff1a; <!DOCTYPE html> <html lang"en"> <he…...

安装Elasticsearch步骤(包含遇到的问题及解决方案)

注&#xff1a;笔者是在centos云服务器环境下安装的Elasticsearch 目录 1.安装前准备 2.下载Elasticsearch 3.启动Elasticsearch 非常容易出问题 第一次运行时&#xff0c;可能出现如下错误&#xff1a; 一、内存不足原因启动失败 二、使用root用户启动问题 三、启动ES自…...

网络编程面试笔试真题

网络编程笔试面试真题 1、关于Linux系统中多线程的信号处理&#xff0c;说法中不正确的是&#xff1f; A&#xff1a;在线程环境霞&#xff0c;产生的信号是传递给整个进程的 B&#xff1a;一般情况下&#xff0c;信号会随机给进程的一个线程 C&#xff1a;对某个信号处理函数…...

MySQL官方文档如何查看,MySQL中文文档

这里写自定义目录标题 MySQL官方文档如何查看MySQL中文文档 MySQL官方文档如何查看 MySQL官网地址&#xff1a;https://dev.mysql.com/doc/ 比如这里我要找InnoDB架构 MySQL中文文档 MySQL 5.1中文文档地址&#xff1a;https://www.mysqlzh.com/...

第七章:最新版零基础学习 PYTHON 教程—Python 列表(第四节 -如何在 Python 中查找列表的长度)

列表是 Python 日常编程不可或缺的一部分,所有 Python 用户都必须学习,了解其实用程序和操作是必不可少的,而且总是有好处的。因此,本文讨论了找到第一个这样的实用程序。使用Python 的列表中的元素。 目录 在 Python 中查找列表的长度...

XPS虽没流行,但还在使用!在Windows 10中打开XPS文件的最佳方法

当Windows Vista发布时&#xff0c;微软推出了XPS格式&#xff0c;这是PDF的替代品。XPS文件格式并不是什么新鲜事&#xff0c;但从未获得过多大的吸引力。 因此&#xff0c;XPS&#xff08;XML Paper Specification&#xff09;文件是微软对Adobe PDF文件的竞争对手。尽管XPS…...

23 种设计模式详解(C#案例)

&#x1f680;设计模式简介 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时…...

@SpringBootApplication配置了scanBasePackages导致请求一直404,分析下原因

出现RequestMapping注解的Controller类可能是因为SpringBootApplication注解中配置了scanBasePackages导致的请求一直返回404错误。 SpringBootApplication注解是Spring Boot的核心注解之一&#xff0c;它用于启动Spring Boot应用程序。这个注解实际上是一个组合注解&#xff…...

{大厂漏洞 } OA产品存在SQL注入

0x01 漏洞介绍 江苏叁拾叁-OA是由江苏叁拾叁信息技术有限公司开发的一款OA办公平台&#xff0c;主要有知识管理&#xff0c;工作流程&#xff0c;沟通交流&#xff0c;辅助办公&#xff0c;集成解决方案&#xff0c;应用支撑平台&#xff0c;基础支撑等功能。 该系统也与江苏叁…...

6-8 舞伴问题 分数 15

void DancePartner(DataType dancer[], int num) {LinkQueue maleQueue SetNullQueue_Link();LinkQueue femaleQueue SetNullQueue_Link();// 将男士和女士的信息分别加入对应的队列for (int i 0; i < num; i) {if (dancer[i].sex M){EnQueue_link(maleQueue, dancer[i]…...

samba服务器的功能是什么

Samba服务器是一个开源的网络文件共享服务&#xff0c;其主要功能是在不同操作系统之间实现文件和打印机共享。它最常用于将Linux/Unix系统与Windows系统互联&#xff0c;但也支持其他操作系统。 以下是Samba服务器的主要功能&#xff1a; 文件共享&#xff1a;Samba允许用户在…...

MSQL系列(五) Mysql实战-索引最左侧匹配原则分析及实战

Mysql实战-索引最左侧匹配原则分析及实战 前面我们讲解了索引的存储结构&#xff0c;BTree的索引结构&#xff0c;以及索引最左侧匹配原则&#xff0c;Explain的用法&#xff0c;今天我们来实战一下 最左侧匹配原则 1.联合索引最左侧匹配原则 联合索引有一个最左侧匹配原则 …...

react|redux状态管理

react|redux状态管理 参考官网&#xff1a;https://cn.redux-toolkit.js.org/tutorials/quick-start 状态管理使用流程 1、安装&#xff1a; npm install react-redux reduxjs/toolkit2、创建store.js 通过configureStore的hook对reducer&#xff08;或slice&#xff09;进行…...

Python之旅----判断语句

布尔类型和比较运算符 布尔类型 布尔类型的定义 布尔类型的字面量&#xff1a; True 表示真&#xff08;是、肯定&#xff09; False 表示假 &#xff08;否、否定&#xff09; 也就是布尔类型进行判断&#xff0c;只会有2个结果&#xff1a;是或否 定义变量存储布尔类型…...

【JavaEE】文件操作和IO

1 什么是文件&#xff1f; 针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进行数据保存时&#xff0c;往往不是保存成一个整体&#xff0c;而是独立成一个个的单位进行保存&#xff0c;这个独立的单位就被抽象成文件的概念 2 文件路径 文件路径就是指咱们文件系统中…...

python使用dataset快速使用SQLite

目录 一、官网地址 二、安装 三、 快速使用 一、官网地址 GitHub - pudo/dataset: Easy-to-use data handling for SQL data stores with support for implicit table creation, bulk loading, and transactions. 二、安装 pip install dataset 如果是mysql&#xff0c;则…...

Python 练习100实例(21-40)

Python 练习实例21 题目&#xff1a;猴子吃桃问题&#xff1a;猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不瘾&#xff0c;又多吃了一个第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天…...

“创新启变 聚焦增长”极狐(GitLab)媒体沟通会,共话智能时代软件开发新生态

10 月 18 日 北京 昨日&#xff0c;全球领先 AI 赋能 DevSecOps 一体化平台极狐(GitLab) 在北京举办了主题为“创新启变 聚焦增长”的媒体沟通会。极狐(GitLab) CEO 柳钢就“中国企业数字化转型、软件研发、技术自主可控等热点问题&#xff0c;以及 AI 大模型时代下&#xff0c…...

【ChatGLM2-6B】在只有CPU的Linux服务器上进行部署

简介 ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练&#xff0c;具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&…...

Xilinx IP 10 Gigabit Ethernet Subsystem IP

Xilinx IP 10 Gigabit Ethernet Subsystem IP 10 Gb 以太网子系统在 10GBASE-R/KR 模式下提供 10 Gb 以太网 MAC 和 PCS/PMA,以提供 10 Gb 以太网端口。发送和接收数据接口使用 AXI4 流接口。可选的 AXI4-Lite 接口用于内部寄存器的控制接口。 • 设计符合 10 Gb 以太网规范…...

ubuntu下yolox tensorrt模型部署

TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速…...

外汇天眼:外汇投资入门必看!做好3件事,任何人都能提高交易胜率

近年来外汇市场愈来愈热络&#xff0c;许多投资人看准世界金融变化的趋势&#xff0c;纷纷开始入场布局&#xff0c;期望把握行情大赚一笔。 如果你之前没有做过外汇交易&#xff0c;建议最好先透过「外汇天眼学院」学习各种相关的知识与技术分析&#xff0c;等到对外汇有一定的…...

idea dubge 详细

目录 一、概述 二、debug操作分析 1、打断点 2、运行debug模式 3、重新执行debug 4、让程序执行到下一次断点后暂停 5、让断点处的代码再加一行代码 6、停止debug程序 7、显示所有断点 8、添加断点运行的条件 9、屏蔽所有断点 10、把光标移到当前程序运行位置 11、单步跳过 12、…...

短视频矩阵系统/pc、小程序版独立原发源码开发搭建上线

短视频剪辑矩阵系统开发源码----源头搭建 矩阵系统源码主要有三种框架&#xff1a;Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架&#xff0c;提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框架&#xff0c;用于将数…...

Linux不同格式的文件怎么压缩和解压

Linux不同格式的文件怎么压缩和解压 tar介绍不同格式文件压缩和解压 tar介绍 tar&#xff08;tape archive&#xff09;是一个在Unix和类Unix操作系统中用于文件打包和归档的命令行工具。它通常与其他工具&#xff08;例如gzip、bzip2、xz&#xff09;一起使用来创建归档文件并…...

Java 领域模型之失血、贫血、充血、胀血模型

1.失血模型 失血模型仅仅包含数据的定义和getter/setter方法&#xff0c;业务逻辑和应用逻辑都放到服务层中。这种类在Java中叫POJO。 action service&#xff1a; 核心业务&#xff08;复杂度&#xff1a;重&#xff09; model&#xff1a;简单Set Get dao &#xff1a;数据持…...

自贡做网站的公司/seo在线外链

1.如果服务器支持allow_url_fopen选项&#xff1a;if ((boolean)ini_get(allow_url_fopen)){$url ;$file file_get_contents($url);$fp fopen(basename($url), wb);fwrite($fp, $file);fclose($fp);}2.如果服务器支持Curl组件&#xff1a;if (function_exists(curl_init)){$…...

电影大型网站制作/seo小白入门教学

昨天在用Springmvc往前台ajax传数据的时候报了406的错误 想了半天&#xff0c;查了资料终于今早搞定~跟大家分享下 后台Controller的代码&#xff1a; RequestMapping("/single.do")public ResponseBody List<SingleModel> getJson(HttpServletRequest reque…...

信息类网站怎么做/重庆网络推广平台

先来解释下什么是错误缓冲区&#xff1f;在MySQL里面&#xff0c; 错误缓冲区只记录最近一次出现的错误&#xff0c; 只要是有新的错误产生&#xff0c;旧的就会被覆盖掉。 所以想知道产生了什么错误&#xff0c;就得在每个有可能发生错误的语句后面紧跟着"show warnings&…...

武汉网站定制/百度手机助手网页版

实际开发中遇到问题&#xff0c;有一个数组&#xff0c;需要把它的key取出来并在下拉框中进行显示&#xff0c;但不知如何获取数组的 key&#xff1f; 举个例子比如 var array [{ 0: ‘a’}, { 1: ‘b’ }, { 2: ‘c’ }] 需要取出key&#xff0c;构成一个新的数组 [‘0’, ‘…...

贵阳网站制作计划/郑州网站排名推广

本博文是测试公众号调用模板接口测试。请不要完全复制我的代码。里面的测试代码中有本人测试号的微信模板id。麻烦替换成自己的可以吗&#xff1f;第一步&#xff1a;创建模板信息第二步&#xff1a;准备模板代码实体类用到的属性自行加入就行public class TemplateData {priva…...

做新得网站可以换到原来得域名嘛/搜索引擎下载安装

这些视图汇总了流程列表信息。它们提供了比SHOW PROCESSLIST语句和 INFORMATION_SCHEMA PROCESSLIST表更完整的信息&#xff0c;并且是非阻塞的。默认情况下&#xff0c;行按降序处理时间和降序等待时间排序。此处的列描述是简短的。有关更多信息&#xff0c;请参见第26.12.19.…...