当前位置: 首页 > news >正文

openGauss5.0之学习环境 Docker安装

文章目录

  • 0.前言
  • 1. 准备软硬件安装环境
    • 1.1 软硬件环境要求
    • 1.2 修改操作系统配置
      • 1.2.1 关闭操作系统防火墙
    • 1.3 设置字符集参数
    • 1.4 设置时区和时间
    • (可选)关闭swap交换内存
    • 1.5 关闭RemoveIPC
    • 1.6 关闭HISTORY记录
  • 2. 容器安装
    • 2. 1支持的架构和操作系统版本
    • 2. 2 配置准备
    • 2. 3 单机数据库容器安装
      • 2. 3.1 创建openGauss docker镜像
      • 2.3.2 环境变量
      • 2.3.3 开启实例
      • 2.3.5 数据持久化
    • 2.4 CM容器化部署
      • 2.4.1 创建openGauss docker镜像
      • 2.4.2 使用社区发布的镜像
      • 2.4.3 启动容器
          • 如果多个容器部署在一台机器上,创建一个普通的容器网络即可:
          • 如果容器跨多个节点部署,即要求节点间的容器能够进行通信。业界有多种实现方式,这里提供一种作为参考,用户可以自行选择。
      • 2.4.4 进入容器中查看实例状态

在这里插入图片描述

0.前言

docker安装还有一些坑 但具体在你安装过程中可以根据错误提示解决

1. 准备软硬件安装环境

本章节描述安装前需要进行的环境准备。

1.1 软硬件环境要求

介绍openGauss的软硬件环境要求。建议部署openGauss的各服务器具有等价的软硬件配置。

1.1.1 硬件环境要求

表1 列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。

表 1 硬件环境要求

项目配置描述
内存功能调试建议32GB以上。性能测试和商业部署时,单实例部署建议128GB以上。复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。
CPU功能调试最小1×8核,2.0GHz。性能测试和商业部署时,建议1×16核,2.0GHz。CPU超线程和非超线程两种模式都支持。说明:个人开发者最低配置2核4G,推荐配置4核8G。目前,openGauss仅支持ARM服务器和基于x86_64通用PC服务器的CPU。
硬盘用于安装openGauss的硬盘需最少满足如下要求:- 至少1GB用于安装openGauss的应用程序。

软件环境要求

表 2 软件环境要求

软件类型配置描述
Linux操作系统- ARM:
-   openEuler 20.03LTS(推荐采用此操作系统)
-   openEuler 22.03LTS
-   麒麟V10
-   Asianux 7.5

软件依赖要求

openGauss的软件依赖要求如[表3 ]所示。

建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。

表 3 软件依赖要求

所需软件建议版本
libaio-devel建议版本:0.3.109-13
flex要求版本:2.5.31 以上
bison建议版本:2.7-4
ncurses-devel建议版本:5.9-13.20130511
glibc-devel建议版本:2.17-111
patch建议版本:2.7.1-10
redhat-lsb-core建议版本:4.1
readline-devel建议版本:7.0-13
libnsl(openEuler+x86环境中)建议版本:2.28-36

1.2 修改操作系统配置

注意:

以下动作需要以root用户进行操作操作完成后请及时注销root用户,避免误操作。

1.2.1 关闭操作系统防火墙

为了在防火墙开启的状态下,确保openGauss的正常使用,用户需要将同openGauss相关的服务、协议、IP以及端口添加到openGauss主机的防火墙白名单中。

以openEuler操作系统为例,假设openGauss信息如表4所示。

表 4 openGauss信息

主机名称内部IP外部IP
plat1192.168.0.1110.10.0.11
管理网络-10.10.64.236

