es简单入门

在这里插入图片描述
                       星光下的赶路人star的个人主页

                      努力努力再努力

文章目录

    • 1、简介
    • 2、使用场景
    • 3、基本知识
    • 4、中文文档和官网链接
    • 5、增删改查(php代码)
    • 6、基本查询
    • 7、HTTP操作
      • 7.1 索引操作
        • 7.1.1 创建索引
      • 7.2 文档操作
        • 7.2.1 创建文档
        • 7.2.2 查看文档
        • 7.2.3 修改文档
        • 7.2.4 修改字段
        • 7.2.5 删除文档
        • 7.2.6 条件删除文档
      • 7.3 映射操作
      • 7.4 高级查询

1、简介

elasticsearch是一个开源的分布式搜索引擎,能够快速地处理大量数据,并能够实时查询,可广泛应用于实时数据分析、日志分析、企业信息发现等领域。elasticsearch提供的数据聚合功能能够变革我们对数据分析和业务理解的认识,除了实现基础的搜索外,还可以将多种聚合方式应用到搜索结果中,为我们提供有效的数据支持。elasticsearch还具备诸多便于开发、维护和优化的优势:高可扩展性、实时查询、支持多语言、自动故障转移、监控和管理工具等等。

2、使用场景

  • 全文搜索
  • 实时数据分析
  • 日志分析
  • 企业信息发现
  • 数据挖掘与探索
  • 网站搜索和统计

3、基本知识

  • elasticsearch的基本操作
  • 增删改查(Create, Retrieve, Update, Delete)操作的实现。
  • 数据类型的映射
  • elasticsearch会自动将任意数据类型映射到一个适合的内部数据类型,但是我们也可以手动指定不同字段的数据映射。
  • 索引和分析器
  • 在elasticsearch中,我们需要进行数据索引和分析操作,以便更快速、准确地进行数据查询。
  • 倒排索引
  • elasticsearch的核心功能在于倒排索引,这种数据结构能够帮助我们快速地进行全文搜索操作,同时还支持对文本的分词、过滤、改变权重等操作。

4、中文文档和官网链接

中文文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

官网:https://www.elastic.co/

5、增删改查(php代码)

//增
$params = [
    'index' => 'my_index',
    'body' => [
        'my_field' => 'my_value',
        'my_second_field' => 'my_second_value'
    ]
];
$response = $client->index($params);

// 删
$params = [
    'index' => 'my_index',
    'id' => 'my_id'
];
$response = $client->delete($params);

// 改
$params = [
    'index' => 'my_index',
    'id' => 'my_id',
    'body' => [
        'doc' => [
            'my_field' => 'my_updated_value'
        ]
    ]
];
$response = $client->update($params);

// 查
$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'my_field' => 'my_value'
            ]
        ]
    ]
];
$response = $client->search($params);

6、基本查询

  • 全文搜索
  • match查询、multi_match查询等。
  • 精确匹配
  • term查询、terms查询等。
  • 范围匹配
  • range查询、geo_distance查询等。
  • 多重查询
  • bool查询、 const_score查询等。

7、HTTP操作

7.1 索引操作

7.1.1 创建索引

对比关系型数据库,创建索引就等同于创建数据库。

(1)创建索引

在 Postman 中,向 ES 服务器发 PUT 请求 :192.168.241.102:9200/start

请求后,服务器返回响应

{
 "acknowledged"【响应结果】: true, # true 操作成功
 "shards_acknowledged"【分片结果】: true, # 分片操作成功
 "index"【索引名称】: "shopping"
}
  • 创建索引库的分片数默认 1 片,在 7.0.0 之前的 Elasticsearch 版本中,默认 5 片。

(2)查看所有索引

在 Postman 中,向 ES 服务器发 GET 请求 :192.168.241.102:9200/_cat/indices?v

  • _cat表示查看
  • indices 表示索引

请求后,服务器返回响应

