docker部署elasticsearch8.x

news2025/1/18 17:08:30

docker部署elasticsearch8.x

  • 提示
  • 1 注意版本差别
    • 1.1 docker修改配置
      • 1.1.2 docker使用vim报命令不存在的解决办法
      • 1.1.3 docker 容器内报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire ( : No such file or directory) 或者其他权限 PermissionError: [Errno 13] Permission denied:
  • 2 开放端口
  • 3 docker创建网络
  • 4 docker部署elasticsearch单机版
    • 4.1 创建存储elasticsearch配置的目录
    • 4.2 创建临时es节点
    • 4.3 拷贝es配置
    • 4.4 创建真实的es节点
    • 4.5 浏览器访问ip:9200
      • 4.5.1 关闭安全验证
      • 4.5.2 将https改为http
      • 4.5.3 重置es密码
    • 4.6 es添加其他用户
      • 4.6.1 添加kibana_system用户
      • 4.6.2 添加logstash用户
      • 4.6.3 重置用户密码
  • 5 kibana
    • 5.1 创建存储kibana配置的目录
    • 5.2 创建临时kibana节点
    • 5.3 拷贝kibana配置
    • 5.4 创建真实kibana节点
    • 5.5 加入es登录的账号密码
    • 5.6 Dev Tools
  • 6 安装IK分词器
    • 6.1 在线安装ik插件(较慢)
    • 6.2 离线安装ik插件(推荐)
    • 6.3 测试
  • 7 扩展词词典、停用词词典
    • 7.1 扩展词词典
    • 7.2 停用词词典
  • 8 部署docker-compose
    • 8.1 dockr-compose命令
  • 9 部署es集群
    • 9.1 编写docker-compose文件
    • 9.2 修改linux系统权限
    • 9.3 docker-compose部署es集群
    • 9.4 集群状态监控

提示

如果虚拟机切换了网络,需要重启docker服务:systemctl restart docker

1 注意版本差别

elasticsearch8.x默认开启了ssl认证,导致无法访问9200端口
解决办法:elasticsearch.yml中的配置项xpack.security.enabled把true改为false,或者访问地址前加https://

1.1 docker修改配置

1.1.2 docker使用vim报命令不存在的解决办法

apt-get update
apt-get install vim

1.1.3 docker 容器内报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire ( : No such file or directory) 或者其他权限 PermissionError: [Errno 13] Permission denied:

docker exec -it 容器id /bin/bash
改为
docker exec -u 0 -it 容器id /bin/bash

2 开放端口

  1. 开放服务器端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
  1. 重启防火墙
firewall-cmd --reload
  1. 查询有哪些端口是开启的
firewall-cmd --list-port

3 docker创建网络

因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:

docker network create es-net

4 docker部署elasticsearch单机版

4.1 创建存储elasticsearch配置的目录

/opt/soft/docker/elasticsearch/elastic

4.2 创建临时es节点

创建临时节点用于后续将es里的配置拷贝到/opt/soft/docker/elasticsearch/elastic

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:8.11.0

4.3 拷贝es配置

将临时es节点中的配置拷贝到/opt/soft/docker/elasticsearch/elastic中

docker cp -a es:/usr/share/elasticsearch/config/ /opt/soft/docker/elasticsearch/elastic
docker cp -a es:/usr/share/elasticsearch/data/ /opt/soft/docker/elasticsearch/elastic
docker cp -a es:/usr/share/elasticsearch/logs/ /opt/soft/docker/elasticsearch/elastic
docker cp -a es:/usr/share/elasticsearch/plugins/ /opt/soft/docker/elasticsearch/elastic

前面是es容器中的地址,后面是物理服务器上的地址。

拷贝后将临时es节点的容器删除。

4.4 创建真实的es节点

创建真实的es节点,并将物理节点上的配置映射到容器内。

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v /opt/soft/docker/elasticsearch/elastic/config/:/usr/share/elasticsearch/config \
	-v /opt/soft/docker/elasticsearch/elastic/data:/usr/share/elasticsearch/data \
	-v /opt/soft/docker/elasticsearch/elastic/logs:/usr/share/elasticsearch/logs \
    -v /opt/soft/docker/elasticsearch/elastic/plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:8.11.0

命令解释

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/opt/soft/docker/elasticsearch/elastic/data:挂载逻辑卷,绑定到es的数据目录
  • -v es-logs:/opt/soft/docker/elasticsearch/elastic/logs:挂载逻辑卷,绑定到es的日志目录
  • -v es-plugins:/opt/soft/docker/elasticsearch/elastic/plugins:挂载逻辑卷,绑定到es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net:加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置