目前仅支持在防火墙关闭的状态下进行安装。

  1. 修改/etc/selinux/config文件中的“SELINUX”值为“disabled”。

    a. 使用VIM打开config文件。

    ""vim /etc/selinux/config
    

    b. 修改“SELINUX”的值“disabled”,执行**:wq**保存并退出修改。

    ""SELINUX=disabled
    
  2. 重新启动操作系统。

    ""reboot
    
  3. 检查防火墙是否关闭。

    ""systemctl status firewalld
    

    若防火墙状态显示为active (running),则表示防火墙未关闭,请执行4;

    若防火墙状态显示为inactive (dead),则无需再关闭防火墙。

  4. 关闭防火墙。

    ""systemctl disable firewalld.service
    systemctl stop firewalld.service
    
  5. 在其他主机上重复步骤1到步骤4。

1.3 设置字符集参数

将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”(XXX为Unicode编码)。

""vim /etc/profile

1.4 设置时区和时间

在各数据库节点上,确保时区和时间一致。

  1. 执行如下命令检查各数据库节点时间和时区是否一致。如果各数据库节点时间和时区不一致区,请执行步骤2~步骤3。

    ""date
    
  2. 使用如下命令将各数据库节点/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。

    ""cp /usr/share/zoneinfo/$地区/$时区 /etc/localtime
    

    说明:
    $地区/$时区为需要设置时区的信息,例如:Asia_Shanghai。

  3. 使用date -s命令将各数据库节点的时间设置为统一时间,举例如下。

    ""date -s "Sat Sep 27 16:00:07 CST 2020"
    

(可选)关闭swap交换内存

说明:

关闭swap交换内存是为了保障数据库的访问性能,避免把数据库的缓冲区内存淘汰到磁盘上。 如果服务器内存比较小,内存过载时,可打开swap交换内存保障正常运行。

在各数据库节点上,使用swapoff -a命令将交换内存关闭。

""swapoff -a

1.5 关闭RemoveIPC

在各数据库节点上,关闭RemoveIPC。CentOS操作系统默认为关闭,可以跳过该步骤。

  1. 修改/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”。

    a. 使用VIM打开logind.conf文件。

    ""vim  /etc/systemd/logind.conf
    

    b. 修改“RemoveIPC”值为“no”。

    ""RemoveIPC=no
    
  2. 修改/usr/lib/systemd/system/systemd-logind.service文件中的“RemoveIPC”值为“no”。

    a. 使用VIM打开systemd-logind.service文件。

    ""vim /usr/lib/systemd/system/systemd-logind.service
    

    b. 修改“RemoveIPC”值为“no”。

    ""RemoveIPC=no
    
  3. 重新加载配置参数。

    ""systemctl daemon-reload
    systemctl restart systemd-logind
    
  4. 检查修改是否生效。

    ""loginctl show-session | grep RemoveIPC
    systemctl show systemd-logind | grep RemoveIPC
    
  5. 在其他主机上重复步骤1到步骤4。

1.6 关闭HISTORY记录

说明:

为避免指令历史记录安全隐患,需关闭各主机的history指令。

步骤 1 修改根目录下/etc/profile文件。

""vim /etc/profile

步骤 2 设置HISTSIZE值为0。例如,系统中HISTSIZE默认值为1000,将其修改为0。

""HISTSIZE=0

步骤 3 保存/etc/profile。

"":wq

步骤 4 设置/etc/profile生效。

""source /etc/profile

2. 容器安装

本章节主要介绍通过Docker安装openGauss,方便DevOps用户的安装、配置和环境设置。

2. 1支持的架构和操作系统版本

  • x86-64 CentOS 7.6
  • ARM64 openEuler 20.03 LTS

2. 2 配置准备

使用 buildDockerImage.sh脚本构建docker镜像,buildDockerImage.sh是一个方便使用的shell脚本,提供SHA256的检查。

2. 3 单机数据库容器安装

2. 3.1 创建openGauss docker镜像