health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   start MECTRqmrS4WGt87pgua8SA   1   1          0            0       225b           225b
  • health :当前服务器健康状态: green**(集群完整) yellow(单点正常、集群不完整) red(单点不正常)。
  • status :索引打开、关闭状态。
  • index :索引名
  • uuid:索引统一编号。
  • pri :主分片数量。
  • rep:副本数量。
  • docs.count:可用文档数量。
  • docs.deleted:文档删除状态(逻辑删除)。
  • store.size :主分片和副分片整体占空间大小。
  • pri.store.size :主分片占空间大小。

(3)查看单个索引

在 Postman 中,向 ES 服务器发 GET 请求 :192.168.241.102:9200/start

请求后,服务器返回响应

{
    "start": {  // 索引名
        "aliases": {}, // 别名
        "mappings": {}, // 映射
        "settings": { // 设置
            "index": { // 设置-索引
                "routing": { 
                    "allocation": {
                        "include": {
                            "_tier_preference": "data_content"
                        }
                    }
                },
                "number_of_shards": "1", // 设置 - 索引 - 主分片数量
                "provided_name": "start", // 设置 - 索引 - 名称
                "creation_date": "1704071863227", // 创建日期
                "number_of_replicas": "1",  // 设置 - 索引 - 副分片数量
                "uuid": "MECTRqmrS4WGt87pgua8SA", // 设置 - 索引 - 唯一标识
                "version": { // 设置 - 索引 - 版本
                    "created": "8020099"
                }
            }
        }
    }
}

(4)删除索引

在 Postman 中,向 ES 服务器发 DELETE 请求 :192.168.241.102:9200/start

请求后,服务器返回响应

{
    "acknowledged": true
}

重新访问索引时,服务器返回响应:索引不存在

7.2 文档操作

7.2.1 创建文档

索引已经创建好了,接下来来创建文档,并添加数据。这里的文档可以类比为关系型数

据库中的表数据,添加的数据格式为 JSON 格式。

在 Postman 中,向 ES 服务器发 POST 请求 :http://192.168.241.102:9200/start/_doc

请求体内容为:

{
    "title":"羽毛球拍",
    "brand":"李宁",
    "color":"银色",
    "price":"2999"
}

请求后,服务器返回响应

{
    "_index": "start", // 索引
    "_id": "JpLLxIwBtU7A05AkWzsQ", // 唯一标识 (这种请求方式是随机生成,也可以在url后面加自定义标识)
    "_version": 1, // 版本
    "result": "created", // 表示创建成功
    "_shards": { // 分片
        "total": 2, // 总数
        "successful": 1, // 成功
        "failed": 0 // 失败
    },
    "_seq_no": 0,
    "_primary_term": 1
}
  • 此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误。
  • 如果增加数据时明确数据主键,那么请求方式也可以为 PUT。
  • 自定义标识:http://192.168.241.102:9200/start/_doc/1
7.2.2 查看文档

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询。

在 Postman 中,向 ES 服务器发 GET 请求 :http://192.168.241.102:9200/start**/_doc/**JpLLxIwBtU7A05AkWzsQ

请求后,服务器返回响应

{
    "_index": "start", // 索引
    "_id": "JpLLxIwBtU7A05AkWzsQ", // 标识
    "_version": 2,
    "_seq_no": 1,
    "_primary_term": 1,
    "found": true, //查询结果:true标识找到,false表示未找到
    "_source": { // 文档源信息
        "title": "羽毛球拍",
        "brand": "李宁",
        "color": "银色",
        "price": "2999"
    }
}
7.2.3 修改文档

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖

在 Postman 中,向 ES 服务器发 POST 请求 :http://192.168.241.102:9200/start/_doc/JpLLxIwBtU7A05AkWzsQ

请求体内容为

{
    "title":"羽毛球拍",
    "brand":"李宁",
    "color":"白色",
    "price":"2999"
}

