ElasticSearch01-概述
零、文章目录
ElasticSearch01-概述
1、Elastic Stack
(1)简介
- 官网地址:https://www.elastic.co/cn/
- ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。
- ELK架构如下:
- 随着ELK的发展,又有新成员Beats、elastic cloud的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。
(2)特点
- 全文搜索:Elasticsearch提供强大的全文搜索能力。
- 数据处理:Logstash用于数据收集、处理和转发。
- 数据可视化:Kibana提供数据可视化和仪表板功能。
- 接口简单:采用json形式RESTFUL API接受数据并响应,无关语言。
- 实时分析:支持实时数据处理和分析。
- 可扩展性:易于在分布式环境中水平扩展。
- 灵活性:高度可定制,适应不同数据处理需求。
- 开源:拥有活跃社区和丰富的插件生态。
- 数据集成:轻松集成多种数据源。
- 安全性:提供用户认证、授权和数据加密。
- 成本效益:作为开源解决方案,降低成本。
- 易用性:Kibana界面友好,简化数据探索。
- 监控与警报:支持设置监控规则和警报。
(3)组件介绍
- Elasticsearch:
- 开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。
- 建立在Lucene之上,擅长全文搜索,是一个近乎实时的搜索平台。
- Logstash:
- 服务器端数据处理管道,从多个来源摄取数据,对其进行转换,然后将其发送到Elasticsearch存储。
- 支持动态的数据收集、过滤、分析和丰富,拥有近200种插件。
- Kibana:
- 开源数据可视化插件,提供查找、查看和交互存储在Elasticsearch索引中的数据的方式。
- 用于高级数据分析和可视化数据。
- Beats:
- Elastic Stack中负责数据采集的轻量级组件,包括Filebeat、Metricbeat、Packetbeat等。
- 从各种源头采集数据,并将数据发送到Elasticsearch或Logstash进行后续处理和分析。
- 例如,Filebeat用于收集和转发日志文件,Metricbeat用于收集系统和服务的运行指标。
- Elastic Cloud:
- 提供在AWS、Google Cloud和Azure上部署托管型Elasticsearch和Kibana的能力。
- 作为Elasticsearch的开发公司,Elastic为云端的Elastic集群提供多项功能和贴心支持。
2、搜索原理
(1)搜索是什么
- 搜索:是一种信息检索技术,它允许用户从大量的数据中查找和获取特定的信息。
- 在计算机科学和信息技术领域,搜索通常涉及以下几个方面:
- 全文搜索:在文本中查找特定的词汇或短语,通常用于文档、书籍、网页等。
- 数据库搜索:在数据库中查询特定的数据记录。
- 网络搜索:使用搜索引擎在互联网上查找信息,如使用Google、Bing等搜索引擎。
- 文件系统搜索:在计算机的文件系统中查找文件或文件夹。
- 元数据搜索:根据文件、文档或其他数据对象的属性(如作者、日期、标签等)进行搜索。
- 语义搜索:理解用户查询的意图,并返回最相关的结果,而不仅仅是关键词匹配。
- 垂直搜索:专注于特定类型的数据或领域的搜索,如房地产搜索、旅游搜索等。
- 本地搜索:在用户的设备上进行的搜索,不依赖于网络。
(2)数据库做搜索局限性
- 扩展性限制:在处理大规模数据时,传统数据库的扩展能力有限,尤其是横向扩展。
- 非结构化数据处理:不擅长处理文本、图像等非结构化数据。
- 灵活性不足:数据库结构固定,难以适应数据模型的快速变化。
- 全表扫描问题:在缺乏有效索引的情况下,可能需要全表扫描,影响性能。
- 性能优化复杂:需要复杂的索引和查询优化来提升性能。
- 大数据查询效率:在大数据量下,查询效率可能下降,影响用户体验。
- 举例如下:如下数据,查询“中国足球”,数据库就非常难实现数据匹配,更何况更加复杂的文本。
文档 | 内容 |
---|---|
Doc1 | 中国的足球队 |
Doc2 | 中国男子足球队 |
Doc3 | 中国男子划水队 |
Doc4 | 中国女子划水队 |
(3)全文检索
- 全文检索:一种信息检索技术,它允许用户搜索文档中的全文内容,而不仅仅是元数据或数据库字段。
- 以下是全文检索的一些关键特点:
- 关键词搜索:用户可以输入一个或多个关键词,系统会返回包含这些关键词的文档。
- 索引创建:在全文检索系统中,文档内容会被处理并存储在一个索引中,这个索引允许快速检索。
- 倒排索引:全文检索系统通常使用倒排索引来存储文档中每个词的位置信息,从而加快搜索速度。
- 相关性排序:搜索结果会根据相关性进行排序,相关性高的文档排在前面。
- 模糊匹配:支持模糊查询,即使用户输入的关键词有拼写错误或不完整,系统也能返回相关结果。
- 多语言支持:全文检索系统能够处理多种语言的文档,并且可以针对不同语言进行优化。
- 复杂查询:支持布尔查询(AND, OR, NOT)、短语搜索、通配符搜索等复杂查询。
- 性能优化:全文检索系统会通过各种优化技术,如缓存、分布式处理等,来提高搜索性能。
- 可扩展性:能够处理从小型文档集合到大规模数据集的搜索需求。
- 用户界面:提供用户友好的搜索界面,使用户能够轻松地输入查询并浏览结果。
- 安全性和权限:可以集成安全机制,控制对敏感文档的访问。
- 集成性:全文检索系统可以集成到现有的应用程序和工作流程中,提供无缝的搜索体验。
(4)倒排索引及其原理
- 定义
- 倒排索引(Inverted Index)是全文检索中最常用的数据结构之一,它极大地提高了搜索效率,尤其是在处理大量文本数据时。
- 倒排索引是一种索引方法,它将文档集合中的所有文档中出现的每个词作为索引Key记录下来,并为每个词提供一份包含该词的文档列表。当用户查询时,可以直接查找该词的索引,快速定位到包含该词的所有文档。
- 工作原理
- 假如现在有三份数据文档,内容分别是:
文档 | 内容 |
---|---|
Doc1 | Java is the best programming language |
Doc2 | PHP is the best programming language |
Doc3 | Javascript is the best programming language |
- 分词:首先,对文档集合中的每个文档进行分词处理,将文档分解成独立的词项。
文档 | 内容 | 分词 |
---|---|---|
Doc1 | Java is the best programming language | Java,is,the,best,programming,language |
Doc2 | PHP is the best programming language | PHP,is,the,best,programming,language |
Doc3 | Javascript is the best programming language | Javascript,is,the,best,programming,language |
- 构建词典:创建一个词典(Term Dictionary),记录所有不同的词项,并为每个词项分配一个唯一的标识符(如词ID)。
- 构建倒排列表:对于词典中的每个词项,创建一个倒排列表(Posting List),记录包含该词项的所有文档的文档ID。倒排列表还可能包含词项在文档中出现的位置信息(位置索引),以及词项在文档中出现的次数(词频)。
ID | term | 文档列表 |
---|---|---|
1 | is | Doc1,Doc2,Doc3 |
2 | the | Doc1,Doc2,Doc3 |
3 | best | Doc1,Doc2,Doc3 |
4 | programming | Doc1,Doc2,Doc3 |
5 | language | Doc1,Doc2,Doc3 |
6 | Java | Doc1 |
7 | PHP | Doc2 |
8 | Javascript | Doc3 |
- 存储索引:将词典和倒排列表存储在数据库或文件系统中,以便快速检索。
- 查询处理:当用户提交查询时,会将查询的词进行分词处理,然后再将分词结果分别查找词典中与查询词项对应的倒排列表,快速检索出包含这些词项的文档列表。
- 结果合并:如果查询包含多个词项,系统需要合并这些词项的倒排列表,找出同时包含所有查询词项的文档。这个过程可能涉及到布尔逻辑(AND, OR, NOT)等操作。
- 相关性评分:根据词项在文档中的出现频率、位置信息、文档的长度等因素,计算文档与查询的相关性得分,并按照得分对结果进行排序。
3、ElasticSearch
(1)概述
- 官网地址:https://www.elastic.co/cn/products/elasticsearch
- Elasticsearch是一个基于Lucene的搜索引擎。对Lucene进行了良好的封装,简化开发,并提供了很多高级功能。
(2)关键特性
- 分布式:Elasticsearch天生就是分布式的,这意味着它可以很容易地扩展到数以百计的服务器,并且可以处理PB级别的数据。
- 高可用性:Elasticsearch设计为高可用的,它通过将数据复制到多个节点来实现这一点,这样即使某个节点失败,数据也不会丢失。
- 实时搜索:Elasticsearch提供了快速的搜索能力,可以实时地对数据进行索引和搜索。
- 多租户:Elasticsearch支持多租户架构,允许多个用户或应用在同一个集群上运行而不会相互干扰。
- JSON文档:Elasticsearch使用JSON格式存储数据,这使得它易于与其他系统和编程语言集成。
- RESTful接口:Elasticsearch提供了一个RESTful API,使得它可以通过HTTP请求进行操作。
- 分析和聚合:Elasticsearch提供了强大的分析和聚合功能,可以对数据进行复杂的查询和分析。
- 可扩展性:Elasticsearch可以很容易地通过增加更多的节点来扩展,以处理更多的数据和查询负载。
- 容错性:Elasticsearch具有自动故障转移和恢复的能力,可以在节点失败时自动重新分配数据和查询负载。
(3)发展历史
- 起源:Elasticsearch最初由Shay Banon在2010年创建,并在同年发布了第一个版本。Shay Banon创建Elasticsearch的初衷是为了解决传统关系型数据库无法满足的大规模数据搜索和分析需求。他希望构建一个分布式的、实时的搜索和分析引擎,基于Apache Lucene搜索引擎库,并在此基础上构建了更多的功能和特性,如分布式架构、实时索引、多数据类型支持、聚合分析等。
- 公司成立:2012年,Elasticsearch N.V.公司成立,专注于开发和支持Elasticsearch相关的开源项目。公司的成立标志着Elasticsearch项目的商业化和持续发展。
- 社区壮大:从2013年开始,Elasticsearch社区逐渐壮大,吸引了越来越多的开发者和用户参与其中。Elasticsearch社区不断推出新版本,发布了许多重要的功能和改进,如实时搜索、聚合分析、地理空间搜索等。
- 被收购与上市:2018年,Elasticsearch N.V.公司更名为Elastic,并于同年上市。Elastic公司不断壮大,成为了搜索和分析领域的领军企业之一。
- 版本发布:Elasticsearch经历了多个版本的迭代,从1.x系列到最新的8.x系列,每个版本都带来了新的特性和性能改进。例如,1.0.0版本引入了分布式搜索和实时索引的核心功能,而7.0版本开始增加对向量字段的支持,标志着Elasticsearch正式进入向量检索领域。
- 开源与成功:Elasticsearch的成功关键因素之一是其开源特性,以及除了搜索之外的不同用例,如日志管理、安全和分析。
- 向量检索发展:随着机器学习和人工智能的兴起,Elasticsearch在向量检索方面也有所发展。从5.x版本开始,社区尝试通过插件和基本的数学运算实现简单的向量检索功能。到了7.0版本,Elasticsearch正式开始增加对向量字段的支持,例如通过dense_vector类型。
(4)应用案例
- Netflix:Netflix依赖Elasticsearch来监控客户服务操作、安全日志和消息系统。其可扩展性和灵活性导致了广泛的应用,支持公司内部的关键运营。
- eBay:eBay在各种文本搜索和分析用例中使用Elasticsearch。他们定制的“Elasticsearch-as-a-Service”平台简化了集群配置,使eBay能够无缝处理大量数据。
- Walmart:Walmart利用Elastic Stack获得客户购买模式的可操作洞察,监控商店性能指标,并实时分析销售数据。其强大的安全功能增强了监控能力,确保为客户提供安全和优化的购物体验。
- Sony:Sony公司使用Elasticsearch作为信息搜索引擎。
- Mozilla:Mozilla公司使用Elasticsearch进行单元或功能测试,测试结果以JSON的方式索引到Elasticsearch中,方便开发人员查找bug。
- SoundCloud:SoundCloud使用Elasticsearch为1.8亿用户提供即时精准的音乐搜索服务。
- StumbleUpon:StumbleUpon使用Elasticsearch每天为社区提供百万次的推荐服务。
- Infochimps:Infochimps已经索引了25亿文档,总共占用4TB的空间。
4、常见搜索引擎对比
(1)Lucene
- Lucene,直白地说,它就是一个jar包,封装好了各种建立倒排索引、匹配索引进行搜索的各种算法。我们可以引入Lucene,基于它的API进行开发。
- Lucene是一个高性能、纯Java的全文检索引擎,它免费且开源,适用于任何需要全文检索的应用,尤其是跨平台的应用。
- 起源:Lucene最初由Doug Cutting于1999年创建,最初是为了创建一个基于全文搜索的邮件存档系统而开始开发Lucene。
- 开源与社区发展:2000年3月,Lucene在SourceForge上开源并提供下载。2001年9月,Lucene作为高质量的Java开源软件产品加入Apache软件基金会的Jakarta家族中。随着每个版本的发布,这个项目得到明显的增强,也吸引了更多的用户和开发人员。
- 版本发展:Lucene经历了多个版本的迭代,从最初的0.01版本(2000年3月)到后来的1.0版本(2000年10月),再到1.4版本(2004年7月)等。2005年,Lucene升级成为Apache顶级项目。
- 生态系统形成:随着Lucene的发展,其生态系统也逐渐形成。相关项目如Solr和Elasticsearch等基于Lucene的搜索引擎系统相继出现,为Lucene的应用提供了更多的功能和扩展性。
- 重要地位:Lucene在全文搜索领域占据了重要地位,它不仅是一个全文检索引擎,也是一个信息检索(IR)库,能够为应用程序添加索引和搜索能力。
- 社区认可:Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用,包括Apache软件基金会的网站、IBM的开源软件Eclipse等都采用了Lucene作为全文检索的引擎。
- Lucene的发展历史充满了合作和开源社区的力量,得到了全球开发者和用户的认可和支持,成为了全文搜索引擎库中的一个非常成熟和强大的选择。
(2)Solr
- 起源与历史:
- Solr最初由Yonik Seely于2004年创建,目的是为了在CNET Networks的公司网站上添加搜索功能。
- 2006年1月,Solr成为Apache软件基金会下的一个开源项目。
- 2016年,Solr发布了新版本6.0,支持并行SQL查询的执行。
- 目前最新的版本是8.6.0。
- 功能与特性:
- Solr提供了先进的全文搜索功能。
- 它支持基于标准的开放接口,通过XML、JSON和HTTP查询和获取结果。
- Solr高度可扩展和容错,能够有效地复制到另一个Solr搜索服务器。
- 可以通过HTML页面管理,使用XML配置达到灵活性和适配性。
- 拥有灵活的插件体系,新功能能够以插件的形式方便地添加到Solr服务器上。
- 强大的数据导入功能,数据库和其他结构化数据源都可以导入、映射和转化。
- 应用场景:
- Solr广泛应用于电商平台、日志分析、内容管理系统等领域。
- 在电商平台中,Solr的全文检索和分类统计功能使得商品搜索的实现变得轻松。
- 在日志分析场景中,Solr可以快速对日志进行索引和检索,帮助运维人员高效地排查故障。
- 在内容管理系统(CMS)中,Solr可以轻松实现内容搜索功能,帮助用户快速查找文章、图片等资源。
- 与Lucene的区别:
- Lucene是一个全文检索工具包,而Solr是一个基于Lucene的全文搜索服务,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
- Solr可以独立运行,不提供构建UI的功能,但提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
(3)Solr VS Elasticsearch
- 安装与配置:
- Elasticsearch更易于安装和配置,学习成本更低。
- Solr的安装和配置比Elasticsearch要复杂一些。
- 数据源与索引:
- Solr接受来自不同来源的数据,包括XML文件,CSV文件和从数据库中的表提取的数据以及常见的文件格式(如Microsoft Word和PDF)。
- Elasticsearch也支持其他来源的数据,例如ActiveMQ,AWS SQS,DynamoDB(Amazon NoSQL),FileSystem,Git,JDBC,JMS,Kafka,LDAP,MongoDB,neo4j,RabbitMQ,Redis,Solr和Twitter等。
- 搜索与分析:
- Solr专注于文本搜索。
- Elasticsearch常用于查询、过滤和分组分析统计,Elasticsearch背后的团队也努力让这些查询更为高效。
- 索引间join操作:
- Solr中,索引间进行join必须是单个分片和其他节点上的副本集进行关联来搜索文档间关系(例如SQL连接)。
- Elasticsearch提供更高效的has_children和top_children查询来检索这样的相关文档。
- 可扩展性与分布式:
- Solr利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。
- Elasticsearch可以在笔记本电脑上运行,也可以在承载了PB级数据的成百上千台服务器上运行,具有很好的水平扩展性。
- 性能:
- 在处理实时搜索应用时,Elasticsearch的效率明显高于Solr。
- Solr在传统的搜索应用中表现好于Elasticsearch。
- 社区支持:
- Solr有一个更大、更成熟的用户、开发和贡献者社区。
- Elasticsearch也有一个活跃的社区,提供用户支持。
- 功能与插件:
- Solr官方提供的功能更多。
- Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供。
- 多租户支持:
- Elasticsearch处理多租户(multitenancy)不需要特殊配置。
- Solr则需要更多的高级设置。
- 备份与恢复:
- Elasticsearch采用Gateway的概念,使得完备份更加简单。
5、Elasticsearch 核心概念
(1)索引(Index)
- 定义:索引是一系列文档的集合,类似于关系型数据库中的数据库。每个索引都有一个唯一的名称,并且这个名称在集群中是唯一的。
- 作用:索引用于存储和检索数据。在Elasticsearch中,索引可以被细分为多个分片(shard),每个分片都是一个独立的Lucene索引,可以托管在集群中的任何节点上。
(2)文档(Document)
- 定义:文档是Elasticsearch中的基本数据单元,通常以JSON格式表示。每个文档都有一个唯一的标识符(_id),并且属于一个特定的索引和类型(type)。
- 作用:文档是存储在索引中的数据的基本单位。每个文档都可以包含多个字段,这些字段可以是不同类型的数据(如字符串、数字、日期等)。
(3)类型(Type)
- 定义:类型是索引中的一个逻辑分区,用于区分不同种类的文档。在Elasticsearch 6.0之前,一个索引可以包含多个类型,但从6.0开始,Elasticsearch开始淡化类型的概念,推荐一个索引只包含一个类型,并计划在8.x版本中完全废弃类型。
- 作用:类型用于逻辑上区分同一索引中的不同种类的文档。例如,在一个名为“articles”的索引中,可以有一个类型为“blog_post”的文档,表示博客文章。
(4)分片(Shard)
- 定义:分片是索引的一个子集,每个分片都是一个独立的Lucene索引。一个索引可以包含多个分片,这些分片可以分布在不同的节点上。
- 作用:分片用于水平扩展Elasticsearch的存储和处理能力。通过将索引分成多个分片,可以将数据分布到多个节点上,从而提高系统的可扩展性和容错能力。
(5)副本(Replica)
- 定义:副本是对主分片(primary shard)的一个备份。每个主分片可以有一个或多个副本。
- 作用:副本用于提高系统的可用性和查询性能。通过在不同的节点上创建副本,可以在某个节点发生故障时,确保数据的可用性。同时,查询可以在主分片和副本上并行执行,从而提高查询性能。
(6)集群(Cluster)
- 定义:集群是由一个或多个节点组成的集合。集群中的节点共同工作,提供数据的存储和检索服务。
- 作用:集群用于实现数据的分布式存储和处理。通过将数据分布到多个节点上,可以提高系统的可扩展性和容错能力。
(7)节点(Node)
- 定义:节点是Elasticsearch的一个运行实例。每个节点都可以参与到集群中,提供数据的存储和检索服务。
- 作用:节点是Elasticsearch的基本运行单元。通过将多个节点组成一个集群,可以实现数据的分布式存储和处理。
(8)映射(Mapping)
- 定义:映射定义了文档的结构和字段的类型。每个索引都有一个映射,用于描述该索引中的文档的结构和字段的类型。
- 作用:映射用于指导Elasticsearch如何存储和检索文档中的数据。通过定义文档的结构和字段的类型,可以确保数据的一致性和查询的效率。
(9)Elasticsearch vs 数据库
数据库概念 | ES概念 |
---|---|
数据库Database | 索引Index |
表Table | 类型Type,9.0版本后删除,现在默认都是_doc |
数据行Row | 文档Document |
数据列Column | 字段Field |
约束 Schema | 映射Mapping |
相关文章:

ElasticSearch01-概述
零、文章目录 ElasticSearch01-概述 1、Elastic Stack (1)简介 官网地址:https://www.elastic.co/cn/ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际…...
docker xxxx is using its referenced image ea06665f255d
Error response from daemon: conflict: unable to remove repository reference “registrxxxxxx” (must force) - container 9642fd1fd4a0 is using its referenced image ea06665f255d 这个错误表明你尝试删除的镜像正在被一个容器使用,因此无法删除。要解决这…...
Vue 2 中 v-text 和 v-html 指令的使用详解
目录 Vue 2 中 v-text 和 v-html 指令的使用详解 v-text 指令 简介 基本语法 示例 1:基础用法 特点 v-html 指令 简介 基本语法 示例 2:基础用法 注意事项 区别与选择指南 何时使用 最佳实践 Vue 2 中 v-text 和 v-html 指令的使用详解 V…...
高级Python游戏开发:创建一款多人对战坦克大战
在本教程中,我们将用Python的Pygame库开发一款高级的坦克大战游戏。这款游戏支持多人对战、碰撞检测、子弹射击以及地图障碍生成,适合作为学习Python高级游戏开发的练习项目。 一、游戏功能概述 多人对战模式:玩家可以操作坦克,在同一屏幕上互相攻击。子弹射击:坦克可以发…...