说明:

  • 安装前需要提供openGauss二进制安装包,解压后将以bz2结尾的包(openGauss-X.X.X-CentOS-64bit.tar.bz2)放到 dockerfiles/文件夹。二进制包可以从 https://www.opengauss.org/zh/download/下载,确保有正确的yum源。
  • 运行buildDockerImage.sh脚本时,如果不指定-i参数,此时默认提供SHA256检查,需要您手动将校验结果写入sha256_file_amd64文件。
""## 修改sha256校验文件内容
cd /soft/openGauss-server/docker/dockerfiles/3.0.0
sha256sum openGauss-3.0.0-CentOS-64bit.tar.bz2 > sha256_file_amd64 
  • 安装前需要从华为开源镜像站获取openEuler_aarch64.repo文件,并放到openGauss-server-master/docker/dockerfiles/3.0.0文件夹下面。openEuler_aarch64.repo获取方法:
""wget -O openEuler_aarch64.repo https://mirrors.huaweicloud.com/repository/conf/openeuler_aarch64.repo

在dockerfiles文件夹运行buildDockerImage.sh脚本。

""[root@ecs-complie dockerfiles]# ./buildDockerImage.sh
Usage: buildDockerImage.sh -v [version] [-i] [Docker build option]
Builds a Docker Image for openGauss
Parameters:-v: version to buildChoose one of: 3.0.0-i: ignores the SHA256 checksumsLICENSE UPL 1.0

2.3.2 环境变量

为了更灵活的使用openGauss镜像,可以设置额外的参数。未来我们会扩充更多的可控制参数,当前版本支持以下变量的设定。

GS_PASSWORD

使用openGauss镜像的时候,必须设置该参数。该参数值不能为空或者不定义。该参数设置了openGauss数据库的超级用户omm以及测试用户gaussdb的密码。openGauss安装时默认会创建omm超级用户,该用户名暂时无法修改。测试用户gaussdb是在entrypoint.sh中自定义创建的用户。

openGauss镜像配置了本地信任机制,因此在容器内连接数据库无需密码,但是如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码。

openGauss的密码有复杂度要求