修改成功后,服务器响应结果

{
    "_index": "start",
    "_id": "JpLLxIwBtU7A05AkWzsQ",
    "_version": 3, // 版本
    "result": "updated", // 结果“updated表示数据被更新
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 3,
    "_primary_term": 1
}
7.2.4 修改字段

修改数据时,也可以只修改某一给条数据的局部信息

在 Postman 中,向 ES 服务器发 POST 请求 :http://192.168.241.102:9200/start/_update/JpLLxIwBtU7A05AkWzsQ

请求体内容为

{ 
 "doc": {
 "price":3999.00
 } 
}

修改成功后,服务器响应结果

{
    "_index": "start",
    "_id": "JpLLxIwBtU7A05AkWzsQ",
    "_version": 4,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 4,
    "_primary_term": 1
}

根据唯一性标识,查询文档数据,文档数据已经更新。

7.2.5 删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

在 Postman 中,向 ES 服务器发 DELETE 请求 :http://192.168.241.102:9200/start/_doc/JpLLxIwBtU7A05AkWzsQ

删除成功,服务器响应结果

{
    "_index": "start",
    "_id": "JpLLxIwBtU7A05AkWzsQ",
    "_version": 5, // 版本(对数据的操作都会更新版本)
    "result": "deleted", // 结果 deleted表示数据被标记为删除
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 5,
    "_primary_term": 1
}
  • 删除后再查询当前文档信息会返回一个json中字段found的值为false。
  • 如果删除一个并不存在的文档会返回一个json中字段result的值为not_found。
7.2.6 条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数

据进行删除。

向 ES 服务器发 POST 请求 :http://192.168.241.102:9200/start/_delete_by_query

请求体内容为:

{
 "query":{
 	"match":{
		 "price":3999.00
 		}
 	}
}

删除成功后,服务器响应结果:

{
    "took": 16,  // 耗时
    "timed_out": false, // 是否超时
    "total": 2, // 总数
    "deleted": 2, // 删除数量
    "batches": 1,
    "version_conflicts": 0,
    "noops": 0,
    "retries": {
        "bulk": 0,
        "search": 0
    },
    "throttled_millis": 0,
    "requests_per_second": -1.0,
    "throttled_until_millis": 0,
    "failures": []
}

7.3 映射操作

有了索引库,等于有了数据库中的 database。

接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。

创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型

下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

(1)创建映射

在 Postman 中,向 ES 服务器发 PUT 请求 :http://192.168.241.102:9200/student**/_mapping**

请求体内容为

{
 "properties": {
 "name":{
 "type": "text",
 "index": true
 },
 "sex":{
 "type": "text",
 "index": false
 },
 "age":{
 "type": "long",
 "index": false
 }
 }
}

服务器响应结果

{
    "acknowledged": true
}

映射数据说明:

  • 字段名:任意填写,下面指定许多属性,例如:title、subtitle、images、price

  • type:类型,Elasticsearch 中支持的数据类型非常丰富,以下几个关键的:

    • String 类型,又分两种:
      • text:可分词
      • keyword:不可分词,数据会作为完整字段进行匹配
    • Numerical:数值类型,分两类
      • 基本数据类型:long、integer、short、byte、double、float、half_float
      • 浮点数的高精度类型:scaled_float
    • Date:日期类型
    • Array:数组类型
    • Object:对象
  • index:是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引。

    true:字段会被索引,则可以用来进行搜索

    false:字段不会被索引,不能用来搜索

  • store:是否将数据进行独立存储,默认为 false

    原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储

    的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置

    “store”: true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用

    更多的空间,所以要根据实际业务需求来设置。

  • analyzer:分词器。

(2)查看映射

在 Postman 中,向 ES 服务器发 GET 请求 :http://192.168.241.102:9200/student**/_mapping**

服务器响应结果如下:

{
    "start": {
        "mappings": {
            "properties": {
                "age": {
                    "type": "long",
                    "index": false
                },
                "brand": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "color": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "name": {
                    "type": "text"
                },
                "price": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "sex": {
                    "type": "text",
                    "index": false
                },
                "title": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }
            }
        }
    }
}

(3)索引映射关联

在 Postman 中,向 ES 服务器发 PUT 请求 :http://192.168.241.102:9200/student

请求体:

{
 "settings": {},
 "mappings": {
 "properties": {
"name":{
 "type": "text",
 "index": true
 
},
"sex":{
 "type": "text",
 "index": false
},
"age":{
 "type": "long",
 "index": false
}
 }
 }
}

服务器响应结果如下:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "student"
}

7.4 高级查询

Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询。

(1)查询所有文档

在 Postman 中,向 ES 服务器发 GET 请求 :http://192.168.241.102:9200/start/_search

请求体:

{
 "query": {
 "match_all": {}
 }
}

  • “query”:这里的 query 代表一个查询对象,里面可以有不同的查询属性
  • “match_all”:查询类型,例如:match_all(代表查询所有), match,term , range 等等
  • {查询条件}:查询条件会根据类型的不同,写法也有差异

返回结果:

{
    "took": 2, // 查询花费时间,单位毫秒
    "timed_out": false, // 是否超时
    "_shards": {// 分片信息
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": { // 搜索命中结果
        "total": {
            "value": 3,
            "relation": "eq" // 计数规则
        },
        "max_score": 1.0,
        "hits": // 命中结果集合
            {
                "_index": "start",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "title": "羽毛球拍",
                    "brand": "李宁",
                    "color": "银色",
                    "price": "2999"
                }
            },
            {
                "_index": "start",
                "_id": "2",
                "_score": 1.0,
                "_source": {
                    "title": "羽毛球拍",
                    "brand": "尤尼克斯",
                    "color": "红色",
                    "price": "2999"
                }
            },
            {
                "_index": "start",
                "_id": "3",
                "_score": 1.0,
                "_source": {
                    "title": "羽毛球拍",
                    "brand": "尤尼克斯",
                    "color": "白色",
                    "price": "2999"
                }
            }
        ]
    }
}

(2) 匹配查询

match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "match": {
 "brand": "尤尼克斯"
 }
 }
}

(3)字段匹配查询

multi_match 与 match 类似,不同的是它可以在多个字段中查询。

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "multi_match": {
 "query": "zhangsan",
 "fields": ["name","nickname"]
 }
 }
}

服务器响应结果:

{
    "took": 6,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0109437,
        "hits": [
            {
                "_index": "start",
                "_id": "2",
                "_score": 1.0109437,
                "_source": {
                    "title": "羽毛球拍",
                    "brand": "尤尼克斯",
                    "color": "红色",
                    "price": "2999"
                }
            },
            {
                "_index": "start",
                "_id": "3",
                "_score": 1.0109437,
                "_source": {
                    "title": "羽毛球拍",
                    "brand": "尤尼克斯",
                    "color": "白色",
                    "price": "2999"
                }
            }
        ]
    }
}

(4) 关键字精确查询

term 查询,精确的关键词匹配查询,不对查询条件进行分词。

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "term": {
 "name": {
 "value": "zhangsan"
 }
 }
 }
}

服务器响应结果:

(5)多关键字精确查询

terms 查询和 term 查询一样,但它允许你指定多值进行匹配。

如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "terms": {
 "name": ["zhangsan","lisi"]
 }
 }
}

(6)指定查询字段

默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。

如果我们只想获取其中的部分字段,我们可以添加_source 的过滤

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "_source": ["title","color"], 
 "query": {
 "terms": {
 "color": ["白色"]
 }
 }
}

(7)过滤字段

