Elasticsearch 集群部署插件管理及副本分片概念介绍

Elasticsearch 集群配置版本均为8以上

安装前准备

CPU 2C 内存4G或更多
操作系统: Ubuntu20.04,Ubuntu18.04,Rocky8.X,Centos 7.X
操作系统盘50G
主机名设置规则为nodeX.qingtong.org
生产环境建议准备单独的数据磁盘

主机名

#各自服务器配置自己的主机名
hostnamectl set-hostname es-node1.qingtong.org

关闭防火墙和SELINUX

#RHEL系列的系统执行下以下配置
[root@es-node1 ~]# systemctl disable firewalld
[root@es-node1 ~]# systemctl disable NetworkManager
[root@es-node1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
[root@es-node1 ~]# reboot

服务器配置本地域名解析可以选择做也可以不做

优化资源限制配置

内核参数 vm.max_map_count 用于限制一个进程可以拥有的VMA(虚拟内存区域)的数量
使用默认系统配置,二进制安装时会提示下面错误,包安装会自动修改此配置

#查看默认值
[root@es-node1 ~]#sysctl -a |grep vm.max_map_count 
vm.max_map_count = 65530
#修改配置
[root@es-node1 ~]#echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
[root@es-node1 ~]#echo "fs.file-max = 1000000" >> /etc/sysctl.conf
[root@es-node1 ~]#sysctl -p 
vm.max_map_count = 262144

修改资源限制配置

[root@es-node1 ~]#vi /etc/security/limits.conf
*               soft   core           unlimited
*               hard   core           unlimited
*               soft   nproc           1000000
*               hard   nproc           1000000
*               soft   nofile          1000000
*               hard   nofile          1000000
*               soft   memlock         32000
*               hard   memlock         32000
*               soft   msgqueue        8192000
*               hard   msgqueue        8192000

安装Java环境(可选)

Elasticsearch 是基于java的应用,所以依赖JDK环境
注意: 安装7.X以后版本官方建议要安装集成JDK的包,所以无需再专门安装 JDK
关于JDK环境说明

1.x 2.x 5.x 6.x都没有集成JDK的安装包,也就是需要自己安装java环境
7.x的安装包分为带JDK和不带JDK两种包,带JDK的包在安装时不需要再安装java,如果不带JDK的包仍然需要自己去安装java
8.x的安装包默认不区分带JDK和不带JDK,所以8版本此处忽略

官网JAVA版支持说明:
https://www.elastic.co/cn/support/matrix#matrix_jvm

Elasticsearch 安装

!!! 推荐7.x及以上版本安装,避免手动配置JAVA环境出错 !!!

官方下载地址:
https://www.elastic.co/cn/downloads/elasticsearch

在这里插入图片描述

包安装

如果是 X86_64 版本可以考虑吧国内清华大学镜像源下载安装
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/

# Centos安装
yum -y install elasticsearch-8.7.1-x86_64.rpm

# Ubuntu安装
dpkg -i  elasticsearch-8.7.1-amd64.deb

如果是linux_arrch64 版本就设置官方的 yum 源来下载

https://www.elastic.co/guide/en/elasticsearch/reference/8.7/rpm.html#rpm-repo

按照官方的文档操作下载即可
1、下载并安装公共签名密钥:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2、手动创建 Elasticsearch.repo

cat << EOF > /etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
EOF

3、安装

sudo yum install --enablerepo=elasticsearch elasticsearch 
sudo dnf install --enablerepo=elasticsearch elasticsearch

二进制安装

官方文档
https://www.elastic.co/guide/en/elasticsearch/reference/master/targz.html
下载二进制文件
https://www.elastic.co/cn/downloads/elasticsearch

范例:基于二进制包含JDK文件安装
1、下载解压安装包

[root@ubuntu1804 ~]#ls
elasticsearch-7.6.2-linux-x86_64.tar.gz
[root@ubuntu1804 ~]#tar xf elasticsearch-7.6.2-linux-x86_64.tar.gz -C 
/usr/local/
[root@ubuntu1804 ~]#ls /usr/local/
bin elasticsearch-7.6.2 etc games include lib man sbin share src
[root@ubuntu1804 ~]#ln -s /usr/local/elasticsearch-7.6.2/ 
/usr/local/elasticsearch
[root@ubuntu1804 ~]#ls /usr/local/elasticsearch
bin config jdk lib LICENSE.txt logs modules NOTICE.txt plugins 
README.asciidoc

2、编辑配置文件
编辑配置文件可参考下一个标题内的内容。8.X以下版本无需配置 Xpack

3、二进制安装需手动创建用户,在所有节点上创建用户

useradd -r elasticsearch

4、更改目录权限,配置方法参照下面
5、启动服务(在所有节点上配置)

[root@es-node1 ~]#echo 'PATH=/usr/local/elasticsearch/bin:$PATH' > 
/etc/profile.d/elasticsearch.sh
[root@es-node1 ~]#. /etc/profile.d/elasticsearch.sh
[root@es-node1 ~]#tail -f /data/es-logs/es-cluster.log
#不能以root用户运行,切换用户
[root@es-node1 ~]#su - elasticsearch

6、验证端口

ss -ntl | grep java

7、创建service文件

[root@es-node1 ~]#cat /lib/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
RuntimeDirectory=elasticsearch
PrivateTmp=true
Environment=PID_DIR=/var/run/elasticsearch
WorkingDirectory=/usr/local/elasticsearch
User=elasticsearch
Group=elasticsearch
ExecStart=/usr/local/elasticsearch/bin/elasticsearch -p
${PID_DIR}/elasticsearch.pid --quiet
# StandardOutput is configured to redirect to journalctl since
# some error messages may be logged in standard output before
# elasticsearch logging system is initialized. Elasticsearch
# stores its logs in /var/log/elasticsearch and does not use
# journalctl by default. If you also want to enable journalctl
# logging, you can simply remove the "quiet" option from ExecStart.
# Specifies the maximum file descriptor number that can be opened by this 
process
LimitNOFILE=65535
# Specifies the maximum number of processes
LimitNPROC=4096
# Specifies the maximum size of virtual memory
LimitAS=infinity
# Specifies the maximum file size
LimitFSIZE=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
# Send the signal only to the JVM rather than its control group
KillMode=process
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
# Built for packages-7.6.2 (packages)
[root@es-node1 ~]#systemctl daemon-reload 
[root@es-node1 ~]#systemctl enable --now elasticsearch.service

基于docker部署

官方文档
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html

单节点部署

[root@ubuntu1804 ~]#docker run --name es-single-node -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2

多节点集群部署
注意:此方式需要3G以上的内存,否则会出现OOM的告警

创建docker-compose.yml 文件

[root@ubuntu1804 ~]#cat docker-compose.yml 
version: '2.2'
services:
 es01:
   image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
   container_name: es01
   environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
      - data01:/usr/share/elasticsearch/data
   ports:
      - 9200:9200
   networks:
      - elastic
 es02:
   image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
   container_name: es02
   environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
      - data02:/usr/share/elasticsearch/data
   networks:
      - elastic
 es03:
   image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
   container_name: es03
   environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
      - data03:/usr/share/elasticsearch/data
   networks:
      - elastic
volumes:
  data01:
   driver: local
  data02:
   driver: local
  data03:
   driver: local
networks:
  elastic:
   driver: bridge

启动集群

[root@ubuntu1804 ~]#docker-compose up -d

编辑服务配置文件

配置文件说明

[root@es-node1 ~]# grep -Ev '#|^$'/etc/elasticsearch/elasticsearch.yml

#ELK集群名称,同一个集群内每个节点的此项必须相同,新加集群的节点此项和其它节点相同即可加入集群,而
无需再验证
cluster.name: ELK-Cluster 
#当前节点在集群内的节点名称,同一集群中每个节点要确保此名称唯一
node.name: es-node1 
#ES 数据保存目录
path.data: /data/es-data 
#ES 日志保存目录
path.logs: /data/es-logs
#服务启动的时候立即分配(锁定)足够的内存,防止数据写入swap,提高启动速度
bootstrap.memory_lock: true
#指定监听IP,如果绑定了错误的IP,可将此修改为指定IP
network.host: 0.0.0.0 
#监听端口
http.port: 9200
#8.x版本的新特性 xpack认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
#发现集群的node节点列表,可以添加部分或全部节点IP
#在新增节点到集群时,此处需指定至少一个已经在集群中的节点地址
discovery.seed_hosts: ["10.0.0.101","10.0.0.102","10.0.0.103"] #集群初始化时指定希望哪些节点可以被选举为 master,只在初始化时使用,新加节点到已有集群时此项可不
配置
cluster.initial_master_nodes: ["10.0.0.101","10.0.0.102","10.0.0.103"] #一个集群中的 N 个节点启动后,才允许进行数据恢复处理,默认是1,一般设为为所有节点的一半以上,防止
出现脑裂现象
#当集群无法启动时,可以将之修改为1,或者将下面行注释掉,实现快速恢复启动
gateway.recover_after_nodes: 2 #设置是否可以通过正则表达式或者_all匹配索引库进行删除或者关闭索引库,默认true表示必须需要明确指
定索引库名称,不能使用正则表达式和_all,生产环境建议设置为 true,防止误删索引库。
action.destructive_requires_name: true
#不参与主节点选举
node.master: false
#存储数据,此值为false则不存储数据而成为一个路由节点
#如果将true改为false,需要先执行/usr/share/elasticsearch/bin/elasticsearch-node 
repurpose 清理数据
node.data: true
#7.x以后版本下面指令已废弃,在2.x 5.x 6.x 版本中用于配置节点发现列表
discovery.zen.ping.unicast.hosts: ["10.0.0.101", "10.0.0.102","10.0.0.103"]

单节点配置

[root@ubuntu2004 ~]#grep -v '#' /etc/elasticsearch/elasticsearch.yml
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: ["10.0.0.100"]
cluster.initial_master_nodes: ["node-1"]

集群配置

cluster.name: es-cluster
node.name: es-node1
path.data: /data/es-data
path.logs: /data/es-logs
xpack.security.enabled: false  #建议关闭
xpack.security.enrollment.enabled: false #建议关闭
xpack.security.http.ssl:
  enabled: false #建议关闭
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: false #建议关闭
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.31.14","192.168.31.178","192.168.31.184"]
cluster.initial_master_nodes: ["192.168.31.14","192.168.31.178","192.168.31.184"]

将配置同步至其他集群节点

[root@es-node1 ~]# scp /etc/elasticsearch/elasticsearch.yml esnode2:/etc/elasticsearch/

[root@es-node2 ~]#grep -v "#" /etc/elasticsearch/elasticsearch.yml
cluster.name: es-cluster
node.name: es-node2  #只需修改次行,每个节点都不能相同
path.data: /data/es-data
path.logs: /data/es-logs
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.31.14","192.168.31.178","192.168.31.184"]
cluster.initial_master_nodes: ["192.168.31.14","192.168.31.178","192.168.31.184"]

开启bootstrap.memory_lock: true 导致无法启动的错误解决方法
官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/setupconfiguration-memory.html#bootstrap-memory_lock
https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-systemsettings.html#systemd

解决办法:

[root@es-node1 ~]# vim /usr/lib/systemd/system/elasticsearch.service 
LimitMEMLOCK=infinity

[root@node1 ~]#systemctl daemon-reload 
[root@node1 ~]#systemctl restart elasticsearch.service 
[root@node1 ~]#systemctl is-active elasticsearch.service 
active

目录权限

在各个ES服务器创建数据和日志目录并修改目录权限为elasticsearch

#此步可选,可以不用创建下面目录es-data和es-logs,系统可以自动创建
[root@es-node1 ~]# mkdir -p /data/es-{data,logs}
[root@es-node1 ~]# ll /data/
total 0
drwxr-xr-x 2 root root 6 Apr 18 18:44 es-data
drwxr-xr-x 2 root root 6 Apr 18 18:44 es-logs
#必须分配权限,否则服务无法启动
[root@es-node1 ~]# chown -R elasticsearch.elasticsearch /data/ 
[root@es-node1 ~]# ll /data/
total 0
drwxr-xr-x 2 elasticsearch elasticsearch 6 Apr 18 18:44 es-data
drwxr-xr-x 2 elasticsearch elasticsearch 6 Apr 18 18:44 es-logs

启动Elasticsearch服务并验证

[root@es-node1 ~]#systemctl enable --now elasticsearch

验证端口监听成功

9200端口集群访问端口,9300集群同步端口
在这里插入图片描述

通过浏览器访问 Elasticsearch 服务端口
在这里插入图片描述

Elasticsearch 集群状态监控

官方文档
https://www.elastic.co/guide/en/elasticsearch/reference/master/rest-apis.html
Elasticsearch 支持各种语言使用 RESTful API 通过端口 9200 与之进行通信,可以用你习惯的 web 客户端访问 Elasticsearch
可以用三种方式和 Elasticsearch进行交互

  • curl 命令和其它浏览器: 基于命令行,操作不方便
  • 插件: 在node节点上安装head,Cerebro 等插件,实现图形操作,查看数据方便
  • Kibana: 需要java环境并配置,图形操作,显示格式丰富

监控下面两个条件都满足才是正常的状态

  • 集群状态为 green
  • 所有节点都启动

SHELL命令

 curl -sXGET http://elk服务器:9200/_cluster/health?pretty=true

获取到的是一个json格式的返回值,那就可以通过python对其中的信息进行分析,例如对status进行分析,如果等于green(绿色)就是运行在正常,等于yellow(黄色)表示副本分片丢失,red(红色)表示主分片丢失

ES集群状态:

  • 绿色状态:表示集群各节点运行正常,而且没有丢失任何数据,各主分片和副本分片都运行正常
  • 黄色状态:表示由于某个节点宕机或者其他情况引起的,node节点无法连接、所有主分片都正常分配,有副本分片丢失,但是还没有丢失任何数据
  • 红色状态:表示由于某个节点宕机或者其他情况引起的主分片丢失及数据丢失,但仍可读取数据和存储
#查看支持的指令
curl http://127.0.0.1:9200/_cat
#查看es集群状态
curl http://127.0.0.1:9200/_cat/health
curl 'http://127.0.0.1:9200/_cat/health?v'
#查看所有的节点信息
curl 'http://127.0.0.1:9200/_cat/nodes?v'
#列出所有的索引 以及每个索引的相关信息
curl 'http://127.0.0.1:9200/_cat/indices?v'
#查看集群分健康性
curl http://127.0.0.1:9200/_cluster/health?pretty=true

创建索引

#创建索引index1,简单输出
[root@node1 ~]#curl -XPUT '192.168.31.14:9200/index1'
{"acknowledged":true,"shards_acknowledged":true,"index":"index1"}

#创建索引index2,格式化输出
[root@node1 ~]#curl -XPUT '192.168.31.14:9200/index2?pretty'
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "index2"
}