密码长度8个字符以上,必须同时包含大写字母、小写字母、数字、以及特殊符号(特殊符号仅包含“#?!@ %^&*-”,并且“! &”需要用转义符“\”进行转义)。

GS_NODENAME

指定数据库节点名称,默认为gaussdb。

GS_USERNAME

指定数据库连接用户名,默认为gaussdb。

GS_PORT

指定数据库端口,默认为5432。

2.3.3 开启实例

""$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 opengauss:2.0.0

2.3.4 从操作系统层面连接数据库

""$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -p8888:5432 opengauss:2.0.0
$ gsql -d postgres -U gaussdb -W'Enmo@123' -h your-host-ip -p8888

2.3.5 数据持久化

""$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -v /opengauss:/var/lib/opengauss opengauss:2.0.0

说明

  1. 对于使用其他版本的数据库构建容器镜像,可以参考openGauss-server/docker/dockerfiles/3.0.0里面的配置文件,只需要修改为对应的版本号即可。
  2. 对于构建openEuler-arm的容器镜像,如果openeuler-20.03-lts:latest镜像下载不下来,可以在openEuler官方网站http://121.36.97.194/openEuler-20.03-LTS/docker_img/aarch64/下载容器镜像压缩包openEuler-docker.aarch64.tar.xz,然后使用docker load -i openEuler-docker.aarch64.tar.xz导入到本地镜像列表。
  3. 在进行构建时候,如果遇到yum源下载超时,请检查下代理,也可以在buildDockerImage.sh脚本里面的docker build命令后加上--network host使用宿主机的网络。

2.4 CM容器化部署

2.4.1 创建openGauss docker镜像

下载openGauss-docker仓库代码,构建脚本在该仓库中管理。

  • 构建镜像需要openGauss社区发布的企业版本包,openGauss-*-64bit-all.tar.gz。放到openGauss-docker/dockerfiles目录下。
  • 运行buildDockerImage.sh脚本时,如果不指定-i参数,此时默认提供SHA256检查,需要您手动将校验结果写入sha256_file_amd64文件。
""## 修改sha256校验文件内容
cd `openGauss-docker/dockerfiles`
sha256sum openGauss-5.0.0-CentOS-64bit-all.tar.gz > sha256_file_amd64 
  • 对于x86平台,使用社区发布的Centos_x86_64的包;对于arm平台,使用发布的openEuler-arm版本企业包。

构建命令:

""sh buildDockerImage.sh -v 5.0.0 -i

2.4.2 使用社区发布的镜像

最新的容器镜像:

x86_64平台:

""docker pull swr.cn-south-1.myhuaweicloud.com/opengauss/x86_64/opengauss:5.0.0
docker tag swr.cn-south-1.myhuaweicloud.com/opengauss/x86_64/opengauss:5.0.0 opengauss:5.0.0

arm平台:

""docker pull swr.cn-south-1.myhuaweicloud.com/opengauss/arm/opengauss:5.0.0
docker tag swr.cn-south-1.myhuaweicloud.com/opengauss/arm/opengauss:5.0.0 opengauss:5.0.0

2.4.3 启动容器

搭建CM集群至少需要两个容器实例才能使用。

  1. 创建容器网络
如果多个容器部署在一台机器上,创建一个普通的容器网络即可:

docker network create --subnet=172.11.0.0/24 og-network

如果容器跨多个节点部署,即要求节点间的容器能够进行通信。业界有多种实现方式,这里提供一种作为参考,用户可以自行选择。

选择一台部署progrium/consul容器:

""docker pull progrium/consul
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

每个节点的docker都进行修改: vim /usr/lib/systemd/system/docker.service 在ExecStart一栏后面追加:

""-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store=consul://192.168.0.94:8500 --cluster-advertise=eth0:2376

192.168.0.94 是部署consul的机器ip。

修改完成后需要重启docker:

""systemctl daemon-reload
systemctl restart docker

创建overlay网络

""docker network create -d overlay --subnet 10.22.1.0/24  --gateway 10.22.1.1 og-network
  1. 启动多个容器实例
""# ip需要和容器网络在同一网段,几个实例的ip和节点名称不能重复。如下示例1主2备:primary_nodeip="172.11.0.2"
standby1_nodeip="172.11.0.3"
standby2_nodeip="172.11.0.4"
primary_nodename=primary
standby1_nodename=standby1
standby2_nodename=standby2OG_NETWORK=og-network
GS_PASSWORD=test@123# 启动实例1
docker run -d -it -P  --sysctl kernel.sem="250 6400000 1000 25600" --security-opt seccomp=unconfined -v /data/opengauss_volume:/volume --name opengauss-01 --net ${OG_NETWORK} --ip "$primary_nodeip" -h=$primary_nodename -e primaryhost="$primary_nodeip" -e primaryname="$primary_nodename" -e standbyhosts="$standby1_nodeip, $standby2_nodeip" -e standbynames="$standby1_nodename, $standby2_nodename" -e GS_PASSWORD=$GS_PASSWORD opengauss:5.0.0 # 启动实例2
docker run -d -it -P  --sysctl kernel.sem="250 6400000 1000 25600" --security-opt seccomp=unconfined -v /data/opengauss_volume:/volume --name opengauss-02 --net ${OG_NETWORK} --ip "$standby1_nodeip" -h=$standby1_nodename -e primaryhost="$primary_nodeip" -e primaryname="$primary_nodename" -e standbyhosts="$standby1_nodeip, $standby2_nodeip" -e standbynames="$standby1_nodename, $standby2_nodename" -e GS_PASSWORD=$GS_PASSWORD opengauss:5.0.0# 启动实例3
docker run -d -it -P  --sysctl kernel.sem="250 6400000 1000 25600" --security-opt seccomp=unconfined -v /data/opengauss_volume:/volume --name opengauss-03 --net ${OG_NETWORK} --ip "$standby2_nodeip" -h=$standby2_nodename -e primaryhost="$primary_nodeip" -e primaryname="$primary_nodename" -e standbyhosts="$standby1_nodeip, $standby2_nodeip" -e standbynames="$standby1_nodename, $standby2_nodename" -e GS_PASSWORD=$GS_PASSWORD opengauss:5.0.0
  1. 使用脚本快速启动1主2备的cm集群容器实例

openGauss-docker目录下,执行sh create_cm_contariners.sh

""This script will create three containers with cm on a single node. \n
Please input OG_SUBNET (容器所在网段) [172.11.0.0/24]: 
OG_SUBNET set 172.11.0.0/24
Please input OG_NETWORK (容器网络名称) [og-network]: 
OG_NETWORK set og-network
Please input GS_PASSWORD (定义数据库密码)[test@123]: 
GS_PASSWORD set
Please input openGauss VERSION [5.0.0]: 
openGauss VERSION set 5.0.0
starting  create docker containers...

会让填入容器网段、容器网络名称、数据库密码、容器版本号。使用默认值得话可以直接回车跳过。 脚本执行完成后,会拉起3个容器实例,组成1主2备的cm集群。

2.4.4 进入容器中查看实例状态

  1. 进入容器
""docker exec -ti <containerid> /bin/bash
su - omm
  1. 查看集群状态
""cm_ctl query -Cvid
  1. 连接接数据库
""gsql -d postgres -r

说明

    1. 构建的容器需要包含操作系统层
    1. 容器内仅提供CM和数据库内核工具,OM工具无法使用

相关文章:

openGauss5.0之学习环境 Docker安装

文章目录 0.前言1. 准备软硬件安装环境1.1 软硬件环境要求1.2 修改操作系统配置1.2.1 关闭操作系统防火墙 1.3 设置字符集参数1.4 设置时区和时间&#xff08;可选&#xff09;关闭swap交换内存1.5 关闭RemoveIPC1.6 关闭HISTORY记录 2. 容器安装2. 1支持的架构和操作系统版本2…...

数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)