也可以通过:

  • includes:来指定想要显示的字段
  • excludes:来指定不想要显示的字段

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "_source": {
 "includes": ["title","brand","color"]
 }, 
 "query": {
 "terms": {
 "color": ["白色"]
 }
 }
}

(8)组合查询

bool把各种其它查询通过must(必须 )、must_not(必须不)、should(应该)的方

式进行组合

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "bool": {
 "must": [
 {
 "match": {
 "title": "尤尼克斯"
 }
 }
 ],
 "must_not": [
 {
 "match": {
 "color": "红色"
 }
 }
 ],
 "should": [
 {
 "match": {
 "price": "2999"
 }
 }
 ]
 }
 }
}

(9)范围查询

range 查询找出那些落在指定区间内的数字或者时间。range 查询允许以下字符

操作符说明
gt大于>
gte大于等于>=
lt小于<
lte小于等于<=

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

请求体

{
 "query": {
 "range": {
 "price": {
 "gte": 300,
 "lte": 3500
 }
 }
 }
}

(10)模糊查询

返回包含与搜索字词相似的字词的文档。

编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。这些更改可以包括:

  • 更改字符(box → fox)
  • 删除字符(black → lack)
  • 插入字符(sic → sick)
  • 转置两个相邻字符(act → cat)

为了找到相似的术语,fuzzy 查询会在指定的编辑距离内创建一组搜索词的所有可能的变体

或扩展。然后查询返回每个扩展的完全匹配。

通过 fuzziness 修改编辑距离。一般使用默认值 AUTO,根据术语的长度生成编辑距离。

在 Postman 中,向 ES 服务器发 GET 请求 :http://192.168.241.102:9200/start/_search

请求体:

{
 "query": {
 "fuzzy": {
 "color": {
 "value": "白色"
 }
 }
 }
}

(11)单字段排序

sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc

升序。

在 Postman 中,向 ES 服务器发 GET 请求 :http://192.168.241.102:9200/start/_search

{
 "query": {
 "match": {
 "title":"羽毛球拍"
 }
 },
 "sort": [{
 "price": {
 "order":"desc"
 }
 }]
}

(12)多字段排序

假定我们想要结合使用 age 和 _score 进行查询,并且匹配的结果首先按照年龄排序,然后

按照相关性得分排序 。

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "match_all": {}
 },
 "sort": [
 {
 "age": {
 "order": "desc"
 }
 },
 {
 "_score":{
 "order": "desc"
 }
 }
 ]
}

(13)高亮查询

在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。

Elasticsearch 可以对查询内容中的关键字部分,进行标签和样式(高亮)的设置。

在使用 match 查询的同时,加上一个 highlight 属性:

  • pre_tags:前置标签

  • post_tags:后置标签

  • fields:需要高亮的字段

  • title:这里声明 title 字段需要高亮,后面可以为这个字段设置特有配置,也可以空

    在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

请求体:

{
 "query": {
 "match": {
 "brand": "尤尼克斯"
 }
 },
 "highlight": {
 "pre_tags": "<font color='red'>",
 "post_tags": "</font>",
 "fields": {
 "name": {}
 }
 }
}

(14)分页查询

from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size

size:每页显示多少条

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

{
 "query": {
 "match_all": {}
 },
 "sort": [
 {
 "age": {
 "order": "desc"
 }
 }
 ],
 "from": 0,
 "size": 2
}

(15) 聚合查询

聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很

多其他的聚合,例如取最大值、平均值等等。

  • 对某个字段取最大值 max

在 Postman 中,向 ES 服务器发 GET 请求http://192.168.241.102:9200/start/_search

请求体:

{
 "aggs":{
 "max_age":{
 "max":{"field":"age"}
 }
 },
 "size":0
}
  • 对某个字段取最小值 min(类似上面的)
  • 对某个字段求和 sum
  • 对某个字段取平均值 avg
  • 对某个字段的值进行去重之后再取总数(cardinality)
  • Stats 聚合
    • stats 聚合,对某个字段一次性返回 count,max,min,avg 和 sum 五个指标