#创建3个分片和2个副本
[root@node1 ~]#curl -XPUT '192.168.31.14:9200/index2' -H 'Content-Type: 
application/json' -d '
{
  "settings": {
    "index": {
      "number_of_shards": 3,  
      "number_of_replicas": 2
   }
 }
}'

#调整副本数为1,但不能调整分片数
[root@node1 ~]#curl -XPUT '192.168.31.14:9200/index2/_settings' -H 'Content-Type: 
application/json' -d '
{
  "settings": { 
      "number_of_replicas": 1
   }
}'
{"acknowledged":true}

删除索引

#删除格式
curl -XDELETE http://kibana服务器:9200/<索引名称>

Elasticsearch 插件

head 插件

通过使用插件可以实现对 ES 集群的状态监控, 数据访问, 管理配置等功能。
Head 是一个 ES 在生产较为常用的插件
git地址::https://github.com/mobz/elasticsearch-head

安装方式

GitHub 上提供了三种安装方式(编译安装,docker,浏览器插件)可以根据自己的需要自行选择

这里我们选择比较简单也是比较常用的一种:浏览器插件

从谷歌应用商店下载安装插件,支持chrome 和 edge浏览器
注意:需要科学上网
https://chrome.google.com/webstore/detail/elasticsearchhead/ffmkiejjmecolpfloofpjologoblkegm/related