4.5 浏览器访问ip:9200

因为elasticsearch8.x默认开启了ssl认证,导致无法通过http协议访问9200端口。
解决办法:elasticsearch.yml中的配置项xpack.security.enabled把true改为false,或者访问地址前加https://

4.5.1 关闭安全验证

/opt/soft/docker/elasticsearch/elastic/config修改elasticsearch.yml中的配置项xpack.security.enabled把true改为false即可,然后重启容器。

{
  "name" : "3e3f8ad3b0f4",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "0Aacm9CyQw-CFKp3uJ7Yjg",
  "version" : {
    "number" : "8.11.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "d9ec3fa628c7b0ba3d25692e277ba26814820b20",
    "build_date" : "2023-11-04T10:04:57.184859352Z",
    "build_snapshot" : false,
    "lucene_version" : "9.8.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

4.5.2 将https改为http

/opt/soft/docker/elasticsearch/elastic/config修改elasticsearch.yml中的配置项xpack.security.http.ssl.enabled把true改为false即可,然后重启容器。

在这里插入图片描述
用户名:elastic
密码:

4.5.3 重置es密码

  1. 进入es容器
docker exec -it 容器id /bin/bash
或【有root权限】
docker exec -u 0 -it 容器id /bin/bash
  1. 重置es密码
./bin/elasticsearch-reset-password -u elastic
  1. 重置结果
This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y


Password for the [elastic] user successfully reset.
New value: g=dCSssbBYwal14pTPRf

es账号:elastic
密码:g=dCSssbBYwal14pTPRf

4.6 es添加其他用户

  1. 进入es容器
docker exec -it 容器id /bin/bash
或【有root权限】
docker exec -u 0 -it 容器id /bin/bash

4.6.1 添加kibana_system用户

  1. 添加kibana_system用户
./bin/elasticsearch-users useradd zhyqin

输入密码:kibana123456
2. zhyqin赋角色权限: 这一步要执行,不然无法访问

./bin/elasticsearch-users roles -a superuser zhyqin ( 超级管理员角色)
./bin/elasticsearch-users roles -a kibana_system zhyqin (kibana的用户角色 )

4.6.2 添加logstash用户

  1. 添加logstash用户
./bin/elasticsearch-users useradd logstash_zhyqin

输入密码:logstash123456

  1. logstash_zhyqin赋角色权限: 这一步要执行,不然无法访问
./bin/elasticsearch-users roles -a superuser logstash_zhyqin
./bin/elasticsearch-users roles -a logstash_system logstash_zhyqin

4.6.3 重置用户密码

./bin/elasticsearch-reset-password -u zhyqin
./bin/elasticsearch-reset-password -u logstash_zhyqin

5 kibana

5.1 创建存储kibana配置的目录

/opt/soft/docker/elasticsearch/kibana/

5.2 创建临时kibana节点

创建临时节点用于后续将kibana里的配置拷贝到/opt/soft/docker/elasticsearch/kibana

docker run -d \
--name kibana \
-p 5601:5601  \
kibana:8.11.0

5.3 拷贝kibana配置

将临时kibana节点中的配置拷贝到/opt/soft/docker/elasticsearch/kibana中

docker cp -a kibana:/usr/share/kibana/config/ /opt/soft/docker/elasticsearch/kibana

前面是kibana容器中的地址,后面是物理服务器上的地址。

拷贝后将临时kibana节点的容器删除。

5.4 创建真实kibana节点

kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。
注意kibana的版本最好和es保持一致。

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
-v /opt/soft/docker/elasticsearch/kibana/config:/usr/share/kibana/config \
--network=es-net \
-p 5601:5601  \
kibana:8.11.0
  • --network es-net:加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,然后在浏览器输入地址访问:ip:5601,即可看到结果如下图:
在这里插入图片描述

5.5 加入es登录的账号密码

去/opt/soft/docker/elasticsearch/kibana/config修改kibana.yml中添加账号密码。

注意:这里不能直接使用elastic账号密码,因为这个权限太高,kibana默认禁止使用。

#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
# es登录账号
elasticsearch.username: zhyqin
# es登录密码
elasticsearch.password: kibana123456
# 关闭浏览器端配置
xpack.screenshotting.browser.chromium.disableSandbox: true

monitoring.ui.container.elasticsearch.enabled: true

然后重启容器。

5.6 Dev Tools

kibana中提供了一个Dev Tools界面:这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

Dev Tools在左侧,侧边栏的最下边。
在这里插入图片描述

6 安装IK分词器

6.1 在线安装ik插件(较慢)

# 进入容器内部
docker exec -it es/bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.11.0/elasticsearch-analysis-ik-8.11.0.zip

#退出
exit
#重启容器
docker restart es

6.2 离线安装ik插件(推荐)

  1. 解压缩分词器安装包
    去GitHub下载ik分词器并解压缩,重命名为ik。elasticsearch-analysis-ik-8.11.0.zip下载地址。
  2. 上传到es容器的plugins数据卷中,也就是:
    /opt/soft/docker/elasticsearch/elastic/plugins/,注意plugins目录只能保留ik,不要留存ik.zip,否则会报错。
  3. 重启容器
    # 重启容器
    docker restart es
    # 查看es日志
    docker logs -f es
    

6.3 测试

IK分词器包含两种模式:
- ik_smart:最少切分
- ik_max_word:最细切分

GET /_analyze
  {
    "text": "强哥最棒",
    "analyzer": "ik_max_word"
  }

结果:

{
  "tokens": [
    {
      "token": "强",
      "start_offset": 0,
      "end_offset": 1,
      "type": "CN_CHAR",
      "position": 0
    },
    {
      "token": "哥",
      "start_offset": 1,
      "end_offset": 2,
      "type": "CN_CHAR",
      "position": 1
    },
    {
      "token": "最",
      "start_offset": 2,
      "end_offset": 3,
      "type": "CN_CHAR",
      "position": 2
    },
    {
      "token": "棒",
      "start_offset": 3,
      "end_offset": 4,
      "type": "CN_CHAR",
      "position": 3
    }
  ]
}

在这里插入图片描述

7 扩展词词典、停用词词典

7.1 扩展词词典

随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“字节跳动” 等。

所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

  1. 打开IK分词器config目录
  2. 在IKAnalyzer.cfg.xml配置文件内容添加:
    <?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">ext.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. 新建一个ext.dic,可以参考config目录下复制一个配置文件进行修改
    字节跳动
    奥力给
    
  4. 重启elasticsearch
docker restart es

# 查看 日志
docker logs -f es

日志中已经成功加载ext.dic配置文件。

  1. 测试效果
    GET /_analyze
    {
      "analyzer": "ik_max_word",
      "text": "字节跳动是全球厉害的独角兽企业,奥力给!"
    }
    
    在这里插入图片描述

7.2 停用词词典

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。

IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。

  1. IKAnalyzer.cfg.xml配置文件内容添加:
<?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">ext.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords">stopword.dic</entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
  1. 在stopword.dic添加停用词
    吴某凡
    
  2. 重启elasticsearch
    # 重启服务
    docker restart es
    
    # 查看 日志
    docker logs -f es
    

日志中已经成功加载stopword.dic配置文件。
4. 测试效果:

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "吴某凡判多久"
}

在这里插入图片描述

8 部署docker-compose

  1. cd到/usr/local/bin/路径
  2. 从github上下载二进制文件
    wget https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64
    
  3. 重新命名
    mv docker-compose-linux-x86_64 docker-compose
    
  4. 添加可执行权限
    chmod +x docker-compose
    

8.1 dockr-compose命令

  1. 部署一个Compose应用
    docker-compose up
    
    默认情况下该命令会读取名为docker-compose.ymldocker-compose.yaml的文件,也可以使用-f指定其他文件名。通常情况下,会使用-d参数令应用在后台启动。
  2. 停止Compose应用相关的所有容器,但不会删除它们
    docker-compose stop
    
    被停止的应用可以很容易地通过docker-compose restart命令重新启动。
  3. 删除已停止的Compose应用
    docker-compose rm
    
    删除容器和网络,但是不会删除卷和镜像。
  4. 重启已停止的Compose应用
    docker-compose restart
    
    如果在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
  5. 列出Compose应用中的各个容器
    docker-compose ps
    
    输出内容包括当前状态、容器运行的命令以及网络端口。
  6. 停止并删除运行中的Compose应用
    docker-compose down
    
    删除容器和网络,但是不会删除卷和镜像。

9 部署es集群

参考1:搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)
参考2:docker-compose快速部署elasticsearch-8.x集群+kibana