(16) 桶聚合查询

桶聚和相当于 sql 中的 group by 语句

  • terms 聚合,分组统计

请求体

{
 "aggs":{
 "age_groupby":{
 "terms":{"field":"age"}
 }
 },
 "size":0
}

在这里插入图片描述
                      您的支持是我创作的无限动力

在这里插入图片描述
                      希望我能为您的未来尽绵薄之力

在这里插入图片描述
                      如有错误,谢谢指正;若有收获,谢谢赞美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/284759.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

看了好多烟花,自己也来了段

<!DOCTYPE html> <!DOCTYPE html> <html lang"zh-CN"> <meta charset"UTF-8"> <title>烟花动画</title> <style>body, html { height: 100%; margin: 0; }canvas { position: absolute; } </style> </…

Group k-fold解释和代码实现

Group k-fold解释和代码实现 文章目录 一、Group k-fold解释和代码实现是什么&#xff1f;二、 实验数据设置2.1 实验数据生成代码2.2 代码结果 三、实验代码3.1 实验代码3.2 实验结果3.3 结果解释 四、总结 一、Group k-fold解释和代码实现是什么&#xff1f; 0&#xff0c;1…

【分布式微服务专题】SpringSecurity快速入门

目录 前言阅读对象阅读导航前置知识笔记正文一、Spring Security介绍1.1 什么是Spring Security1.2 它是干什么的1.3 Spring Security和Shiro比较 二、快速开始2.1 用户认证2.1.1 设置用户名2.1.1.1 基于application.yml配置文件2.1.1.2 基于Java Config配置方式 2.1.2 设置加密…

Mysql 高级语句

目录 高阶查询select语句&#xff1a; 显示表格中一个或数个字段的所有数据记录&#xff1a; 不显示重复的数据记录&#xff1a;distinct and且&#xff0c;or或 显示已知的值的数据记录&#xff1a;in 显示两个值范围内的数据记录&#xff1a;between 通配符&#xff1…

基于rk3568 Android H265推流SRS低延迟网页播放方案

在音视频领域&#xff0c;融合推流&#xff0c;低码流&#xff0c;低延迟&#xff0c;浏览器H5化是一个降低成本&#xff0c;提升用户体验的重要手段。同时适配现有直播的生态也是一个必要条件。 在满足上述要求的情况下&#xff0c;我做了以下实践&#xff0c;取得了良好的效果…

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务

ROS2节点通信之话题与服务点 引言1 理解从通信开始1.1 TCP&#xff08;传输控制协议&#xff09;1.2 UDP&#xff08;用户数据报协议&#xff09;1.3 基于共享内存的IPC方式 2 ROS2话题2.1 ROS2话题指令2.2 话题之RCLPY实现2.2.1 编写发布者2.2 2 编写订阅者2.2.3 运行测试 3 R…

总结:回顾我的2023年

文章目录 心得体会接触博客接触竞赛接触自学接触环境一些收获 2024年的目标 2023年已经结束了&#xff0c;那么特此在这里记录这一年的心得体会&#xff0c;同时也给明年定下目标吧 心得体会 接触博客 本人于2022年9月开始的自己的大学生活&#xff0c;是一个很普通的双非院…

c++_08_操作符重载(操作符重定义) 友元

1 操作符标记 单目操作符&#xff1a; - -- * -> 等 双目操作符&#xff1a; - > < - << >> 等 三木操作符&#xff1a; ? : 2 操作符函数 2.0 前言 C编译器有能力把一个由操作…

Origin绘制频数分布直方图+曲线拟合分布

问题描述 有组数据大概分布如下&#xff0c;现在想在Origin中绘制出以下效果 流程 如果我们想要人为每个柱子的边界&#xff0c;以方便展示&#xff0c;需要新建一列&#xff0c;输入数据分布的大概区间。 需要注意的是&#xff0c;C(Y)列中删除数据时若留下的“-”符合存…

