Elasticsearch超详细笔记
Elasticsearch超详细笔记
引言:
本文主要分享了有关Elasticsearch(简称ES)的知识,包括:ES的简介、基本概念、倒序索引、ES的安装以及使用、Kibana可视化工具的安装与使用、分词的使用、使用可视化工具Kibana实现索引和文档的增删查改、以及一些高级的ES查询,如:批量获取文档信息、使用Bulk API实现批量操作、采用乐观锁机制实现并发控制、Mapping、通用查询(分词查找、短语查询、返回指定字段、高亮查询、范围查询 )、Bool过滤查询、范围查询、聚合查询等等;
文章目录
- Elasticsearch超详细笔记
- 1. Elasticsearch简介
- 1.1 衍生的开源软件
- 1.2 ES特性
- 1.3 ES核心概念
- 1.4 结构化数据与非结构化数据
- 1.5 倒排索引
- 2. ES的安装使用
- 2.1 安装
- 2.2 启动
- 2.3 ES端口
- 2.4 可视化工具Kibana
- 2.4.1 下载安装Kibana
- 2.4.2 配置
- 2.4.3 启动Kibana
- 2.5 集成Ikanalyzer
- 2.5.1 下载安装Ikanalyzer
- 2.5.2 两种分词模式
- 2.5.3 测试分词_细粒度拆分
- 2.5.4 测试分词_粗粒度拆分
- 2.5.5 自定义分词库
- 3. 使用Kibana实现增删查改
- 3.1 创建索引
- 3.2 查看索引
- 3.3 添加文档
- 3.4 查询文档
- 3.5 修改文档
- 3.6 删除文档
- 4. 批量获取文档信息
- 4.1 获取多个索引下面的多个文档对象
- 4.2 指定具体的字段
- 4.3 简化批量获取的方式
- 5. 使用Bulk API实现批量操作
- 5.1 批量添加
- 5.2 批量查询
- 5.3 批量删除
- 5.4 注意事项
- 6. 采用乐观锁机制实现并发控制
- 6.1 内部版本
- 6.2 外部版本
- 7. Mapping
- 8. 通用查询
- 8.1 准备数据
- 8.2 精确查找
- 8.2.1 查询某个字段里含有某个关键词的文档
- 8.2.2 查询某个字段里含有多个关键词的文档
- 8.3 设值返回的条数
- 8.4 设值返回的版本
- 8.5 分词查找
- 8.6 指定多个字段进行查询
- 8.7 短语查询
- 8.8 指定返回的字段
- 8.9 排序
- 8.10 前缀匹配
- 8.11 范围查询
- 8.12 通配符
- 8.13 高亮查询
- 9. Bool过滤查询
- 10. 范围查找
- 11. 聚合查询
- 11.1 求和
- 11.2 最小值
- 11.3 最大值
- 11.4 平均值
- 11.5 求基数
- 11.6 分组
1. Elasticsearch简介
Elasticsearch 是一个开源的搜索引擎, 建立在全文搜索引擎库 Apache Lucene 基础上;内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTFUL API;
Elasticsearch 不仅仅只是一个全文搜索引擎是一个分布式的实时文档存储,每个字段可以被索引与搜索可以作数据库用;还是一个分布式实时分析搜索引擎,能胜任上百个服务节点的扩展,并支持PB级别(大数据级别)的结构化(定死的,进去多少出来多少,多余的全部抛弃)或者非结构化数据(只需要直到其属性即可);
1.1 衍生的开源软件
- Elasticsearch :分布式搜索引擎
- Logstash:日志的采集与解析工具
- Kibana:可视化分析平台
- Beats:数据采集工具家族(替换Logstash)
- X-Pack:功能包
1.2 ES特性
- 速度快、易扩展、弹性、灵活、操作简单、多语言客户端
- 分布式:横向扩展非常灵活
- 全文检索:基于lucene的强大的全文检索能力;
- **近实时搜索和分析:**数据进入ES,可达到近实时搜索,还可进行聚合分析
- 高可用:容错机制,自动发现新的或失败的节点,重组和重新平衡数据
- 模式自由:ES的动态mapping机制可以自动检测数据的结构和类型,创建索引并使数据可搜索。
- RESTful API:JSON + HTTP
1.3 ES核心概念
Near Realtime(NRT) 近实时:数据提交索引后,立马就可以搜索到。
Cluster 集群:一个集群由一个唯一的名字标识,默认为“elasticsearch”。集群名称非常重要,具有相同集群名的节点才会组成一个集群。集群名称可以在配置文件中指定。
Node 节点:存储集群的数据,参与集群的索引和搜索功能。像集群有名字,节点也有自己的名称,默认在启动时会以一个随机的UUID的前七个字符作为节点的名字,你可以为其指定任意的名字。通过集群名在网络中发现同伴组成集群。一个节点也可是集群。
Index 索引:一个索引是一个文档的集合(等同于solr中的集合)。每个索引有唯一的名字,通过这个名字来操作它。一个集群中可以有任意多个索引。Type 类型:指在一个索引中,可以索引不同类型的文档,如用户数据、博客数据。从6.0.0 版本起已废弃,一个索引中只存放一类数据。
Document 文档:被索引的一条数据,索引的基本信息单元,以JSON格式来表示。
Shard 分片:在创建一个索引时可以指定分成多少个分片来存储。每个分片本身也是一个功能完善且独立的“索引”,可以被放置在集群的任意节点上。分片的好处:允许我们水平切分/扩展容量、可在多个分片上进行分布式的、并行的操作,提高系统的性能和吞吐量。
注意:分片数创建索引时指定,创建后不可改了。备份数可以随时改。
Replication 备份: 一个分片可以有多个备份(副本)。备份的好处:高可用。一个主分片挂了,副本分片就顶上去
扩展搜索的并发能力、吞吐量。搜索可以在所有的副本上并行运行。-高并发下副本也可搜索
1.4 结构化数据与非结构化数据
平时的数据可以分为结构化数据和非结构化数据:
- 结构化数据是指格式和长度固定的数据,如一个人的年龄,姓名等;
- 非结构化数据是指格式和长度不固定的数据,如一个文章的内容等;
对于结构化数据,可以存储在DB中通过精确匹配找到。但是对于非结构化数据,一般查询时只能提供查询的局部信息或模糊信息,传统数据库无法根据这些信息进行查询,效率差;
1.5 倒排索引
倒排索引是相对于正排索引而言的,可以有效的解决该问题;
正排索引可以通过id查找到对应的文章,但是无法通过给的部分内容如elasticsearch,找出含有该关键字的文档。
倒排索引会先对文档进行分析将其拆分成单个Term, 并存储包含该Term的文档id,这样便可以实现通过内容查找对应文档,如包含elasticsearch的文档为文档1;
倒排索引的过程:
- 通过倒排索引获得“搜索引擎”对应的文档id列表,有1和3;
- 通过正排索引查询1和3的完整内容;
- 返回最终结果;
2. ES的安装使用
2.1 安装
官网下载地址: https://www.elastic.co/downloads/elasticsearch
推荐到华为云镜像下载:https://mirrors.huaweicloud.com/
JDK版本: 1.8
2.2 启动
解压安装包,进入bin目录中双击elasticsearch.bat等待启动完毕;
打开浏览器,输入 http://localhost:9200 出现以下画面,说明ES安装成功;
2.3 ES端口
- 9300端口: ES节点之间通讯使用,9300是tcp通讯端口,集群间和TCPClient 都走它;
- 9200端口: ES节点和外部通讯使用,9200是http协议的RESTful接口;
2.4 可视化工具Kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,同时也能执行高级的数据分析,并能以图表、表格和地图的形式查看数据 ;
2.4.1 下载安装Kibana
下载安装包,需要和ES版本匹配,下载完毕后安装到相应的目录就行;
下载地址:https://www.elastic.co/downloads/kibana
2.4.2 配置
在目录config/kibana.yml中配置 elasticsearch.hosts: 的值为ES的访问地址;
2.4.3 启动Kibana
双击bin/kibana.bat
- 访问地址:http://localhost:5601
2.5 集成Ikanalyzer
IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包;从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化;
2.5.1 下载安装Ikanalyzer
获取 ES-IKAnalyzer插件,需要和ES版本一致;
将ik的压缩包解压到 ES安装目录的plugins/目录下(新建文件夹analysis-ik),重启ES;
下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases
2.5.2 两种分词模式
Ik分词器有ik_max_word和ik_smart两种模式:
- ik_max_word:会将文本做最细粒度的拆分;
- ik_smart:会做最粗粒度的拆分;
2.5.3 测试分词_细粒度拆分
{
"text":"我爱学习,最爱学Java",
"analyzer":"ik_max_word"
}
2.5.4 测试分词_粗粒度拆分
{
"text":"我爱学习,最爱学Java",
"analyzer":"ik_smart"
}
2.5.5 自定义分词库
首先在IKAnalyzer.cfg.xml里面定义自定义的字典,我这里是main.dic(自己随意命名);
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">main.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
3. 使用Kibana实现增删查改
3.1 创建索引
PUT /kak
{"settings": {"index":{"number_of_shards":5,"number_of_replicas":3}}
}
3.2 查看索引
#查看单个
GET /kak/_settings
#查看所有
GET /_all/_settings
- 1
- 2
- 3
- 4
3.3 添加文档
PUT /kak/student/1
{"name":"kaka","sex":"man","age":23,"score":100
}
POST /kak/student/2
{"name":"taotao","sex":"woman","age":23,"score":100
}
3.4 查询文档
GET /kak/student/1
GET /kak/student/_search
3.5 修改文档
PUT方法:存在就修改,不存在就新增;
PUT /kak/student/1
{"name":"kaka","sex":"man","age":23,"score":150
}
3.6 删除文档
#删除单个
DELETE /kak/student/2
#删除全部
DELETE /kak
4. 批量获取文档信息
创建索引、添加文档
PUT kak_01
PUT kak_01/student/1
{"name":"kaka","age":23,"sex":"man"
}
PUT kak_01/student/2
{"name":"zhuangzhuang","age":23,"sex":"woman"
}
PUT kak_02
PUT kak_02/student/1
{"name":"zhangsan","age":23,"sex":"man"
}
PUT kak_02/student/2
{"name":"lisi","age":23,"sex":"woman"
}
4.1 获取多个索引下面的多个文档对象
GET /_mget
{"docs":[{"_index": "kak_01","_type": "student","_id": 1},{"_index": "kak_01","_type": "student","_id": 2}]
}
4.2 指定具体的字段
GET /_mget
{"docs":[{"_index":"kak_01","_type":"student","_id":1,"_source":["name","age"]},{"_index":"kak_01","_type":"student","_id":2,"_source":["name","age","sex"]}]
}
4.3 简化批量获取的方式
GET /kak_01/student/_mget {"docs":[{"_id":1},{
<span class="token string">"_id"</span>:2 <span class="token punctuation">}</span> <span class="token punctuation">]</span>
}
5. 使用Bulk API实现批量操作
语法格式:
{action:{metadata}}
{requstbody}
action:(行为)
- create:文档不存在时创建
- update:更新文档
- index:创建新文档或替换已有文档
- delete:删除一个文档
create 和index的区别:
- 如果数据存在,使用create操作失败,会提示文档已经存在;
- 如果数据存在,使用index则可以成功执行;
5.1 批量添加
POST kak_01/student/_bulk
{"index":{"_id":3}}
{"name":"kak_03","age":23,"sex":"woman"}
{"index":{"_id":4}}
{"name":"kak_04","age":23,"sex":"woman"}
{"index":{"_id":5}}
{"name":"kak_05","age":23,"sex":"man"}
5.2 批量查询
GET kak_01/student/_mget
{"ids":[1,2,3]
}
5.3 批量删除
POST kak_01/student/_bulk
{"delete":{"_index":"kak_01","_type":"student","_id":4}}
{"delete":{"_index":"kak_01","_type":"student","_id":5}}
5.4 注意事项
操作的大小建议:
Bulk会把将要处理的数据载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值取决于硬件;
- 一般建议是1000-5000个文档,大小建议是5-15MB,默认不能超过100M,可以在ES的配置文件($ES_HOME下的config下的elasticsearch.yml)中设置;
6. 采用乐观锁机制实现并发控制
6.1 内部版本
ElasticSearch采用了乐观锁来保证数据的一致性,当用户对document进行操作时,并不需要对该document作加锁和解锁的操作,只需要指定要操作的版本;当版本号一致时,ElasticSearch会允许该操作顺利执行,当版本号存在冲突时,ElasticSearch会提示冲突并抛出异常(VersionConflictEngineException异常);
- ElasticSearch的版本号的取值范围为1到2^63-1。
- 使用的是_version(每修改一个版本加一)
6.2 外部版本
Elasticsearch在处理外部版本号时会与对内部版本号的处理有些不同。它不再是检查version是否与请求中指定的数值相同,而是检查当前的version是否比指定的数值小。如果请求成功,那么外部的版本号就会被存储到文档中的version中。为了保持version与外部版本控制的数据一致使用version_type=external ;
7. Mapping
查看自动生成的映射情况
GET kak_01/_mapping
- 1
核心数据类型:
字符型:string
string类型包括,text 和 keyword
- text类型被用来索引长文本,在建立索引前会将这些文本进行分词,转化为词的组合,建立索引。允许es来检索这些词语。text类型不能用来排序和聚合。
- Keyword类型不需要进行分词,可以被用来检索过滤、排序和聚合。
- keyword 类型字段只能用本身来进行检索
数字型:long, integer, short, byte, double, float
日期型:date
布尔型:boolean
二进制型:binary
关键的属性:
“index”: true分词,false不分词,设置成false,字段将不会被索引;
“analyzer”:"ik"指定分词器,默认分词器为standard analyzer
PUT /lib
{"settings":{"number_of_shards" : 3,"number_of_replicas" : 0},"mappings":{"properties":{"title":{"type":"text"},"name":{"type":"text","analyzer":"standard"},"publish_date":{"type":"date","index":false},"price":{"type":"double"}}}
}
- 定义Mapping没有类型,之前能写进去是因为通过PUT,放文档放进去的;
8. 通用查询
8.1 准备数据
PUT /lib2
{"settings":{"number_of_shards" : 3,"number_of_replicas" : 0},"mappings":{"properties":{"name": {"type":"text"},"address": {"type":"text"},"age": {"type":"integer"},"interests": {"type":"text"},"birthday": {"type":"date"}}}
}
PUT /lib2/_doc/1
{"name" : "kak","address" : "sx","age" : 32,"interests" : "java,music","birthday": "1988-08-08"
}
PUT /lib2/_doc/2
{
“name” : “taotao”,
“address” : “sz”,
“age” : 33,
“interests” : “java,music,money”,
“birthday”: “1983-08-08”
}
PUT /lib2/_doc/2
{
“name” : “taotao”,
“address” : “sz”,
“age” : 33,
“interests” : “java,music,money”,
“birthday”: “1983-08-08”
}
8.2 精确查找
term查询
8.2.1 查询某个字段里含有某个关键词的文档
GET /lib2/_search/
{"query": {"term": {"name": {"value": "kak"}}}
}
8.2.2 查询某个字段里含有多个关键词的文档
GET /lib2/_search/
{"query": {"terms": {"interests": ["java","music"]}}
}
8.3 设值返回的条数
GET /lib2/_search
{"from": 0,"size": 2,"query": {"terms": {"interests": ["java","music"]}}
}
8.4 设值返回的版本
GET /lib2/_search
{"version": true,"from":0,"size": 2,"query": {"terms": {"interests": ["java","money"]}}
}
8.5 分词查找
match query知道分词器的存在,会对filed进行分词操作,然后再查询
GET /lib2/_search
{"query": {"match": {"name": "kak helloworld"}}
}
8.6 指定多个字段进行查询
GET /lib2/_search
{"query": {"multi_match": {"query": "java","fields": ["interests","name"]}}
}
8.7 短语查询
ElasticSearch引擎首先分析查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,并且保证各个分词的相对位置不变
GET /lib2/_search
{"query": {"match_phrase": {"interests": "java,music"}}
}
8.8 指定返回的字段
GET /lib2/_search
{"_source": ["address","name"],"query": {"match": {"interests": "java"}}
}
8.9 排序
GET /lib2/_search
{"query": {"match_all": {}},"sort": [{"age": {"order": "desc"}}]
}
8.10 前缀匹配
GET /lib2/_search
{"query": {"match_phrase_prefix": {"name": {"query": "kak"}}}
}
8.11 范围查询
GET /lib2/_search
{"query": {"range": {"birthday": {"from": "1988-08-08","to": "2020-08-08","include_lower": true,"include_upper": false}}}
}
8.12 通配符
允许使用通配符* 和 ?来进行查询:
- *代表0个或多个字符
- ?代表任意一个字符
GET /lib2/_search
{"query": {"wildcard": {"name": "kak*"}}
}
8.13 高亮查询
GET /lib2/_search
{"query": {"match": {"interests": "java"}},"highlight": {"fields": {"interests": {}}}
}
9. Bool过滤查询
- 可以实现组合过滤查询
- must:必须满足的条件(and)
- should:可以满足也可以不满足的条件(or)
- must_not:不需要满足的条件(not )
GET /lib2/_search
{"post_filter": {"bool": {"should":[{"term":{"age":32}},{"term":{"interests":"java"}}],"must_not":{"term":{"age":90}}}}
}
GET /lib2/_search
{"post_filter": {"bool": {"must":[{"term":{"age":32}},{"term":{"interests":"java"}}]}}
}
10. 范围查找
- gt:>
- lt: <
- gte: >=
- lte: <=
GET /lib2/_search
{"post_filter": {"range": {"age": {"gte": 10,"lte": 32}}}
}
11. 聚合查询
11.1 求和
sum:求和
GET /lib2/_search
{"size": 0,"aggs": {"agesum": {"sum": {"field": "age"}}}
}
11.2 最小值
min:最小值
GET /lib2/_search
{"size": 0,"aggs": {"agemin": {"min": {"field": "age"}}}
}
11.3 最大值
- max:最大值
GET /lib2/_search
{"size": 0,"aggs": {"agemax": {"max": {"field": "age"}}}
}
11.4 平均值
- avg:平均值
GET /lib2/_search
{"size": 0,"aggs": {"ageavg": {"avg": {"field": "age"}}}
}
11.5 求基数
- cardinality:基数(互不相同的值的个数 )
GET /lib2/_search
{"size": 0,"aggs": {"agecardinality": {"cardinality": {"field": "age"}}}
}
11.6 分组
- terms:分组
GET /lib2/_search
{"size": 0,"aggs": {"ageterms": {"terms": {"field": "age"}}}
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 北航计算机学院往年夏令营+考研面试题目汇总
以下是我在网络上找到的北航计算机学院往年面试题目,将其汇总到一篇文章,如果大家找到新的,欢迎大家在评论区提醒我,我会不断补充。 18夏令营面试 计算机是如何启动的:BIOS->主引导记录->硬盘启动->操作系统…...
2024/4/6 6:25:17 - docker下载镜像新建容器打包容器打包tar加载tar
首先查看下现有的容器和image docker ps #已启动的所有容器 docker ps -a #所有容器,包括未启动的 docker images #当前已有的镜像 一、查找images 例:查找nvidia相关的image [rootlocalhost ~]# docker search -s 10 nvidia Flag --stars has …...
2024/4/6 6:25:16 - 学好Python让你薪资休息两不误!!
疫情爆发的前两个月,中国约有500万人因此失业。 疫情里最好笑的心酸莫过于 “因为疫情无法工作 却发现公司的事儿,有我没我都成。” 青年失业,也许还有重新再来的勇气,还能怨天尤人一番再重新上路,只是锐气已消磨大…...
2024/4/6 6:25:15 - 颈椎按摩仪办理CE认证要多长时间
CE认证是什么? 它是欧盟强制性认证,出口欧盟成员国的产品必须有CE证书才能清关,而CE证书也是欧盟所有成员国通用的证书!那么做CE认证流程是怎样的?CE认证时间要多久?做CE认证要多少钱?做CE认证…...
2024/4/6 10:09:31 - LeetCode(python3) #53 最大子序和
#53 最大子序和解法一.解题思路二.代码展示三.总结其他一.解题思路 说明:我傻眼了好吧,一开始用暴力解法,结果超时了…由于算法底子不行就去看大佬们的题解,结果就是动态规划?分治法?贪心算法?…...
2024/4/6 10:09:30 - 转载:机器视觉中使用深度学习所面临的对抗攻击——Survey(上)
前言 本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删! 这篇博客记录大部分来自一篇Survey,文章总结了目前…...
2024/4/16 13:56:16 - 【Ubuntu美化】zsh和oh-my-zsh的安装与配置(基于Ubuntu16.04)
前言 shell的类型有很多种,linux下默认的是bash,虽然bash的功能已经很强大,但对于以懒惰为美德的程序员来说,bash的提示功能不够强大,界面也不够炫,并非理想工具。 而zsh的功能极其强大,只是配…...
2024/4/6 10:09:28 - 转载:机器视觉中使用深度学习所面临的对抗攻击——Survey(下)
前言 本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删! 这篇博客记录大部分来自一篇Survey,文章总结了目前…...
2024/4/6 10:09:27 - JUC面试题
JUC level_1 1.并发与并行, 线程与进程的概念 并行:指两个或多个事件在同一时刻发生(同时执行)并发:指两个或多个事件在同一个时间段内发生(交替执行)进程:是指一个内存中运行的应用程序 , 每个进程都有一个独立的内存空间 , 一个应用程序可以同时运行多个进程;进程也是程序…...
2024/4/19 15:09:56 - 前端学习路线
前言 通过对前端知识进行一个评级,确定现在阶段,然后提供清晰的学习路线,完成进阶。希望可以通过这篇文章,可以帮助大家少走弯路。 目标: 了解自己的实力 明确不同阶段的学习路线 大纲 对前端知识进行一次评级 …...
2024/4/6 10:09:26 - 计算机专业保研面试复习笔记——计算机网络
文章目录三种协议五层协议应用层(对应七层协议中的应用层、表示层、会话层)运输层传输控制协议TCP用户数据报协议UDP网络层数据链路层物理层概念汇总对等层协议栈实体协议域名系统HTTPHTTP中GET和POST的区别TCP与UDPTCPUDPTCP与UDP的区别TCP实现可靠传输…...
2024/4/6 10:09:25 - VMware Ubuntu安装教程(详细过程)
转存,来自https://blog.csdn.net/u013142781/article/details/50529030 不是每一个程序员都必须玩过linux,只是博主觉得现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣&#x…...
2024/4/6 10:09:23 - 遇算法hard题有人三连跪,有人一套模板解出三题!
一位小伙伴反馈,因为没做好算法hard题,字节HR反馈说面试官当场给出了“差评”于是与offer完美地错过了。 事实上,如果你想面阿里,字节等大厂,今年碰到算法hard题的几率是非常大的。 算法难度增加,变形题越…...
2024/5/4 21:41:18 - 【Android珍藏】推荐10个炫酷的开源库
https://juejin.im/post/6844903640927322126 前言 技术群里面经常有人问到一些炫酷的UI效果实现方法,有时候我都是给一个相同或者相似效果的Github链接,有同学私信给我说,大佬,怎么这些效果你都能找到?你是怎么搜索…...
2024/4/25 11:51:59 - 卧槽!Intellij IDEA中竟然有这么多炫酷的插件,爱了爱了
推荐阅读: 这套Github上40Kstar学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL 成神之路PDF,终于开源了 今天,给大家…...
2024/4/6 10:09:20 - 今年天猫双11从光棍节变成双节棍:可买4天,11月1日开买
10月20日,天猫正式发布新一代「天猫双11全球狂欢季」,代号:双节棍。 此次升级最大的变化是:不只在11月11日一天爆发,消费者可分两波购买,11月1日-3日是第一波,11月11日为第二波。 这意味着&am…...
2024/4/6 10:09:19 - webservice报错问题
webservice报错问题 org/apache/commons/discovery/tools/DiscoverSingleton 是编写的调用web service服务器的客户端程序编译时出错。 Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton 我也遇到这个问…...
2024/4/14 15:09:33 - PyQt4 的信号与槽机制改写为兼容 PyQT5 的形式
PyQt4 的信号与槽机制改写为兼容 PyQT5 的形式 记录博文 一、前言 PyQt4 到 PyQt5 还是改了很多东西的,特别是信号与槽的机制。 比如: # PyQt4 self.connect(buttonBox, SIGNAL("accepted()"),self, SLOT("accept()"))# PyQt5 b…...
2024/4/18 17:23:44 - 阳澄湖旅游攻略(第一篇)
简介: 旅游方式:自驾游时长:1天出发地:上海人数:4大2小 行程安排:...
2024/4/6 10:09:16 - 零基础想要做好人物角色模型,先了解人体的构造!快来康康
3D建模的应用领域非常广,比如建筑工程等等,游戏设计过程中的3D设计是指把游戏原画设计出来的场景、角色、道具等等,利用三维技术设计成3D模式,以满足3D游戏的需求。从侧面来看,随着游戏产业的发展,游戏的整…...
2024/4/17 7:19:43
最新文章
- CSS-盒子模型元素溢出
作用:控制溢出的元素的内容的显示方式 属性:overflow 属性值 属性值效果hidden溢出隐藏scroll溢出滚动(无论是否溢出,都显示滚动条位置)auto溢出滚动(溢出才显示滚动条位置) <!DOCTYPE html&…...
2024/5/8 21:09:20 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - C# 构建可定时关闭的异步提示弹窗
C# 构建可定时关闭的异步提示弹窗 引言1、调用接口的实现2、自动定时窗口的实现 引言 我们在最常用最简单的提示弹框莫过于MessageBox.Show( )的方法了,但是使用久了之后,你会发现这个MessageBox并不是万能的,有事后并不想客户去点击&#x…...
2024/5/7 15:39:44 - 54.螺旋矩阵
题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2:输入:matrix …...
2024/5/8 11:31:17 - JAVA------基础篇
java基础 1.JDK JDK :java development kit JRE:java runtime environment JDK包含JRE java跨平台:因为java程序运行依赖虚拟机,虚拟机需要有对应操作系统的版本,而jre中有虚拟机。 当你想要在Linux系统下运行,则需要…...
2024/5/7 21:20:42 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/8 19:32:33 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/7 22:31:36 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/8 1:37:40 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/8 20:33:13 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/8 1:37:39 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/7 16:57:02 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/7 14:58:59 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/8 20:58:56 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/7 21:15:55 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/8 1:37:35 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/7 16:05:05 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/8 18:06:50 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/8 1:37:32 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/7 16:05:05 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/8 1:37:31 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/8 1:37:31 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/8 12:44:41 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/8 9:51:44 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/8 1:37:29 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/7 17:09:45 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57