数据结构_拓扑排序
拓扑排序 (所有点按照先后顺序排序) 1.先找到入度为0的点,记录之后,删除这个点和它的出边; 2.若有两个可选,随便选择一个 例 a的入度为0,选a [a] 随便选一个 [a,e] 再找入度为0的点 再选c 最后选d 拓…...
Edge SCDN 边缘安全加速有什么用?
Edge SCDN是最新推出的边缘安全加速服务,它是一种融合了安全防护和内容分发加速功能的网络服务技术,通过在网络边缘部署服务器节点,来优化内容的传输和用户的访问体验,同时保障网络安全。 抵御 DDoS 攻击: Edge SCDN …...

被狗咬住怎么让它松口?
当遭遇狗咬住的惊险状况,保持冷静是首要原则,慌乱只会让事态愈发糟糕。因为狗能敏锐感知人类的情绪,你的镇定能避免它因你的恐惧而愈发兴奋或紧张。 切勿盲目地用力拉扯被咬住的部位。狗的咬合力颇为强大,强行拉扯可能致使伤口撕裂…...
MySQL迁移SQLite 借助PYTHON脚本
使用 Python 脚本将 MySQL 数据库迁移到 SQLite 是一种灵活且强大的方法。 下面是一个基本的脚本示例,使用 pandas 和 sqlite3 库来实现这一过程。 这个脚本假设你已经安装了 pandas 和 mysql-connector-python 库。 步骤 安装必要的库: 如果尚未安装ÿ…...
Python什么是动态调用方法?What is Dynamic Method Invocation? (中英双语)
什么是动态调用方法? 动态调用方法指通过方法或属性的名称,在运行时而非编译时调用对象的方法或访问其属性。换句话说,在编写代码时,方法名或属性名可以是变量,只有在程序运行时才能确定调用的内容。这种特性允许程序…...