针对没办法科学上网的小伙伴,我已经将Head插件文件下载下来了,放在资源文件里。需要请移步自取 https://download.csdn.net/download/m0_51277041/87800160
在这里插入图片描述

安装完插件,点击图标就可以打开插件

登陆,集群中的任意节点IP登陆即可
在这里插入图片描述

利用Head插件观察状态
head插件集群状态说明
状态颜色说明:

  • 绿色:索引数据完整,副本满足,所有条件都满足
  • 黄色:索引数据完整,副本不满足,即数据没有丢失,但副本丢失,可能会影响容错功能
  • 红色:有索引数据不完整的情况,即数据丢失
  • 紫色:有数据分片正在同步过程中

0 表示分片的片shard编号
粗体线框为主分片,细体线框为副本分片
星表示主master节点,圆点表示slave工作节点
在这里插入图片描述

添加索引后,可以观察到下面的显示
在这里插入图片描述

在这里插入图片描述

给索引插入数据

#_id 自动生成
#index1是索引数据库
[root@node1 ~]#curl -XPOST http://192.168.31.14:9200/index1/_doc -H 'Content-Type: application/json' -d '{"name":"Elasticsearch", "author": "linux", "version": "1.0"}' 
{"_index":"index1","_id":"HeAvM4gBZDYljtaHd4T0","_version":1,"result":"created","_shards:{"total":2,"successful":2,"failed":0},"_seq_no":1,"_primary_term":1}

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

STM32实现基于RS485的简单的Modbus协议

背景 我这里用STM32实现&#xff0c;其实可以搬移到其他MCU&#xff0c;之前有项目使用STM32实现Modbus协议 这个场景比较正常&#xff0c;很多时候都能碰到 这里主要是Modbus和变频器通信 最常见的是使用Modbus实现传感器数据的采集&#xff0c;我记得之前用过一些传感器都…

学习RHCSA的day.03

目录 2.6 Linux系统的目录结构 2.7 目录操作命令 2.8 文件操作命令 2.6 Linux系统的目录结构 1、Linux目录结构的特点 分区加载于目录结构&#xff1a; 使用树形目录结构来组织和管理文件。整个系统只有一个位于根分区的一个根目录&#xff08;树根&#xff09;、一棵树。…

盘点 | 10大类企业管理系统有哪些

人类的发展史也是一部工具的进化史&#xff0c;企业管理手段同样不例外。移动互联网时代给了传统低下的手工操作方式致命一击&#xff0c;应运而生的各类企业管理系统工具为企业管理插上腾飞的翅膀&#xff0c;彻底颠覆了手动低效率的历史&#xff0c;变得更加移动化、智能化。…

求最小生成树(Prim算法与Kruskal算法与并查集)

目录 1、案例要求2、算法设计与实现2.1 Prim算法2.1.1 构造无向图2.1.2 编写Prim算法函数2.1.3 实现代码2.1.4 运行结果截图 2.2 Kruskal算法2.2.1 构造无向图2.2.2 编写并查集UnionFind类2.2.3 编写Kruskal算法2.2.4 实现代码2.2.5 运行结果截图 3、总结 1、案例要求 利用贪心…

低代码与其拓荒,不如颠覆开发行业

目录 一、前言 二、低代码是一个值得信赖的“黑盒子” 粗略总结&#xff0c;开发者对低代码平台所见即所得设计器有两种反应&#xff1a; 三、人人都爱黑盒子 四、用“低代码平台”来开发是什么样的感受&#xff1f; 五、结论 一、前言 在科幻电影中&#xff0c;我们看到…

【OpenCV】C++红绿灯轮廓识别+ROS话题实现

目录 前言 一、背景知识 Opencv轮廓检测 ROS相关知识 二、环境依赖 三、具体实现 Step1&#xff1a;初始化ROS&#xff0c;订阅话题 Step2&#xff1a;接收话题&#xff0c;进入回调 1. 帧处理 2. 膨胀腐蚀处理 Step3&#xff1a;红绿特征处理 1. 提取绘制轮廓 2…

【网络协议详解】——数据链路层协议(学习笔记)

&#x1f4d6; 前言&#xff1a;数据链路层是 OSI 模型中的第二层&#xff0c;位于物理层之上&#xff0c;是通信网络中的重要组成部分之一。数据链路层协议负责将网络层传输的数据分组封装成帧&#xff0c;传输到物理层&#xff0c;并通过物理介质进行传输。同时&#xff0c;数…

算法笔记:A2-A4-RSRQ切换算法

1 LTE 切换 LTE切换是移动通信网络中的一个过程&#xff0c;移动设备在保持无间断服务的情况下&#xff0c;将其连接从一个基站切换到另一个基站。当移动设备离开当前基站的覆盖范围或网络资源拥塞时&#xff0c;就需要进行切换。LTE切换通常是基于特定的条件触发的&#xff0…

makefile 学习(1):C/C++ 编译过程

1. GCC 介绍 1.1 介绍 GCC 官方文档 https://gcc.gnu.org/onlinedocs/ 官方文档是最权威的&#xff0c;网上所有的答案都来自官方文档国内论坛参差不齐&#xff0c;找到好的答案比较花时间&#xff0c;并且很容易被错误的文档误导。所以推荐看官方文档靠谱点&#xff0c;并且…

二、数据字典开发

文章目录 二、数据字典开发1、搭建service-cmn模块1.1 搭建service-cmn模块1.2 修改配置1.3 启动类 2、数据字典列表2.1 数据字典列表接口2.1.1 model模块添加数据字典实体2.1.2 添加数据字典mapper2.1.4 添加数据字典controller 2.2 数据字典列表前端2.2.1 添加路由2.2.2 定义…

【Java算法题】剑指offer_01数据结构

前言 刷题链接&#xff1a; https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 1. 链表 JZ24 反转链表 思路&#xff1a;基本操作&#xff0c;如下所示。 /* public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} }…

ad18学习笔记一

如何自学altium designer如何自学altium designer&#xff1f; - 知乎如何自学altium designer 这里面有ad官方推荐的b站的视频&#xff1a;可以直接去b站关注ad官方账号 AltiumChina&#xff0c;它本身就发布了很多实用教程。 在知乎的这个界面也有Altium Designer Ver18_官…

c++ 11标准模板(STL) std::set(六)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…

如何使用SCQA模型提高表达能力

SCQA架构是“结构化表达”工具。 一、什么是“SCQA架构”&#xff1f;‍ S&#xff08;Situation&#xff09;情景——由熟悉的情境或事实引入 C&#xff08;Complication&#xff09;冲突——指出实际面临的困境或冲突 Q&#xff08;Question&#xff09;疑问——你如何分析…

文本三剑客正则表达式3

文章目录 文本三剑客&正则表达式31 awk工作原理2 awk的基本格式及其内置变量2.1 基本格式2.2 内置变量2.3 示例2.3.1 直接打印所有内容2.3.2 取每一行的第一列2.3.3 打印行号&#xff0c;及所有内容2.3.4 打印第三行2.3.5 打印2-4行2.3.6 打印第2行和第4行2.3.7 用正则表达…

基于harbor安装私有镜像仓库

目录 Harbor介绍 Harbor安装 下载完成后&#xff0c;在压缩包解压到/usr/local目录下&#xff1a; 修改Harbor配置文件 推送本地镜像到harbor上 1、给本地镜像打一个标签 2、 设置docker的daemon.json 3、重启docker 4、使用docker登录harbor 5、把本地的镜像push到harbor…

银豆信息张雪灿:钻石级合作伙伴的增长秘诀

编者按&#xff1a; 杭州银豆信息技术有限公司&#xff08;简称“银豆”&#xff09;&#xff0c;是一家专注于云计算服务的高科技企业&#xff0c;目前已为2000家企业级客户提供了专业的行业解决方案, 与人民网、光大银行、长安汽车金融、vivo金融、浙江省农科院、淄博市大数…

MediaPipe虹膜检测:实时虹膜跟踪和深度估计

包括计算摄影(例如,人像模式和闪光反射)和增强现实效果(例如,虚拟化身)在内的大量实际应用都依赖于通过跟踪虹膜来估计眼睛位置。一旦获得了准确的光圈跟踪,我们就可以确定从相机到用户的公制距离,而无需使用专用的深度传感器。反过来,这可以改善各种用例,从计算摄影…

机器学习之SVM分类器介绍——核函数、SVM分类器的使用

系类文章目录 机器学习算法——KD树算法介绍以及案例介绍 机器学习的一些常见算法介绍【线性回归&#xff0c;岭回归&#xff0c;套索回归&#xff0c;弹性网络】 文章目录 一、SVM支持向量机介绍 1.1、SVM介绍 1.2、几种核函数简介 a、sigmoid核函数 b、非线性SVM与核函…

从内网护卫到零信任尖兵:腾讯iOA炼成记

腾讯既是企业产品的服务商又是使用者&#xff0c;很多产品最原始的出发点最早只是为了解决腾讯自身某一个需求&#xff0c;经过不断地发展完善和业务场景锤炼&#xff0c;最终进化成一个成熟的企服产品。本系列文章讲述的是这样一组Made in Tencent故事&#xff0c;这是系列的第…