【5分钟学会一个知识点】01.Elasticsearch基本操作-增删改查

目录

  • 【5分钟学会一个知识点-探索现代搜索与分析引擎的魅力】01.Elasticsearch基本操作-增删改查
  • 1.基本操作
    • 1.1索引操作
    • 1.2文档操作
    • 1.3查询
    • 1.4修改数据
    • 1.5查询
      • 1.5.1条件查询
        • 1.5.1.1遍历所有的索引
        • 1.5.1.2查询某个索引
        • 1.5.1.3条件查询1:使用GET url传参数
        • 1.5.1.4条件查询2:使用body传参
        • 1.5.1.5body全量查询
        • 1.5.1.6分页查询
        • 1.5.1.7过滤一些不需要的字段
        • 1.5.1.8排序
        • 1.5.1.9多条件查询
        • 1.5.1.10 查询结果高亮与完全匹配
        • 1.5.1.11范围查询
        • 1.5.1.12聚合函数
        • 1.5.1.13加上size=0就可以只有聚合结果
        • 1.5.1.14计算平均值
        • 1.5.1.15映射关系
    • 1.6别名
      • 1.6.1 创建别名

🥰微信公众号:【给点知识】分享小知识,快速成长,欢迎关注呀!(底部点击二维码)
🥰学习宗旨:活到老,学到老。
😍写作宗旨:致力于改变现有文章难读难懂问题。

【5分钟学会一个知识点-探索现代搜索与分析引擎的魅力】01.Elasticsearch基本操作-增删改查

1.基本操作

1.1索引操作

  1. 创建索引
PUT /{index}/
  1. 查看某个索引的信息
GET /{index}/
  1. 查看全部的索引
GET /_cat/indices
  1. 删除索引
DELETE /{index}

1.2文档操作

  1. 文档添加:使用POST方法,因为POST不是幂等性的,每次请求,都会创建不同的id所以,需要使用非幂等的方法
POST /{index}/_doc
{
    "price":6999,
    "name":"mac1.1.0",
    "notes":"苹果mac大陆版本 6+64G"
}
// 输出结果
{
    "_index": "computer",
    "_id": "isICNI8B0eUrClfT84k3",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}
  1. 文档添加:当指定id的时候就可以使用PUT请求,因为id一定,那么只能创建一条数据
PUT /{index}/_doc/{id}
PUT /computer/_doc/001
或者
PUT /computer/_create/001
{
    "price":6999,
    "name":"mac1.2.0",
    "notes":"苹果mac大陆版本 6+128G"
}

// 输出结果
{
    "_index": "computer",
    "_id": "001",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1, 
    "_primary_term": 1
}

1.3查询

  1. 查询所有的数据
GET /{index}/_search
  1. 主键查询
GET /{index}/_doc/{id}/

1.4修改数据

  1. 修改是根据文档id修改,如果存在就修改否则就新增
    PUT修改是全量的更新
PUT /{index}/_doc/{id}
body:
{
    "price":6999,
    "name":"mac1.2.0",
    "notes":"苹果mac大陆版本 6+128G"
}

# 输出结果如下
返回结果:例如下面的result显示的是upadted
{
    "_index": "computer",
    "_id": "1001",
    "_version": 2,
    "result": "updated", // 这里显示结果是updated 
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 5,
    "_primary_term": 3
}

如果传入参数如下,就会造成,传入几个字段就更新几个字段,因为PUT是幂等的

PUT /{index}/_doc/{id}
POST  /{index}/_doc/{id}
body:
{
    "price":2999
}
# 输出结果如下只有一个字段了
{
	"_index": "computer",
	"_id": "1001",
	"_score": 1.0,
	"_source": {
		"price": 2999
	}
}

以上是因为 PUT是全量更新,为了达到局部更新,这里可以使用POST实现
2. POST实现局部更新

POST /{index}/_update/{id}

{
    "doc":{
	    "price":2999,
	    "name":"mac1.2.0",
	    "notes":"苹果mac大陆版本 6+128G"
	}
}