部署es集群可以直接使用docker-compose来完成,不过要求Linux虚拟机至少有4G的内存空间。

9.1 编写docker-compose文件

首先编写一个docker-compose文件,内容如下:

version: '3'
services:
  es01:
    image: elasticsearch:8.11.0
    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
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - elastic
  es02:
    image: elasticsearch:8.11.0
    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
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    ports:
      - 9202:9200
    networks:
      - elastic
  es03:
    image: elasticsearch:8.11.0
    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
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    ports:
      - 9203:9200
    networks:
      - elastic
volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

注意事项:

  1. 从yml文件中可以看到相关端口,需要防火墙开放9201、9202、9203端口
    es01端口9201
    es02端口9202
    es03端口9203
    
  2. 此配置关闭了安全验证,也就是- xpack.security.enabled=false,否则会报如下错误
Transport SSL must be enabled if security is enabled. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]; 
  1. 或者将- xpack.security.enabled=false替换为- xpack.security.transport.ssl.enabled=true(暂未实践)
    需要加入ssl证书相关配置。(docker-compose快速部署elasticsearch-8.x集群+kibana)
  2. 上传到/opt/soft/docker-compose/
    在这里插入图片描述

9.2 修改linux系统权限

  1. es运行还需要修改一些linux系统权限,修改/etc/sysctl.conf文件。
    vim /etc/sysctl.conf
    
    添加下面的内容:
    vm.max_map_count=262144
    
    否则在部署时会报:
    node validation exception\n[2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.11/bootstrap-checks.html]\nbootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144];
    
  2. 让配置生效:
    sysctl -p
    
  3. 重启虚拟机和docker
    systemctl start docker
    