Cesium中实现仿ArcGIS三维的动态图层加载方式
Cesium 加载 ArcGIS 动态图层的方式 如果你在 Cesium 中加载过 ArcGIS 的动态图层,你会发现,Cesium 对于动态图层仍然采用类似切片图层的逻辑进行加载。也就是每个固定的瓦片 export 一张图片。 这样会造成一些问题: 请求量大,…...

数据冒险、控制冒险、结构冒险
计算机组成原理 数据冒险、控制冒险、结构冒险 对所有用户(所有程序员)可见:PSW、PC、通用寄存器 PSW(条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)PC(跳转指令需要…...

TCA9555芯片手册解读(6)
接前一篇文章:TCA9555芯片手册解读(5) 二、详述 7. 上电复位 当电源(从0V)施加到VCC时,内部通电复位将TCA9555保持在复位状态,直到VCC达到VPOR。此时,重启条件被释放,T…...
NodeJs-fs模块
fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块, fs模块可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,内容的写入读取等以及文件夹相关操作 写入文件 异步写入 // 导入fs模块const f…...

Transformer: Attention Is All You Need (2017) 翻译
论文:Attention Is All You Need 下载地址如下: download: Transformer Attention Is All you need Attention Is All You Need 中文 《Attention Is All You Need》是《Transformer》模型的开创性论文,提出了一种全新的基于注意力机制的架构…...

【记录】Django解决与VUE跨域问题
1 梗概 这里记录Django与VUE的跨域问题解决方法,主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…...
Java 常见Exception异常解决方法
在Java编程中,异常处理是确保程序稳定性和健壮性的重要部分。了解常见的异常类型及其解决方法,可以帮助你编写更加健壮的代码。以下是一些常见的Java异常及其解决方法: NullPointerException:空指针异常 原因:尝试访问…...
东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南
东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南 文章目录 东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南 一 TongWeb V7二 Spring Boot JAR 配置文件三 修改 maven 依赖四 docker compose 启动项目五 查看 docker 信息 本文详细讲解了如何在 Docker 环境中…...

TIM输入捕获---STM
一、简介 IC输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…...

【笔记】架构上篇Day6 法则四:为什么要顺应技术的生命周期?
法则四:为什么要顺应技术的生命周期? 简介:包含模块一 架构师的六大生存法则-法则四:为什么要顺应技术的生命周期?&法则四:架构设计中怎么判断和利用技术趋势? 2024-08-29 17:30:07 你好&am…...
MSF(Metasploit Framework)
渗透测试中MSF是一个非常强大的工具,可以用来验证系统漏洞、执行攻击以及开发自定义的漏洞利用代码。以下是使用MSF进行渗透测试的基本步骤: 1.启动MSF 启动MSF控制台。 msfconsole2. 搜索漏洞 在MSF中搜索已知漏洞。 search <vulnerability nam…...

当SAP系统内计划订单转换为生产订单时发生了什么?
【SAP系统研究】 #SAP #计划订单 #生产订单 #采购申请 一、关于计划订单的一点疑惑 曾经对SAP为什么会有计划订单,是感到很疑惑的。 这个界面简单,配置点也不多,能被随意“摆布”,一旦要变形就消失得无影无踪的计划订单,why? 但是,再次重新审视过之后,才发现它其实…...

如何使用Jmeter进行压力测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬…...
分布式互斥算法
1. 概述:什么是分布式互斥 假设有两个小孩想玩同一个玩具(临界资源),但玩具只有一个,必须保证一次只有一个人能够玩。当一个小孩在玩时,另一个小孩只能原地等待,直到玩完才能轮到自己。这就是 …...

容器安全最佳实践:云原生环境下的零信任架构实施
📋 目录 引言:容器安全的重要性零信任架构基础理论云原生环境的安全挑战容器安全威胁模型分析零信任架构在容器环境中的实施关键技术组件与工具安全策略与最佳实践监控与响应机制案例研究与实施路径未来发展趋势 引言 随着容器技术和云原生架构的快速…...

9.axios底层原理,和promise的对比(2)
😺😺😺 和promise的对比 完全可以直接使用 Promise 来发 HTTP 请求,比如用原生 fetch Promise 就可以实现网络请求功能👇 ✅ 用 Promise fetch 的写法(原生) fetch(‘https://api.example.c…...
Vue Fragment vs React Fragment
文章目录 前言🧩 一、概念对比:Vue Fragment vs React Fragment📦 二、使用示例对比✅ Vue 3 中使用 Fragment✅ React 中使用 Fragment 🔍 三、差异解析1. **使用方式**2. **传递属性(如 key)**3. **插槽系…...
微信小程序带参分享、链接功能
分享链接的功能是右上角点...然后复制链接,可以直接点击 #小程序://**商城/p5XqHti******* 这种链接直接从其他地方跳转到小程序 wx.onCopyUrl(() > {return {query: "shareCode" this.shareCode,}; }); query就是参数,直接在onload里…...
phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型
一、软件介绍 文末提供程序和源码下载 phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型。 二、Overview 概述 🕹️ Control your robot with the keyboard, a leader arm, a Meta Quest headset or via API 🕹️…...

echarts柱状图实现动态展示时报错
echarts柱状图实现动态展示时报错 1、问题: 在使用Echarts柱状图时,当数据量过多,x轴展示不下的时候,可以使用dataZoom实现动态展示。如下图所示: 但是当鼠标放在图上面滚动滚轮时或拖动滚动条时会报错,…...
在 Kali 上打造渗透测试专用的 VSCode 环境
Kali Linux 是渗透测试领域的首选操作系统,搭配一款高效的代码编辑器可以显著提升工作效率。Visual Studio Code(VSCode)以其轻量、强大的扩展性和跨平台支持,成为许多安全研究者的选择。本文将详细介绍如何在 Kali Linux 上安装 …...