基于openEuler20.03安装openGauss5.0.0及安装DBMind

news2024/12/25 23:53:54

基于openEuler20.03安装openGauss5.0.0及安装DBMind

    • 一、环境说明
    • 二、安装部署
    • 三、问题及解决

一、环境说明

  1. 虚拟机:VirtualBox
  2. 操作系统:openEuler20.3LTS (x86)
  3. 数据库:openGauss5.0.0 (x86)
  4. DBMind:dbmind-5.0.0 (linux)

二、安装部署

  1. 下载openEuler20.03 LTS(安装省略),点击下载

  2. 下载openGauss-5.0.0 企业版(可选),点击下载

  3. 下载DBMind,点击下载

  4. 下载node-exporter,点击下载

  5. 下载prometheus,点击下载

  6. 安装openGauss5.0.0,使用root用户进行安装:

    • 编辑clusterconfig.xml,并添加如下内容,注意:主机名和IP地址修改成你自己的环境
      <?xml version="1.0" encoding="UTF-8"?>
      <ROOT>
          <!-- openGauss整体信息 -->
          <CLUSTER>
              <!-- 数据库名称 -->
              <PARAM name="clusterName" value="mycluster" />
              <!-- 数据库节点名称(hostname) -->
              <PARAM name="nodeNames" value="openEuler01" />
              <!-- 数据库安装目录-->
              <PARAM name="gaussdbAppPath" value="/opt/install/app" />
              <!-- 日志目录-->
              <PARAM name="gaussdbLogPath" value="/opt/install/log/omm" />
              <!-- 临时文件目录-->
              <PARAM name="tmpMppdbPath" value="/opt/install/tmp" />
              <!-- 数据库工具目录-->
              <PARAM name="gaussdbToolPath" value="/opt/install/om" />
              <!-- 数据库core文件目录-->
              <PARAM name="corePath" value="/opt/install/corefile" />
              <!-- 节点IP,与数据库节点名称列表一一对应 -->
              <PARAM name="backIp1s" value="192.168.56.6"/> 
          </CLUSTER>
          <!-- 每台服务器上的节点部署信息 -->
          <DEVICELIST>
              <!-- 节点1上的部署信息 -->
              <DEVICE sn="100001">
              <!-- 节点1的主机名称 -->
              <PARAM name="name" value="openEuler01"/>
              <!-- 节点1所在的AZ及AZ优先级 -->
              <PARAM name="azName" value="AZ1"/>
              <PARAM name="azPriority" value="1"/>
              <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
              <PARAM name="backIp1" value="192.168.56.6"/>
              <PARAM name="sshIp1" value="192.168.56.6"/>   
      	    <!--dbnode-->
      	    <PARAM name="dataNum" value="1"/>
      	    <PARAM name="dataPortBase" value="15432"/>
      	    <PARAM name="dataNode1" value="/opt/install/data/dn"/>
              <PARAM name="dataNode1_syncNum" value="0"/>
              </DEVICE>
          </DEVICELIST>
      </ROOT>
      
    • 编辑install.sh脚本,添加如下内容,注意:主机名和IP地址修改成你自己的环境
      #!/bin/bash
      
      # 设置字符集参数
      cat >>/etc/profile<<EOF
      export LANG=en_US.UTF-8
      EOF
      
      # 使修改生效
      source /etc/profile
      
      # 修改python版本并安装libaio包
      mv /usr/bin/python /usr/bin/python.bak
      ln -s /usr/bin/python3 /usr/bin/python
      python -V
      yum install libaio* -y
      
      # 创建目录,用于存放openGauss软件包
      mkdir -p /opt/software/openGauss
      mv clusterconfig.xml /opt/software/openGauss/
      cd /opt/software/openGauss
      
      # 下载openGauss安装包并解压
      wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/x86_openEuler/openGauss-5.0.0-openEuler-64bit-all.tar.gz
      tar -zvxf openGauss-5.0.0-openEuler-64bit-all.tar.gz
      tar -zvxf openGauss-5.0.0-openEuler-64bit-om.tar.gz
      
      # 预安装数据库
      chmod -R 755 /opt/software/openGauss
      cd /opt/software/openGauss/script
      ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xml
      
      chown omm:dbgrp -R /opt/software/
      
      # 安装数据库,注意:以下操作是在suben用户下执行
      su - omm -c 'gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--encoding=UTF8"  --dn-guc="max_process_memory=4GB"  --dn-guc="shared_buffers=256MB" --dn-guc="bulk_write_ring_size=256MB" --dn-guc="cstore_buffers=16MB";gs_om -t status --detail'
      
    • 执行脚本进行安装
      sh install.sh
      
    • 创建dbmind_monitor数据库用户及元数据库
      gs_guc reload -D /opt/install/data/dn -c 'password_encryption_type=1'
      gsql -p 15432 -d postgres -c 'create user dbmind_monitor password "openEuler@1234";' 
      gsql -p 15432 -d postgres -c 'alter user dbmind_monitor monadmin;'
      gsql -p 15432 -d postgres -c 'grant all privileges to dbmind_monitor;'
      gs_guc reload -D /opt/install/data/dn -c 'password_encryption_type=2'
      gsql -p 15432 -d postgres -c 'create database metadatabase owner dbmind_monitor;'
      
  7. 安装DBMind,使用omm用户安装:

    • 上传dbmind安装包到/home/omm下,确保该文件用户是omm,用户组是dbgrp,修改命令如下:
      chown omm:dbgrp /home/omm/dbmind-installer-x86_64-python3.10.sh.tar.gz
      
    • 解压
      tar zxvf /home/omm/dbmind-installer-x86_64-python3.10.sh.tar.gz
      
    • 执行脚本安装:
      sh /home/omm/dbmind-installer-x86_64-python3.10.sh
      
    • 环境变量生效
      source ~/.bashrc
      
    • 测试是否安装成功:
      gs_dbmind --help
      
    • 配置python资源库
      mkdir ~/.pip/
      vim ~/.pip/pip.conf
      
      添加如下内容:
      [global]
      index-url = http://mirrors.aliyun.com/pypi/simple/
      trusted-host = mirrors.aliyun.com
      timeout = 120
      
    • 安装第三方插件
      建议您将DBMind所需的Python运行环境安装到DBMind根目录下的 python 目录中,DBMind会优先选择使用在其根目录下 python 目录中的环境。即 gs_dbmind 命令会首先在python/bin 目录下寻找 python3 命令执行后续的Python功能。
      /home/omm/openGauss-DBMind/python/bin/python -m pip install -r /home/omm/openGauss-DBMind/requirements-x86.txt
      /home/omm/openGauss-DBMind/python/bin/python -m pip install python-multipart
      
  8. 安装node-exporter,并将其上传到omm用户的家目录/home/omm,修改其用户和用户组为omm:dbgrp

    • 解压
      tar -zvxf node_exporter-1.7.0.linux-amd64.tar.gz -C /opt/software/
      cd /opt/software/node_exporter-1.7.0.linux-amd64
      
    • 启动 【node_exporter】 默认端口号为9100:
      ./node_exporter > node_exporter.log 2>&1 &
      
    • 查看端口是否处于监听状态:
      netstat -anp|grep 9100
      
      正常会看到如下内容:
      [omm@openEuler01 openGauss-DBMind]$ netstat -anp|grep 9100
      tcp        0      0 192.168.56.11:39872     192.168.56.11:9100      ESTABLISHED 30259/./prometheus
      tcp6       0      0 :::9100                 :::*                    LISTEN      24724/./node_export
      tcp6       0      0 192.168.56.11:9100      192.168.56.11:39872     ESTABLISHED 24724/./node_export
      [omm@openEuler01 openGauss-DBMind]$
      
    • 启动【cmd_exporter
      cmd_exporter用来执行cmd命令并获取返回结果以及采集日志信息,当前主要用于采集集群状态,如是主备集群环境,则只需要在一个备数据库节点上安装就可以了。
      gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9180 --disable-https
      
    • 启动【opengauss_exporter
      opengauss_exporter是DBMind采集数据库的组件,从openGauss数据库中读取系统表(或系统视图)的数据,并通过Prometheus保存起来。支持远程部署,需要在每个数据库节点上安装。opengauss_exporter的默认端口号范围是9187-9197,如果被占用可以使用其他端口。注意:对于采用URL格式的DSN,由于@等特殊字符用来分割URL串中各个部分的内容,故需要URL编码。例如某个用户dbmind的密码为openEuler@1234,则URL格式的DSN为psotgresql:dbmind:Test%40123@127.0.0.1:15432,即将@字符编码为%40
      gs_dbmind component opengauss_exporter --url postgresql://dbmind_monitor:openEuler%401234@192.168.56.11:15432/postgres --web.listen-address 0.0.0.0 --web.listen-port 9187 --log.level info --disable-https
      
      启动成功后,可执行如下命令查看,如能看到输出,则说明正常:
      # 端口号9187为用户指定的端口号, 如果失败会显示Connection refused  
      curl -vv http://localhost:9187/metrics 
      
  9. 安装Prometheus,并将其上传到omm用户的家目录/home/omm,修改其用户和用户组为omm:dbgrp。

    prometheus是业内非常流行的开源监控系统,同时本身也是一款时序数据库。需要将其安装在主控节点,默认占用端口为9090。

    • 解压:

      tar -zvxf prometheus-2.48.0.linux-amd64.tar.gz -C /opt/software/
      cd /opt/software/nprometheus-2.48.0.linux-amd64
      
    • 修改配置文件

      vim prometheus.yml
      

      在该文件中找到 scrape_configs 部分,该部分包含了所有需要被抓取的targets的配置信息,用户需要根据自己的节点数量和端口占用情况进行修改。本实验是单机模式,做如下配置:

      scrape_configs:
        # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
        - job_name: "prometheus"
      
      	# metrics_path defaults to '/metrics'
      	# scheme defaults to 'http'.
      
      	static_configs:
      	  - targets: ["192.168.56.11:9090"]
        - job_name: "opengauss_exporter"
      	static_configs:
      	  - targets: ["192.168.56.11:9187"]
        - job_name: "node_exporter"
      	static_configs:
      	  - targets: ["192.168.56.11:9100"]
        - job_name: "reprocessing_exporter"
      	static_configs:
      	  - targets: ["192.168.56.11:8181"]
        - job_name: "cmd_exporter"
      	static_configs:
      	  - targets: ["192.168.56.11:9180"]
      
    • 启动【prometheus】并将日志输入到同目录下的prometheus.log里:

      ./prometheus --web.enable-admin-api --web.enable-lifecycle --storage.tsdb.retention.time=1w >./prometheus.log 2>&1 & 
      
    • 再启动【reprocessing_exporter】

      reprocessing_exporter是一个用于二次加工处理数据的exporter。由于node_exporter、opengauss_exporter保存到prometheus中的数据是即时的监控信息,而只通过这些信息是无法反应某些指标的瞬时增量信息的。因此,reprocessing_exporter可以用来计算增量信息或者聚合结果等。

      由于reprocessing_exporter是从prometheus中获取指标数据,进行二次加工处理后再返回给prometheus。因此,它与prometheus是一一对应的,即如果只有一个prometheus服务,则只需要一个reprocessing_exporter即可。prometheus和reprocessing_exproter一起部署在主控节点上,reprocessing_exproter依赖prometheus,所以需要先启动prometheus再启动reprocessing_exporter。

      gs_dbmind component reprocessing_exporter 192.168.56.11 9090 --web.listen-address 0.0.0.0 --web.listen-port 8181 --disable-https 
      
  10. 生成DBMind配置文件,在openGauss-DBMind目录下执行如下命令会在openGauss-DBMind目录下创建dbmindconf/dbmind.conf配置文件:

    cd /home/omm/openGauss-DBMind
    gs_dbmind service setup -c dbmindconf  
    
  11. 修改DBMind配置文件,需要修改内容如下:

    vim /home/omm/openGauss-DBMind/dbmindconf/dbmind.conf  
    

    修改如下内容,如下为必填的配置项如下:

    • TDSB为时序数据库配置,即prometheus相关信息。
      [TSDB]
      name = prometheus # The type of time-series database. Options: prometheus.
      host = 192.168.56.11 # Address of time-series database.
      port = 9090 # Port to connect to time-series database.
      
    • 元数据库,DBMind服务器所创建的metadatabase数据库相关信息,注意用户需要有数据库创建的权限。在启动DBMind之前,需要把metadatabase创建好。
      [METADATABASE]
      dbtype = opengauss # Database type. Options: sqlite, opengauss, postgresql.
      host = 192.168.56.11 # Address of meta-data database.
      port = 15432 # Port to connect to meta-data database.
      username = dbmind_monitor # User name to connect to meta-data database.
      password = openEuler@1234  # Password to connect to meta-data database.
      database = metadatabase  # Database name to connect to meta-data database.
      
    • 工作线程数,该模块用于指定DBMind可以使用的worker子进程数量,如果写0则会进行自适应,尽可能多地使用CPU资源。
      [WORKER]
      process_num = 2  # Number of worker processes on a local node. Less than or equal to zero means adaptive.
      
    • openGauss数据库Agent,该模块用于指定DBMind连接到openGauss Agent的信息。使用该Agent,可以让DBMind获取到被监控实例的即时状态,从而提高分析准确性。同时,也可以向数据库实例下发一些变更动作。
      masterurl为http://{DBMind服务器IP}:{opengaussexporter监听端口},置空会自动识别。usename为数据库实例的dbmind_minotor用户。
      [AGENT]
      master_url = 
      username = dbmind_monitor 
      password = openEuler@1234
      
    • 设置定时任务TIMED_TASK,可设置参数有如下:
      Discard_expired_results: 删除过期结果
      self_monitoring:指标异常监控
      daily_inspection:日检
      weekly_inspection:周检
      monthly_inspection: 月检
      slow_sql_diagnosis:慢SQL诊断
      knob_recommend:参数调优
      slow_query_killer:慢SQL查杀​​​​​​​​​​​​​​
      [TIMED_TASK]
      task=discard_expired_results,self_monitoring,daily_inspection, weekly_inspection,slow_sql_diagnosis,knob_recommend,slow_query_killer
      
    • 配置DNMind的WEB-SERVICE访问界面
      [WEB-SERVICE]
      host = 192.168.56.11  # Which host to bind for web service. '0.0.0.0' means to bind all.
      port = 8080  # Port to listen for web serivce.
      
  12. 初始化DBMind配置,即会在元数据metadatabase创建30表

    cd /home/omm/openGauss-DBMind
    gs_dbmind service setup --initialize -c dbmindconf
    

    正常执行后,会看到如下信息:

    [omm@openEuler01 openGauss-DBMind]$ gs_dbmind service setup --initialize -c dbmindconf
    NOTICE: You have set the variable PYTHONPATH. DBMind ignored it.
    Starting to generate a dynamic config file...
    WARN: default PostgreSQL connector (psycopg2-binary) does not support openGauss.
    It would help if you compiled psycopg2 with openGauss manually or created a connection user after setting the GUC password_encryption_type to 1.
    Notice: Without explicitly setting agent configurations, the automatic detection mechanism is used.
    Starting to encrypt the plain-text passwords in the config file...
    Starting to initialize and check the essential variables...
    Starting to connect to meta-database and create tables...
    The setup process finished successfully.
    

    另外,可以登录openGauss数据库下进行查看是否有30张表生成:

    gsql -d metadatabase -p 15432 -r
    metadatabase=# \d
                                                       List of relations
     Schema |                     Name                      |   Type   |     Owner      |             Storage
    --------+-----------------------------------------------+----------+----------------+----------------------------------
     public | tb_existing_indexes                           | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_existing_indexes_id_seq                    | sequence | dbmind_monitor |
     public | tb_future_alarms                              | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_future_alarms_future_alarm_id_seq          | sequence | dbmind_monitor |
     public | tb_healing_records                            | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_healing_records_id_seq                     | sequence | dbmind_monitor |
     public | tb_history_alarms                             | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_history_alarms_history_alarm_id_seq        | sequence | dbmind_monitor |
     public | tb_index_recommendation                       | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_index_recommendation_id_seq                | sequence | dbmind_monitor |
     public | tb_index_recommendation_stats                 | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_index_recommendation_stats_id_seq          | sequence | dbmind_monitor |
     public | tb_index_recommendation_stmt_details          | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_index_recommendation_stmt_details_id_seq   | sequence | dbmind_monitor |
     public | tb_index_recommendation_stmt_templates        | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_index_recommendation_stmt_templates_id_seq | sequence | dbmind_monitor |
     public | tb_killed_slow_queries                        | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_killed_slow_queries_killed_query_id_seq    | sequence | dbmind_monitor |
     public | tb_knob_recommendation_details                | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_knob_recommendation_details_id_seq         | sequence | dbmind_monitor |
     public | tb_knob_recommendation_metric_snapshot        | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_knob_recommendation_metric_snapshot_id_seq | sequence | dbmind_monitor |
     public | tb_knob_recommendation_warnings               | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_knob_recommendation_warnings_id_seq        | sequence | dbmind_monitor |
     public | tb_regular_inspections                        | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_regular_inspections_id_seq                 | sequence | dbmind_monitor |
     public | tb_slow_queries                               | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_slow_queries_journal                       | table    | dbmind_monitor | {orientation=row,compression=no}
     public | tb_slow_queries_journal_journal_id_seq        | sequence | dbmind_monitor |
     public | tb_slow_queries_slow_query_id_seq             | sequence | dbmind_monitor |
    (30 rows)
    
  13. 启动DBMind服务:

    gs_dbmind service start -c dbmindconf  
    

    正常执行命令会看到有成功信息打印出来
    另外,可以通过查看端口8080是否被监听,命令如下:

    [omm@openEuler01 openGauss-DBMind]$ netstat -anp|grep 8080
    tcp        0      0 192.168.56.11:8080      0.0.0.0:*               LISTEN      33752/DBMind [Maste
    
  14. 打开浏览器,访问http://192.168.56.11:8080/,正常情况下会看到如下界面:

    • 首页,需登录
      在这里插入图片描述
    • 登录成功
      在这里插入图片描述
      至此,已成功在openEuler20.03 LTS上安装openGauss-5.0.0企业版及DBMind-5.0.0。希望对你有所帮助~~~~

三、问题及解决

  1. 在安装过程中,可能因python环境导致缺少依赖的问题,具体文件及解决过程如下:
    [omm@openEuler01 openGauss-DBMind]$ gs_dbmind service start -c dbmindconf
    NOTICE: You have set the variable PYTHONPATH. DBMind ignored it.
    The process is starting.
    Notice: Without explicitly setting agent configurations, the automatic detection mechanism is used.
    [omm@openEuler01 openGauss-DBMind]$ An exception raised: Form data requires "python-multipart" to be installed.
    You can install "python-multipart" with:
    
    pip install python-multipart
    
    pip install python-multipart^C
    [omm@openEuler01 openGauss-DBMind]$ cd python/
    [omm@openEuler01 python]$ ls
    bin              condabin    envs  include  LICENSE.txt  pkgs   shell  x86_64-conda_cos7-linux-gnu
    compiler_compat  conda-meta  etc   lib      man          share  ssl    x86_64-conda-linux-gnu
    [omm@openEuler01 python]$ bin/python -m pip install python-multipart
    /opt/install/om/lib/ipaddress.py:1106: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
      raise TypeError("%s and %s are not of the same version" (a, b))
    Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
    Collecting python-multipart
      Downloading http://mirrors.aliyun.com/pypi/packages/b4/ff/b1e11d8bffb5e0e1b6d27f402eeedbeb9be6df2cdbc09356a1ae49806dbf/python_multipart-0.0.6-py3-none-any.whl (45 kB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.7/45.7 kB 752.7 kB/s eta 0:00:00
    Installing collected packages: python-multipart
    Successfully installed python-multipart-0.0.6
    [omm@openEuler01 python]$ cd ..
    [omm@openEuler01 openGauss-DBMind]$ which python-multipart
    which: no python-multipart in (/home/omm/openGauss-DBMind:/opt/install/app/bin:/opt/install/om/script/gspylib/pssh/bin:/opt/install/om/script:/home/omm/.local/bin:/home/omm/bin:/opt/install/app/bin:/opt/install/om/script/gspylib/pssh/bin:/opt/install/om/script:/bin:/opt/software/binarylibs/buildtools/openeuler_x86_64/gcc7.3/gcc/bin:/home/omm/.local/bin:/home/omm/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/install/om/script/gspylib/pssh/bin:/opt/install/om/script:/root/gauss_om/omm/script)
    [omm@openEuler01 openGauss-DBMind]$ gs_dbmind service start -c dbmindconf
    NOTICE: You have set the variable PYTHONPATH. DBMind ignored it.
    The process is starting.
    Notice: Without explicitly setting agent configurations, the automatic detection mechanism is used.
    [omm@openEuler01 openGauss-DBMind]$ netstat -anp|grep 8080
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp        0      0 192.168.56.11:8080      0.0.0.0:*               LISTEN      33752/DBMind [Maste
    tcp        0      0 192.168.56.11:58080     192.168.56.11:9090      TIME_WAIT   -
    [omm@openEuler01 openGauss-DBMind]$
    
    

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

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

相关文章

智能优化算法应用:基于学生心理学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于学生心理学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于学生心理学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学生心理学算法4.实验参数设定5.算法结果…

Esxi6.0 安装web管理界面

安装6.0之后默认是vSphere Client进行远程连接&#xff0c;需要安装客户端&#xff0c;不是太方便。搜索发现还真可以实现web管理&#xff0c;步骤如下&#xff1a; 1、开启esxi的ssh&#xff0c;步骤如下图&#xff1a; 2、下载升级包esxui-signed-7119706.vib&#xff0c;上…

案例四:使用系统存储过程查看相关信息

1、什么是存储过程。 【1】模块化程序设计 【2】执行速度快&#xff0c;效率高 【3】减少网络流量 【4】具有良好的安全性 存储过程分为两类&#xff1a; 1、系统存储过程、2、用户自定义的存储过程 2、若xp_cmdshell作为服务器安全配置的一部分而被关闭&#xff0c;则需要配置…

力扣11.盛最多水的容器

题目描述 思路 用双指针法。 每次向内移动较短的那个板&#xff0c;能带来更大的效益。 代码 class Solution {public int maxArea(int[] height) {int res 0;int i 0,j height.length - 1;while(i < j){res height[i] < height[j] ? Math.max((j - i) * height…

祸害了人民3年的新冠消失了,但有些奇怪现象,让人百思不得其解

真是没想到啊&#xff0c;祸害我们3年的新冠病毒突然就消失了&#xff0c;但是紧接着呢&#xff0c;却有一个非常奇怪的现象出现了&#xff0c;真的是令人百思不得其解&#xff01; 新冠病毒&#xff0c;于2020年的开始&#xff0c;可以说根本就没有任何缓冲期&#xff0c;一开…

BUU SQL COURSE 1

四 发现有登录框&#xff0c;爆破半天也爆破不出来&#xff0c;只能从别的地方下手了 F12一下 发现了一个传参 进去发现id可以传参&#xff0c;sql注入一下试试 前三个都有回显&#xff0c;当id4的时候页面没有回显了&#xff0c;正好验证 了页面 有三个新闻 当order by 3的时…

docker安装及简单使用(Linux版本)

文章目录 前言一、docker安装二、docker命令pull&#xff08;安装镜像&#xff09;images&#xff08;查看镜像&#xff09;run&#xff08;创建容器&#xff09;删除容器exec&#xff08;进入运行中的容器&#xff09;常用命令 总结如有启发&#xff0c;可点赞收藏哟~ 前言 ht…

虚拟人如何在线下活动实现实时交互?动捕设备或为最优解

随着时代的进步&#xff0c;虚拟人凭借其打破时空界限、新颖差异化视觉效果等特点&#xff0c;在发布会、峰会等线下活动中发挥着重要作用&#xff0c;想要实现虚拟人在线下活动中实时交互&#xff0c;使用动捕设备可以让虚拟人化身虚拟主持人、虚拟主播、虚拟舞者演员等。 虚拟…

倒计时5天:SpinalHDL应用前景探索线上研讨会

SpinalHDL是一种开源的高级硬件描述语言&#xff0c;它可以作为VHDL或Verilog的替代&#xff0c;Charles Papon 在2014年创建后&#xff0c;伴随着数年来开源硬件设计的蓬勃发展&#xff0c;在多方面显露出优势&#xff0c;譬如&#xff1a;它专注于高效的硬件描述&#xff0c;…

【vue】点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题

非专业前端&#xff0c;局限性较高&#xff0c;有些问题看起来很小&#xff0c;但是初次接触很棘手&#xff0c;需要查找很多博客&#xff0c;内容也很杂。以下只是过程中总结下来的&#xff0c;要解决的就是标题中的三个问题。 这是我需要达成的效果。 1.第一个是进入导航菜单…

25道Python练手题(附详细答案),赶紧收藏!Python入门|Python学习

题目 1&#xff1a;水仙花数 水仙花数&#xff08;Narcissistic number&#xff09;也被称为超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数&#xff08;Armstrong number&#xff09; 水仙花数是指…

Python版本与opencv版本的对应关系

python版本要和opencv版本相对应&#xff0c;否则安装的时候会报错。 可以到Links for opencv-python上面查看python版本和opencv版本的对应关系&#xff0c;如图&#xff0c;红框内是python版本&#xff0c;绿框内是opencv版本。 查看自己的python版本后&#xff0c;使用下面…

keytool命令使用参考

Keytool 是一个Java应用程序&#xff0c;用于管理和维护数字证书和密钥。它通过命令行界面提供了一系列的操作&#xff0c;使得用户可以方便地创建、导入、导出和管理密钥库&#xff08;keystore&#xff09;中的证书和密钥。以下是关于keytool命令的详细介绍&#xff1a; &…

#Ts篇:PickOmit协变逆变Partial interface 与 type 有何区别

Pick Pick 接受两个类型参数&#xff0c;T 表示要从中选择属性的类型&#xff0c;K 表示选择的属性名的联合类型。通过映射类型&#xff0c;遍历联合类型 K 中的每个属性&#xff0c;然后从类型 T 中选择相应的属性。 type Pick<T, K extends keyof T> {[P in K]: T[P…

每天一点python——day88

#每天一点Python——88 #编程两大思想【面向过程与面向对象】 #如图&#xff1a; 面向过程的线性思维&#xff1a; 类似于做菜一步步的来&#xff0c;先怎么样怎么样&#xff0c;再怎么样 如果不一步步的来&#xff0c;例如先炒菜再点火&#xff0c;这样是做不好的 面向对象&a…

java--匿名内部类

1.匿名内部类 ①就是一种特殊的局部内部类&#xff1b;所谓匿名&#xff1a;指的是程序员不需要为这个类声明名字。 ②特点&#xff1a;匿名内部类本质就是一个子类&#xff0c;并会立即创建出一个子类对象。 ③作用&#xff1a;用于更方便的创建一个子类对象。 2.匿名内部类…

德迅猎鹰(云蜜罐)有什么用

蜜罐&#xff08;Honeypot&#xff09;是一种安全技术&#xff0c;用于吸引和欺骗攻击者&#xff0c;以便收集关于攻击行为的信息和情报。它模拟了一个脆弱的系统、服务或网络资源&#xff0c;看起来对攻击者具有吸引力&#xff0c;但实际上是为了引诱攻击者暴露其攻击手法和意…

网络安全缓冲区溢出实验

实验要求实验步骤函数 f00()函数 f01()函数 f02() 实验要求 C 程序 homework08.c 的主函数如下&#xff1a; int main(int argc, char * argv[]) { init_buf(Lbuffer, LEN);switch(argc) {case 1: f00(); break;case 2: f01(); break;case 3: f02(); break; default: f00(); …

算法-贪心思想

贪心的思想非常不好解释&#xff0c;而且越使用权威的语言解释越难懂。而且做题的时候根据自己的理解可能直接做出来&#xff0c;但是非要解释一下怎么使用的贪心的话&#xff0c;就懵圈了。一般来说&#xff0c;贪心的题目没有固定的套路&#xff0c;一题一样&#xff0c;不过…

高压探头高压衰减棒的使用方法与注意事项

HVP-15HF高压探头最大量测电压为10kV DC / 7kV AC rms / 20kV p-p。 频宽高达40MHz&#xff0c;超低噪声( S/N比 )60dB at 1kHz。 搭配转接器PL-10可连接到电表使用。 操作方法&#xff1a; 1、先将接地线连接在良好的接地点上。 2、将BNC探头连接在示波器的输入端上。 3、设定…