9.3 docker-compose部署es集群

  1. 部署es集群

    docker-compose up
    或
    docker-compose up -d(推荐)
    

    部署结果:

    [root@standalone docker-compose]# docker-compose up -d
    [+] Building 0.0s (0/0)                                                                                          docker:default
    [+] Running 3/3
     ✔ Container es02  Started                                                                                                 0.0s
     ✔ Container es03  Started                                                                                                 0.1s
     ✔ Container es01  Started                                                                                                 0.0s
    [root@standalone docker-compose]#
    
  2. 查看每个节点的日志:

docker logs -f es01
docker logs -f es02
docker logs -f es03

9.4 集群状态监控

这里推荐使用cerebro来监控es集群状态,官方网址:https://github.com/lmenezes/cerebro

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

案例058:基于微信小程序的智能社区服务系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

STM32 定时器总结

缩写 ARR: Auto-Reload Register&#xff08;保存定时器的计数范围&#xff09; PSC: Prescaler register&#xff08;预分频器寄存器&#xff0c;根据设置的分频因子N&#xff0c;计数N个定时器时钟脉冲后&#xff0c;产生一个CNT计数&#xff0c;以此实现分频功能&#xff0…

【WebSocket】使用ws搭建一个简单的在线聊天室

前言 什么是WebSockets&#xff1f; WebSockets 是一种先进的技术。它可以在用户的浏览器和服务器之间打开交互式通信会话。使用此 API&#xff0c;你可以向服务器发送消息并接收事件驱动的响应&#xff0c;而无需通过轮询服务器的方式以获得响应。 webscokets 包括webscoket…

【计算机网络笔记】物理层——基带传输基础

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

二叉平衡树

一直想深入的研究一下&#xff0c;并手写平衡二叉树的插入、删除代码。 二叉树是动态查找的典范&#xff0c;但在极限情况下&#xff0c;二叉树的查找效果等同于链表&#xff0c;而平衡二叉树可以完美的达到 log ⁡ 2 n \log_2 n log2​n。 AVL简称平衡二叉树&#xff0c;缩写…

gpt1与bert区别

区别1&#xff1a;网络结构&#xff08;主要是Masked Multi-Head-Attention和Multi-Head-Attention&#xff09; gpt1使用transformer的decoder&#xff0c;单向编码&#xff0c;是一种基于语言模型的生成式模型&#xff0c;更适合生成下一个单词或句子 bert使用transformer的…

jenkins搭建文档

jenkins搭建文档 简介一、安装运行环境1、安装JDK环境1&#xff09;查询自带的JDK2&#xff09;卸载自带的JDK3&#xff09;创建java文件夹并将jdk上传到该文件夹4&#xff09;解压5&#xff09;配置环境变量6&#xff09;配置生效7&#xff09;验证是否成功 2、安装maven环境1…