如果增加了一个字段,那么直接增加也会出现一个字段

POST /{index}/_update/{id}

{
    "doc":{
	    "price":2999,
	    "name":"mac1.2.0",
	    "notes":"苹果mac大陆版本 6+128G",
	    "text":"text"
	}
}
# 输出结果
 "hits": [
	{
		"_index": "computer",
		"_id": "1001",
		"_score": 1.0,
		"_source": {
			"price": 2999,
			"name": "mac1.2.0",
			"notes": "苹果mac大陆版本 6+128G",
			"text": "text"
		}
	}

🥰微信公众号:【给点知识】分享小知识,快速成长,欢迎关注呀!(底部点击二维码)
🥰学习宗旨:活到老,学到老。
😍写作宗旨:致力于改变现有文章难读难懂问题。
在这里插入图片描述

1.5查询

1.5.1条件查询

1.5.1.1遍历所有的索引
GET /_search
1.5.1.2查询某个索引
GET /{index}/_search
1.5.1.3条件查询1:使用GET url传参数
GET /{index}/_search?q=filed:xxx
eg:http://10.67.199.181:8080/iphone/_search?q=name:小米
1.5.1.4条件查询2:使用body传参
GET/POST  /{index}/_search

{
    "query":{ // 我要做个什么:查询
        "match":{ // 什么查询:匹配
            "name":"小米华为" // 查询那个字段以及对应字段的的值
        }
    }
}
# 查询索引
{
    "took": 26,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 2.7901525,
        "hits": [
            {
                "_index": "iphone",
                "_id": "SSMWTo8B3uHRqn1-nWGc",
                "_score": 2.7901525,
                "_source": {
                    "price": 9999,
                    "name": "华为meta60",
                    "notes": "华为meta60 6+64G"
                }
            },
            {
                "_index": "iphone",
                "_id": "SiMWTo8B3uHRqn1-xGER",
                "_score": 1.7503443,
                "_source": {
                    "price": 9999,
                    "name": "保时捷版本华为meta60",
                    "notes": "华为meta60 6+64G"
                }
            }
        ]
    }
}
1.5.1.5body全量查询
GET/POST  /{index}/_search