鸿蒙开发第1篇__网络请求

先访问 OpenAtom OpenHarmony &#xff0c; 浏览 Http数据请求&#xff0c;

CSS 缩减顶部动画

<template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container" mou…

Linux:apache优化(7)—— 日志分割|日志合并

作用&#xff1a;随着网站访问量的增加&#xff0c;访问日志中的信息会越来越多&#xff0c; Apache 默认访问日志access_log单个文件会越来越大&#xff0c;日志文件体积越大&#xff0c;信息都在一个文件中&#xff0c;查看及分析信息会及不方便。 分割 实现方式&#xff1a…

【java爬虫】使用element-plus进行个股详细数据分页展示

前言 前面的文章我们讲述了获取详细个股数据的方法&#xff0c;并且使用echarts对个股的价格走势图进行了展示&#xff0c;本文将编写一个页面&#xff0c;对个股详细数据进行展示。别问涉及到了element-plus中分页的写法&#xff0c;对于这部分知识将会做重点讲解。 首先看一…

【SpringBoot开发】之商城项目案例(实现登陆版)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringBoot开发之商城项目系列》。&#x1f3af…

【NLP论文】02 TF-IDF 关键词权值计算

之前写了一篇关于关键词词库构建的文章&#xff0c;没想到反响还不错&#xff0c;最近有空把接下来的两篇补完&#xff0c;也继续使用物流关键词词库举例&#xff0c;本篇文章承接关键词词库构建并以其为基础&#xff0c;将计算各关键词的 TF-IDF 权值&#xff0c;TF-IDF 权值主…

霹雳吧啦Wz《pytorch图像分类》-p2AlexNet网络

《pytorch图像分类》p2AlexNet网络基础及代码 一、零碎知识点1.过拟合2.使用dropout后的正向传播3.正则化regularization4.代码中所用的知识点 二、总体架构分析1.ReLU激活函数2.手算3.模型代码 三、训练花分类课程代码1.model.py2.train.py3.predict.py 一、零碎知识点 1.过拟…

FPGA项目(14)——基于FPGA的数字秒表设计

1.功能设计 设计内容及要求: 1.秒表最大计时范围为99分59. 99秒 2.6位数码管显示&#xff0c;分辨率为0.01秒 3.具有清零、启动计时、暂停及继续计时等功能 4.控制操作按键不超过二个。 2.设计思路 所采用的时钟为50M&#xff0c;先对时钟进行分频&#xff0c;得到100HZ频率…

【Maven】下载配置maven以及IDEA配置maven详情

目录 1、下载maven 2、配置settings.xml 2.1、配置本地仓库 2.2、配置阿里云镜像仓库 2.3、配置JDK 3、配置环境变量 4、IDEA配置maven 1、下载maven maven官网&#xff1a;https://maven.apache.org/ 2、配置settings.xml 2.1、配置本地仓库 <localRepository>C:\…

oracle 9i10g编程艺术-读书笔记1

根据书中提供的下载代码链接地址&#xff0c;从github上找到源代码下载地址。 https://github.com/apress下载好代码后&#xff0c;开始一段新的旅行。 设置 SQL*Plus 的 AUTOTRACE 设置 SQL*Plus 的 AUTOTRACE AUTOTRACE 是 SQL*Plus 中一个工具&#xff0c;可以显示所执行…

GPT4-AIl本地部署-chat AI本地使用

文章目录 GPT4-AIl本地部署GPT4客户端下载地址&#xff1a;对应的下载下载后的文件点击安装&#xff0c;改一下文件存放路径&#xff0c;下面都是默认下一步进度条100%后&#xff0c;点击完成 安装完桌面生成图标&#xff0c;点击选择都是NO&#xff0c;不进行数据上传点击后&a…
最新文章