学习IO的第四天

作业 : 使用两个子进程完成两个文件的拷贝&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一般内容&#xff0c;父进程用于回收两个子进程的资源 #include <head.h>int main(int argc, const char *argv[]) {int rd -1;if((rdopen("./01_test.c&quo…

18、XSS——cookie安全

文章目录 1、cookie重要字段2、子域cookie机制3、路径cookie机制4、HttpOnly Cookie机制5、Secure Cookie机制6、本地cookie与内存cookie7、本地存储方式 一般来说&#xff0c;同域内浏览器中发出的任何一个请求都会带上cookie&#xff0c;无论请求什么资源&#xff0c;请求时&…

python 数据分析

数据分析 数据分析是指用适当的方法对收集的数据进行分析,提取有用信息并且形成结论. 广义的数据分析包括狭义的数据分析和数据挖掘.狭义的数据分析是指根据目的,采用对比分析,分组分析,交叉分析,回归分析等分析方法,对数据进行分析和处理,得到特征统计量的过程.数据挖掘是指…

【LLM_05】使用fastgpt搭建本地离线大语言模型(Chatglm3)问答+知识库平台

1、FastGPT 的知识库逻辑1.1 基础概念1.2 FastGPT知识库的导入1.3 FastGPT新建应用&#xff08;1&#xff09;创建一个知识库助手&#xff08;2&#xff09;创建一个python开发小助手 2、词向量比较测试2.1 开启词向量模型2.2 词向量模型性能比较 3、配置好之后的运行3.1 运行大…

python二维数组创建赋值问题:更改单个值却更改了所有项的值

test_list [] dic1 {} test_list [dic1 for _ in range(3)] ll [1, 2, 3]for i in range(3):test_list[i][value] ll[i]print(test_list)运行结果&#xff1a;每次赋值都更改了所有项 原因&#xff1a;python的二位数据创建方式就是这样&#xff0c;官方文档中有描述Wha…

数据结构初阶之二叉树性质练习与代码练习

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力,共赴大厂。 目录 1.前言 2.性质练习 3…

嵌入式学习---ARM中断控制系统

目录 外部事件与CPU的交互方式查询方式中断方式 什么是中断源S3C2440支持60个中断源FIQ和IRQ 中断处理流程将外设中断通知给CPUSUBSRCPND寄存器INTSUBMSK寄存器SRCPND寄存器INTMSK寄存器INTMOD寄存器INTPND寄存器 硬件中断处理是实时系统设计的最重要、最关键的问题。 外部事件…

Ubuntu22.04通过Maas和Juju部署openstack charm

目录 官方文档材料准备软件硬件 模板机和虚拟网络安装MAAS官方文档MAAS节点配置安装MAAS浏览器登录MAAS进行配置 激活DHCP 官方文档 https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/ 这是一个通过Maas面板即可部署openstack的方式&#xff0…

CTF特训日记day7

复现华为杯研究生国赛的adv_lua题目 从题目描述来看&#xff0c;漏洞应该和bytearray相关 用IDA逆向一下然后直接字符串搜索bytearray 只有这里有bytearray字样&#xff0c;继续查找交叉引用&#xff1a; 可以看到一系列方法&#xff0c;显然都是为bytearray所注册的吗&am…

smarty模版 [BJDCTF2020]The mystery of ip 1

打开题目 点击flag给了我们一个ip 点击hint&#xff0c;查看源代码处告诉了我们要利用这个ip bp抓包&#xff0c;并添加X-Forward-For头 所以这道题是XFF可控 本来联想到XFF漏洞引起的sql注入&#xff0c;但是我们无论输入什么都会正常回显&#xff0c;就联想到ssti注入 我们…

区块链密码学:基础知识、应用与未来发展

一、引言 区块链技术&#xff0c;作为一种分布式、去中心化的数据管理方式&#xff0c;密码学在其安全性和可靠性方面发挥着至关重要的作用。本文将详细介绍区块链密码学的基础知识、应用以及未来发展趋势。 二、区块链密码学基础知识 区块链密码学是区块链技术的核心组成部分…

React面试题(1)

1、什么是React&#xff1f; React是一个用于构建用户界面的JavaScript库。 2、React的特点是什么&#xff1f; React的主要特点包括&#xff1a; 组件化虚拟DOM单向数据流JSX语法高效的性能生态系统丰富 3、什么是JSX&#xff1f; JSX是一种JavaScript的语法扩展&#x…

2023年12月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…