{
    "query":{ // 我要做个什么:查询
        "match_all":{ // 什么查询:全量匹配
        }
    }
}
1.5.1.6分页查询
GET/POST /{index}/_search
{
     "query":{
         "match_all":{
         }
     },
     "from":0,// 开始
     "size":2 // 每页个数
}
1.5.1.7过滤一些不需要的字段
```python
GET/POST /{index}/_search
{
     "query":{
         "match_all":{
         }
     },
     "from":0,// 开始
     "size":2, // 每页个数
     "_source":["name"]
}
1.5.1.8排序
GET/POST /{index}/_search
{
     "query":{
         "match_all":{
         }
     },
     "from":0,
     "size":2,
     "_source":["name"],
     "sort":{
        "price":{
            "order":"desc"
        }
     }
}
1.5.1.9多条件查询
GET/POST   /{index}/_search
1.或者条件:should
{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "name": "小米"
                    }
                },
                {
                    "match": {
                        "price": "1999"
                    }
                }
            ]
        }
    }
}
2. 同时成立:must
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name": "小米"
                    }
                },
                {
                    "match": {
                        "price": "1999"
                    }
                }
            ]
        }
    }
}
1.5.1.10 查询结果高亮与完全匹配
GET/POST   /{index}/_search
{
     "query":{
          "match_phrase":{ // 完全不配
               "name":"小米"
          }
    },
    "hightlight":{ // 对那个字段进行高亮
		"field":{
		    "name":{}
		}
    }
}
1.5.1.11范围查询
GET/POST   /{index}/_search
{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "name": "华为"
                    }
                },
                {
                    "match": {
                        "price": "2988"
                    }
                }
            ],
            "filter":{
                "range":{
                    "price":{
                        "gt":"11009"
                    }
                }
            }
        }
    }
}
1.5.1.12聚合函数
GET/POST   /{index}/_search
# body
{
    "aggs":{
        "price_agg":{
            "terms":{
                "field":"price"
            }
        }
    }
}
# 返回结果
{
    "took": 11,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "computer",
                "_id": "1001",
                "_score": 1.0,
                "_source": {
                    "price": 2999,
                    "name": "mac1.2.0",
                    "notes": "苹果mac大陆版本 6+128G",
                    "text": "text"
                }
            },
            {
                "_index": "computer",
                "_id": "isICNI8B0eUrClfT84k3",
                "_score": 1.0,
                "_source": {
                    "price": 6999,
                    "name": "mac1.1.0",
                    "notes": "苹果mac大陆版本 6+64G"
                }
            },
            {
                "_index": "computer",
                "_id": "001",
                "_score": 1.0,
                "_source": {
                    "price": 6999,
                    "name": "mac1.2.0",
                    "notes": "苹果mac大陆版本 6+128G"
                }
            }
        ]
    },
    "aggregations": {
        "price_agg": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": 6999,
                    "doc_count": 2
                },
                {
                    "key": 2999,
                    "doc_count": 1
                }
            ]
        }
    }
}
1.5.1.13加上size=0就可以只有聚合结果
GET/POST   /{index}/_search
# body
{
    "aggs":{
        "price_agg":{
            "terms":{
                "field":"price"
            }
        }
    },
    "size":0
}
# 返回结果
{
    "took": 40,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "price_agg": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": 6999,
                    "doc_count": 2
                },
                {
                    "key": 2999,
                    "doc_count": 1
                }
            ]
        }
    }
}
1.5.1.14计算平均值
GET/POST   /{index}/_search
# body
{
    "aggs":{
        "price_avg":{
            "avg":{
                "field":"price"
            }
        }
    },
    "size":0
}
# 返回结果
{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "price_agg": {
            "value": 5665.666666666667
        }
    }
}
1.5.1.15映射关系

场景描述:有些查询时分词,有些不是,那么如何设置让那个字段可以分词或者不可以分词呢?
通过以下方式可以给每个字段设置所含有的属性
type:数据类型 keyword表示关键词必须全部匹配
index:是否可以被索引,true表示可以被索引

{
     "properties":{
          "name":{
                "type":"text",
                 "index":true
          },
          "gender":{
                "type":"keyword",
                 "index":true
          },
          "tel":{
                "type":"keyword",
                 "index":false
          }
     }
}
  1. 创建索引
PUT  /{index}
PUT /person
  1. 给索引设置属性
PUT /{index}/_mapping
{
     "properties":{
          "name":{
                "type":"text",
                 "index":true
          },
          "gender":{
                "type":"keyword",
                 "index":true
          },
          "tel":{
                "type":"keyword",
                 "index":false
          }
     }
}
  1. 直接在创建索引的时候直接加入属性
PUT /my_index
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "price": {
        "type": "integer"
      },
      "notes": {
        "type": "text"
      }
    }
  }
}

查询看效果:name是text类型,可以被分词查询.

POST /{index}/_search
// 请求体
{
    "query":{
        "match":{
            "name":"里张"
        }
    }
}
// 返回结果
{
    "took": 14,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.2613049,
        "hits": [
            {
                "_index": "person",
                "_id": "003",
                "_score": 1.2613049,
                "_source": {
                    "name": "里斯",
                    "gender": "男生",
                    "tel": "19889999999"
                }
            },
            {
                "_index": "person",
                "_id": "004",
                "_score": 1.2613049,
                "_source": {
                    "name": "张三",
                    "gender": "男生",
                    "tel": "18888888888"
                }
            }
        ]
    }
}

注意:如果想实现text不分词查询也可使用

{
    "query":{
        "match_phrase":{
            "name":"里斯"
        }
    }
}

然后再查询其他字段

GET /{index}/_search
{
    "query":{
        "match":{
            "gender":"男女"
        }
    }
}
// 返回结果
{
    "took": 7,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 0,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    }
}

使用gender:男生。是可以查询的

GET /{index}/_search
{
    "query":{
        "match":{
            "gender":"男生"
        }
    }
}

{
    "took": 13,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 0.6931471,
        "hits": [
            {
                "_index": "person",
                "_id": "003",
                "_score": 0.6931471,
                "_source": {
                    "name": "里斯",
                    "gender": "男生",
                    "tel": "19889999999"
                }
            },
            {
                "_index": "person",
                "_id": "004",
                "_score": 0.6931471,
                "_source": {
                    "name": "张三",
                    "gender": "男生",
                    "tel": "18888888888"
                }
            }
        ]
    }
}

8.x版本的是类型是text才可以设置index 是否可以被索引。测试发现当type=keyword时设置index无效。当为 text时是可以的。

{
     "mappings":{
          "properties":{
               "name":{
                    "type":"text",
                    "index":true
               },
               "gender":{
                    "type":"keyword",
                    "index":false
               },
               "tel":{
                    "type":"text",
                    "index":false
               }
          }
     }
}

在这里插入图片描述

使用tel查询的时候提示错误不能被查询
在这里插入图片描述

1.6别名

1.6.1 创建别名

一个别名可以对应多个索引,别名对应多个索引可以用于检索不同的内容。
比如有索引
index001、index002、iphone

{
    "took": 47,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 3,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 13,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "index001",
                "_id": "001",
                "_score": 1.0,
                "_source": {
                    "name": "法兰",
                    "tell": "19998888888",
                    "index001": "英国"
                }
            },
            {
                "_index": "index001",
                "_id": "002",
                "_score": 1.0,
                "_source": {
                    "name": "里斯",
                    "tell": "17778888888",
                    "index001": "美国"
                }
            },
            {
                "_index": "index001",
                "_id": "003",
                "_score": 1.0,
                "_source": {
                    "name": "张三",
                    "tell": "18888888888",
                    "index001": "中国"
                }
            },
            {
                "_index": "index002",
                "_id": "001",
                "_score": 1.0,
                "_source": {
                    "name": "里斯2",
                    "tell": "18999998888",
                    "index002": "美国"
                }
            },
            {
                "_index": "index002",
                "_id": "002",
                "_score": 1.0,
                "_source": {
                    "name": "青青",
                    "tell": "11111111111",
                    "index002": "英国"
                }
            },
            {
                "_index": "index002",
                "_id": "003",
                "_score": 1.0,
                "_source": {
                    "name": "王五2",
                    "tell": "13333333336",
                    "index002": "中国"
                }
            },
            {
                "_index": "iphone",
                "_id": "RyMWTo8B3uHRqn1-JGGx",
                "_score": 1.0,
                "_source": {
                    "price": 6999,
                    "name": "iphone15 pro",
                    "notes": "苹果15大陆版本 6+64G"
                }
            },
            {
                "_index": "iphone",
                "_id": "SSMWTo8B3uHRqn1-nWGc",
                "_score": 1.0,
                "_source": {
                    "price": 9999,
                    "name": "华为meta60",
                    "notes": "华为meta60 6+64G"
                }
            },
            {
                "_index": "iphone",
                "_id": "SiMWTo8B3uHRqn1-xGER",
                "_score": 1.0,
                "_source": {
                    "price": 9999,
                    "name": "保时捷版本华为meta60",
                    "notes": "华为meta60 6+64G"
                }
            },
            {
                "_index": "iphone",
                "_id": "SyMXTo8B3uHRqn1-CGFr",
                "_score": 1.0,
                "_source": {
                    "price": 99,
                    "name": "三星盖乐世",
                    "notes": "三星盖乐世 6+64G"
                }
            }
        ]
    }
}

创建别名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "indices": ["index001", "index002", "iphone"],
        "alias": "alias-index001-index002-iphone"
      }
    }
  ]
}

别名搜索:直接所有别名就可以直接搜索到对应的值

GET /{index}/_search
# 查询请求体
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name": "三星"
                    }
                }
            ]
        }
    }
}
# 返回结果
{
    "took": 255,
    "timed_out": false,
    "_shards": {
        "total": 3,
        "successful": 1,
        "skipped": 0,
        "failed": 2,
        "failures": [
            {
                "shard": 0,
                "index": "index001",
                "node": "W8VpzO2_RDSExCsKqgEG0w",
                "reason": {
                    "type": "query_shard_exception",
                    "reason": "failed to create query: Cannot search on field [name] since it is not indexed.",
                    "index_uuid": "m_O1UmvdSRCIXgFipofDbw",
                    "index": "index001",
                    "caused_by": {
                        "type": "illegal_argument_exception",
                        "reason": "Cannot search on field [name] since it is not indexed."
                    }
                }
            },
            {
                "shard": 0,
                "index": "index002",
                "node": "W8VpzO2_RDSExCsKqgEG0w",
                "reason": {
                    "type": "query_shard_exception",
                    "reason": "failed to create query: Cannot search on field [name] since it is not indexed.",
                    "index_uuid": "mQynij2cTqmJVEQUxGGZBw",
                    "index": "index002",
                    "caused_by": {
                        "type": "illegal_argument_exception",
                        "reason": "Cannot search on field [name] since it is not indexed."
                    }
                }
            }
        ]
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 3.1534967,
        "hits": [
            {
                "_index": "iphone",
                "_id": "SyMXTo8B3uHRqn1-CGFr",
                "_score": 3.1534967,
                "_source": {
                    "price": 99,
                    "name": "三星盖乐世",
                    "notes": "三星盖乐世 6+64G"
                }
            }
        ]
    }
}

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

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

相关文章

proteus数模转换器DAC0832的应用

proteus proteus,即EDA工具软件。Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。虽然国内推广刚起步,但已受到…

油泼辣子在食品类别可以申请成商标不!

前阵韩国人在美国申请“chili crunch”油泼辣子作为商标,还准备禁止华人餐馆使用投诉侵权并索赔,普推知产老杨在USPTO上面检索发现,这个人申请的主要是30类方便食品的调味品,商标分类是全球通用的。 商标名称不能申请本类所属的通…

C++的数据结构(三):栈

栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构,它只允许在一端(称为栈顶)进行插入和删除操作。栈的这种特性使得它在解决函数调用、括号匹配、表达式求值等问题时具有天然的优势…

Linux下多线程相关概念

thread 1.什么是线程1.1 线程优缺点1.2 线程异常1.3 线程用途 2. 进程和线程区别3. 线程控制3.1 POSIX线程库3.2 pthread_create()3.3 线程ID3.4 线程ID地址空间布局pthread_self() 3.5 线程终止pthread_exit函数pthread_cancle函数 3.6 线程等待3.7 分离线程__thread修饰全局变…

【安全每日一讲】加强数据安全保护 共享数字化时代便利

前言 数据安全是数据治理的核心内容之一,随着数据治理的深入,我不断的碰到数据安全中的金发姑娘问题(指安全和效率的平衡)。 DAMA说,降低风险和促进业务增长是数据安全活动的主要驱动因素,数据安全是一种资…

Django项目之电商购物商城 -- 修改/删除收货地址/设置默认地址

Django项目之电商购物商城 – 修改/删除收货地址/设置默认地址 修改和删除收货地址依旧实在user应用下进行 , 其思路和新增收货地址非常相似 依旧是更具前端的数据来写 在这里修改和删除地址的URL是相同的 , 所以我们只要设置一个模型类就可以实现这两个功能 一 . 修改地址…

apk反编译修改教程系列-----反编译apk 去除软件强制更新的八种方式步骤解析【十七】

安卓有的apk 软件会不断更新。但有些用户需要旧版的有些功能或者新版功能增减原因等等。需要不更新继续使用。这类问题有的可以简单修改版本号来跳过更新。或者有的软件可以忽略。但对于某些无法跳过更新界面等等的apk。就需要深度反编译来去除软件的强制更新。 通过课程可以了…

Obsidian/Typora设置图床

在obsidian中默认图片是保存在本地的,但是在要导出文档上传到网上时,由于图片保存在本地,会出现无法加载图片的问题。 这里引用的一段话: 这里使用picgo-core和gitee实现图床功能, 参考1: Ubuntu下PicGO配…

【Docker】Ubuntu下Docker的基本使用方法与常用命令总结

【Docker】docker的基本使用方法 镜像image与容器container的关系基本命令- 查看 Docker 版本- 拉取镜像- 查看系统中的镜像- 删除某个镜像- 列出当前 Docker 主机上的所有容器,包括正在运行的、暂停的、已停止的,以及未运行的容器- 列出当前 Docker 主机…

【LeetCode算法】242. 有效的字母异位词

提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第一周) - 自然语言处理介绍和线性分类

自然语言处理介绍和线性分类 1. 自然语言处理介绍2. 线性二分类3. 情感分析和基础特征提取 3.1. 情感分析3.2. 特征提取3.3. 文本预处理 4. 学习的基础-梯度下降算法5. 感知机6. 逻辑回归7. 情感分析8. 感知机和逻辑回归 1. 自然语言处理介绍 自然语言处理的目标是什么 能够解…

问题与解决:大华视频后台播放报错

大华播放器接到BI系统后,实时监控视频后台播放一段时间后,报错如下: The play() request was interrupted because video-only background media was paused to save power. 在谷歌浏览器下,直接用代码运行系统,视频在…

腾讯云服务器之ssh远程连接登录及转发映射端口实现内网穿透(实现服务器访问本地电脑端口)

目录 一、创建密钥绑定实例二、设置私钥权限三、ssh远程连接到服务器四、修改root密码五、端口转发(实现服务器访问本地电脑的端口) 一、创建密钥绑定实例 创建密钥会自动下载一个私钥,把这个私钥复制到c盘 二、设置私钥权限 1、删除所有用户…

企业级复杂前中台项目响应式处理方案

目录 01: 前言 02: 响应式下navigtionBar实现方案分析 数据 视图 小结 03: 抽离公用逻辑,封装系列动作 04: PC端navigationBar私有逻辑处理 05: 分析 navigationBar 闪烁问题 06: 处理 navigationBar 闪烁问题 07: category数据缓存,覆盖…

HTML+VUE3组合式+ELEMENT的容器模板示例(含侧栏导航,表格,...)

一个简单的在html中使用Vue3及Element-plus vue-icons的整合示例&#xff1a; 一、示例截图 二、文件代码 直接复制到html文件在浏览器打开即可预览 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title&g…

软件体系结构建模

一、“41”视图模型 逻辑视图&#xff08;用户&#xff09; 用于描述系统的功能需求&#xff0c;给用户提供哪些服务。以及描述系统软件功能拆解后的组件关系&#xff0c;组件约束和边界&#xff08;用类图表示&#xff0c;交互图&#xff0c;顺序图&#xff0c;状态图&#xf…

数据结构与算法学习笔记三---循环队列的表示和实现(C++)

目录 前言 1.为什么要使用循环队列 2.队列的顺序存储方式的实现 1.定义 2.队列初始化 3.销毁 4.清空队列 5.队列是否为空 6.队列长度 7.队头 8.入队 9.出队 10.遍历队列 11.完整代码 3.参考资料 前言 这篇文章介绍循环队列的表示和用法。 1.为什么要使用循环队…

使用curl命令查看服务器端口开放情况

目录 1.ssh端口 22 2.mysql数据库端口 3306 3.web应用端口 &#xff08;Jellyfin 8082&#xff09; &#xff08;wordpress 8088&#xff09; &#xff08;tomcat 8080&#xff09; 4.不存在的端口 5.被防火墙阻挡的端口 1.ssh端口 22 curl -v 10.10.10.205:22 curl…

嵌入式全栈开发学习笔记---C语言笔试复习大全16

目录 指针和数组 用指针来表示数组 用数组来表示指针 笔试题19 上一篇复习了指针使用时的相关注意事项&#xff0c;这一篇我们开始复习指针和数组。 说明&#xff1a;我们学过单片机的一般都是有C语言基础的了&#xff0c;网上关于C语言的资料有很多&#xff0c;大家如果对…