项目需求 录入进入房间的相关数据&#xff1b;从进入时间开始计时&#xff0c;计算滞留房间的时间&#xff1b;定时刷新数据&#xff0c;超过30分钟的人数&#xff0c;进行红色告警&#xff1b; 实现流程 为了完整地实现上述需求&#xff0c;我们可以按照以下步骤开发&#…...

【Linux】-关于调试器gdb的介绍和使用

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言一、Linux中的debug和release二、gdb的使用**1.进入调试****2.显示代码*…...

项目开发经验

hadoop 1.namenode中有专门的工作线程池用于处理与datanode的心跳信号 dfs.namenode.handler.count20 * log2(Clust 2.编辑日志存储路径 dfs.namenode.edits.dir 设置与镜像文件存储路径 dfs.namenode分开存放&#xff0c;可以达到提高并发 3.yarn参数调优&#xff0c;单个服…...

STM32——05-按键、时钟控制、中断复位 点亮LED灯

如何点亮一颗LED灯 编程实现点灯 常用的 GPIO HAL 库函数&#xff1a; void HAL_GPIO_Init ( GPIO_TypeDef * GPIOx , GPIO_InitTypeDef * GPIO_Init ); void HAL_GPIO_WritePin ( GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin , GPIO_PinState PinState ); void HAL_GPIO_Togg…...

VBA下载二进制文件,文本读写

这里使用了vba如下两个对象&#xff1a; Microsoft.XMLHTTP&#xff1a;文件读写&#xff0c;可读写二进制&#xff0c;可指定编码,对于utf-8编码文本文件使用FSO的TextStream对象打开&#xff0c;读取到的内容可能会出现乱码&#xff0c;可以使用该对象打开;前期绑定添加引用…...

MongoDB结合Robo 3T 1.4.3的简单操作

MongoDB的简单操作结合Robo 3T 1.4.3工具进行查询。 常用的正则表达式 /* 29 */ 正则表达式 /\* [0-9]* \*/ "_id" : ObjectId("5f3d05cdfd2aa9a8a7"), 正则表达式 \"([^\"]*_id)\".*, 使用方法&#xff1a;查询结果去掉注释和不需要…...

【学习笔记】[AGC048D] Pocky Game

这是一个非平等博弈。但是只要求你判断胜负&#xff0c;本身也不是一道结论题&#xff0c;所以可以用 D P DP DP来解决。 结论&#xff1a;第一堆石子剩的越多&#xff0c;先手玩家获胜的概率越大。这直接引出了一个非常感性的结论&#xff1a;每次取石子时要么取一堆&#xf…...

Qgis中进行Shp和Excel属性连接实现百强县公共预算空间分析

前言 在之前的博文中&#xff0c;将2022的全国百强县一般公共预算收入的数据下载到了本地&#xff0c;博客原文地址&#xff1a;一种使用Java的快速将Web中表格转换成Excel的方法。对于不关注时空位置关系的一般分析&#xff0c;到此也就基本够用了。但是&#xff0c;如果站在全…...

ES6 新增的循环方法

在 ES6&#xff08;ECMAScript 2015&#xff09;中&#xff0c;新增了一些循环方法&#xff0c;这些方法可以帮助我们更方便地遍历数组、字符串、Set、Map 等数据结构。本文将介绍一些常用的 ES6 循环方法。 for…of 循环 for…of 循环是一种遍历可迭代对象的方法&#xff0c…...

移动端事件300ms延迟解决

有移动端与PC端的项目开发&#xff0c;那么移动端和PC端开发上是存在差异的&#xff0c;比如 click 事件的300ms 延迟&#xff0c;即移动Web页面上的click事件响应都要慢上300ms&#xff0c;移动设备访问Web页面时往往需要 “双击” 或者 “捏开” 来放大页面看清页面的具体内容…...

NRF52832的DFU

开发环境&#xff1a; Winsodw&#xff1a;10 nRF5_SDK&#xff1a;17.1.0 1 工具安装 1.1 gcc-arm-none-eabi Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 下载“gcc-arm-none-eabi-10.3-2021.10-win32.exe”&#xff0c;接提示安装。注意安装完…...

开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题排查

目录 1、在非100%的显示比例下放大器采集到的桌面图像不全问题 1.1、通过manifest文件禁止系统对软件进行缩放 1.2、调用SetThreadDpiAwarenessContext函数&#xff0c;禁止系统对目标线程中的窗口进行缩放 1.3、使用winver命令查看Windows的年月版本 2、使用放大器模式遇…...

敲黑板!java反射机制和原理

获取Class对象&#xff1a;首先&#xff0c;你需要获取表示要操作的类的Class对象。可以使用以下三种方式之一来获取Class对象&#xff1a; Class.forName()方法&#xff1a;使用类的全限定名获取Class对象&#xff0c;例如&#xff1a;Class<? Class<?> clazz MyC…...

【大数据工具】HBase 集群搭建与基本使用

HBase 集群搭建 HBase 安装包下载地址&#xff1a;https://archive.apache.org/dist/hbase/ 安装 HBase 的前提&#xff1a; ZooKeeper 集群 OKHadoop 集群 OK 1. HBase 集群安装 1. 将 HBase 软件包上传至 Hadoop0 解压并重命名 使用 FileZilla 将 hbase-1.3.1-bin.tar.g…...

【Java】数组详解

文章目录 一、数组的基本认识1.1 数组的概念1.2数组的创建与初始化1.3 数组的使用 二、数组的类型 — 引用类型2.1 JVM 内存分布2.2 什么是引用类型2.3 基本类型变量与引用类型变量的区别2.4 Java 中的 null 三、数组的应用3.1 保存数据3.2 函数参数3.3 函数返回值 一、数组的基…...

NumPy库的学习

本文主要记录的是笔者在B站自学Numpy库的学习笔记。 引入numpy库 import numpy as np矩阵的创建 创建一个二行三列的矩阵。 array np.array([[1,2,3],[2,3,4]])查看array的行数、形状、元素数量 print("number of dim:",array.ndim) print("shape:"…...

CentOS安装IRIS

最近电脑提搞了&#xff0c;可以无顾虑创建虚拟机了&#xff0c;试一下在Linux安装IRIS&#xff0c;适用CentOS7.6上安装Intersystem公司的IRIS数据库&#xff0c;资料基本是空白&#xff0c;分享一下。 首先安装解压软件unzip和libicu&#xff0c;最小化安装的缺&#xff0c;…...

华为OD机试真题 JavaScript 实现【最多几个直角三角形】【2023Q1 100分】

一、题目描述 有 N 条线段&#xff0c;长度分别为 a[1]-a[n]。 现要求你计算这 N 条线段最多可以组合成几个直角三角形&#xff0c;每条线段只能使用一次&#xff0c;每个三角形包含三条线段。 二、输入描述 第一行输入一个正整数 T (1< T< 100) &#xff0c;表示有…...

vue3中的reactive、ref、toRef和toRefs

目录 reactivereactive的实现原理使用reactive的注意事项 refref的实现原理使用ref的注意事项 toRef和toRefsref和reactive的使用比较 reactive reactive用于创建响应式对象&#xff0c;它返回一个对象的响应式代理。即&#xff1a;它返回的对象以及其中嵌套的对象都会通过 Pr…...

数字图像处理与Python实现-图像增强经典算法汇总

图像增强经典算法汇总 文章目录 图像增强经典算法汇总1、像素变换2、图像逆变换3、幂律变换4、对数变换5、图像均衡化6、对比度受限自适应直方图均衡(CLAHE)7、对比度拉伸8、Sigmoid校正9、局部对比度归一化10、总结本文将对图像增强经典算法做一个简单的汇总。图像增强的经典…...

tag提示词总结

顺序的权重 越靠前的tag权重越大&#xff0c;越靠后的tag权重越小经验来讲&#xff0c;将图像质量相关的tag放在前面&#xff0c;例如masterpiece&#xff0c;best quality等&#xff1b;接着添加主体画风等&#xff1b;最后添加一些不太重要的细节 权重增减 (tag)&#xff1a…...

微信小程序原生开发功能合集二十:导航栏、tabbar自定义及分包功能介绍

本章实现导航栏及tabbar的自定义处理的相关方法介绍及效果展示。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/detail/37977    2. 5…...

高通 Camera HAL3:项目开发技术点总结

做高通 Camera HAL3开发的一些技术点的总结、整理。 做个记录&#xff0c;方便后续查阅。 1.目录、so、配置文件 productName是项目名 out Target路径&#xff1a;\out\target\product\productName\chi-cdk&#xff1a;\vendor\qcom\proprietary\chi-cdk\ldc node&#xff1…...

chatgpt赋能python:Python怎么删除列表中的最大值和最小值

Python怎么删除列表中的最大值和最小值 在Python中&#xff0c;一个列表&#xff08;List&#xff09;是一种非常常见的数据结构&#xff0c;它允许我们以有序的方式存储和访问数据。但是&#xff0c;有时候我们需要从列表中删除最大或最小的值&#xff0c;以满足我们的特定需…...

简述Vue的生命周期以及每个阶段做的事情

03_简述Vue的生命周期以及每个阶段做的事情 思路 给出概念 列举出生命周期各个阶段 阐述整体流程 结合实际 扩展&#xff1a;vue3变化 回答范例 每个vue组件实例被创建后都会经过一系列步骤。比如它需要数据观测、模板编译、挂载实例到dom、以及数据变化的时候更新dom、…...

LeetCode-C#-0004.寻找两个正序数组的中位数

0.声明 该题目来源于LeetCode 如有侵权&#xff0c;立马删除。 解法不唯一&#xff0c;如有新解法可一同讨论。 1.题目 0004寻找两个正序数组的中位数 给定两个大小分别为m和n的正序&#xff08;从小到大&#xff09;数组nums1和nums2。 请你找出并返回着两个正序数组的中位…...

Vue.js 中的 $emit 和 $on 方法有什么区别?

Vue.js 中的 $emit 和 $on 方法有什么区别&#xff1f; 在 Vue.js 中&#xff0c;$emit 和 $on 方法是两个常用的方法&#xff0c;用于实现组件间的通信。它们可以让我们在一个组件中触发一个自定义事件&#xff0c;并在另一个组件中监听这个事件&#xff0c;从而实现组件间的…...

LAZADA平台的商品评论Python封装API接口接入文档和参数说明

LAZADA是一个位于东南亚的电商平台&#xff0c;成立于2012年。该平台覆盖的国家包括新加坡、马来西亚、印尼、菲律宾、泰国和越南等地。它提供了一个多样化的产品选择&#xff0c;包括时尚、美容、数码、母婴等商品&#xff0c;并且拥有许多知名品牌的官方旗舰店。同时&#xf…...

云原生Docker镜像管理

docker是什么&#xff1f; docker是一个go语言开发的应用容器引擎。 docker的作用&#xff1f; ①运行容器里的应用&#xff1b; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别&#xff1f; 容器虚拟机所有容器共享宿主机内核每个虚拟机都有独立的操…...

详述电子商务网站的建设/怎么在百度上做广告推广

【例9-23】最长公共子序列【问题描述】w一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说&#xff0c;若给定序列X1,x2,…,xm>&#xff0c;则另一序列Z&#xff1d;1&#xff0c;z2&#xff0c;…&#xff0c;zk>是X的子序列是指存在一个严格递增的下…...

网站建设个人总结/在百度平台如何做营销

小编觉得吧证件照这种东西就有一种“让人露出真面目”的魔力身份证照片更是证件照里的重灾区超过八成的网友表示身份证照是世界上最丑的照片它掀起你的减龄刘海将卡姿兰大眼睛照成死鱼眼让你的脸看起来像被车碾过一样又平又宽很多人对身份证照深恶痛绝绞尽脑汁想换照片某市民谎…...

如何建设论坛网站/seo快速排名外包

描述 此方法返回位于字符串的指定索引处的字符。该字符串的索引从零开始。 语法 此方法定义的语法如下: public char charAt(int index) 参数 这里是参数的细节: index -- 返回字符的索引。 返回值 该方法的返回指定索引处char值。 例子&#xff1a; 1 public class Test { 2 …...

漳州 网站建设公司/google排名

1.HDFS的设计 HDFS设计的适合对象&#xff1a;超大文件(TB级别的文件)、流式数据访问(一次写入&#xff0c;多次读取)、商用硬件(廉价硬件) HDFS设计不适合的对象&#xff1a;低时间延迟的数据访问、大量的小文件、多用户写入&#xff0c;任意修改文件 2.HDFS的概念 1).数据块(…...

旅游网站的建设方案/首页关键词优化价格

1.VLAN规划。 通常&#xff0c;不同的部门规划不同的vlan&#xff0c;如上图PC1和PC2属于同一个VLAN&#xff0c;PC3和打印机属于同一VLAN下&#xff1a; 部门VLANPC1 、PC210PC3 &#xff0c;打印机20 交换机上创建vlan&#xff0c;主机互联的接口配置为access接口&#xff…...

邯郸做网站的地方/潍坊住房公积金管理中心

这几天使用dropna,又出现了错误&#xff0c;就再次记录一下&#xff1a; 准确的说&#xff0c;dropna中的subset接受的值必须是array 顺便说一下&#xff0c;drop_duplicates(subset"")&#xff0c;接受的值可以是string&#xff0c;或者sequnence。也就是说&#…...