openGauss 单实例安装部署文档(CentOS7.6+openGauss 1.0.0)

openGauss 单实例安装部署文档(CentOS7.6+openGauss 1.0.0)

说明:

  • openGauss 支持单机部署和单机 HA 部署;
  • openGauss HA 部署时,备机数量为 1~4 台;
  • openGauss 脚本安装仅支持单实例部署,如果一台主机部署多个实例,建议手动使用命令安装;
  • openGauss Connectors 的 Linux 版本:JDBC、ODBC、libpq.

一、环境准备

1.1 硬件需求

组件最小配置要求备注
内存32GB如果小于 32GB,需要调整数据库内存参数
硬盘1.5GB禁用磁盘的 Disk Cache Policy
网卡速率300MB建议做网卡 bond
## 检查硬件配置
cat /proc/cpuinfo |grep processor
cat /etc/redhat-release
free -m
## 如果内存小于32GB,会因为内存不足导致数据库无法启动,此时需要修改shared_buffers和max_connections调整openGauss所需的内存

1.2 软件需求

条目要求
Linux 操作系统 openEuler 20.3LTS/CentOS 7.6
Linux 文件系统剩余 inode 个数 > 15 亿
工具Huawei JDK 1.8.0、psmisc、bzip2
PythonopenEuler: 支持 Python 3.7.x

CentOS 7.6:支持 Python 3.6.x 其他依赖软件包
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
lsb_release >= 4.1 |

1.3 安装示例

## 当系统环境仅限内网使用时,可以配置系统镜像ISO作为默认YUM源,但是该YUM源(CentOS 7.6)默认不包含python3,需要手动编译安装。
yum install -y lksctp*
yum install -y java-1.8.0-openjdk* psmisc bzip2 python3 python3-devel
yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core[root@ecs-7777 ~]# rpm -qa java-1.8.0-openjdk psmisc bzip2 libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core lksctp-tools* python3 python3-devel
psmisc-22.20-16.el7.x86_64
flex-2.5.37-6.el7.x86_64
redhat-lsb-core-4.1-27.el7.centos.1.x86_64
bzip2-1.0.6-13.el7.x86_64
java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64
libaio-devel-0.3.109-13.el7.x86_64
bison-3.0.4-2.el7.x86_64
ncurses-devel-5.9-14.20130511.el7_4.x86_64
lksctp-tools-devel-1.0.17-2.el7.x86_64
patch-2.7.1-12.el7_7.x86_64
lksctp-tools-1.0.17-2.el7.x86_64
glibc-devel-2.17-307.el7.1.x86_64
lksctp-tools-doc-1.0.17-2.el7.x86_64[root@ecs-7777 ~]# checksctp
SCTP supported

1.4 Python3 源码编译安装

## Python3 源码编译安装耗时约30分钟
yum install gcc zlib* openssl* -y
tar -zxvf Python-3.6.11.tgz
cd Python-3.6.11
./configure --prefix=/usr/python3.6.11 --enable-optimizations --enable-shared
make
make installln -s /usr/python3.6.11/bin/python3.6 /usr/bin/python3
ln -s /usr/python3.6.11/bin/pip3 /usr/bin/pip3
ln -s /usr/python3.6.11/lib/libpython3.6m.so.1.0 /usr/lib64/
export LD_LIBRARY_PATH=/usr/python3.6.11/lib:$LD_LIBRARY_PATH[root@db1 bin]# python3 -V
Python 3.6.11

二、操作系统配置

1.编辑 Hosts 文件

vi /etc/hosts
--------------------
***.***.***.***  db1 db1.opengauss.com   #Gauss OM IP Hosts Mapping
--------------------

2.关闭防火墙

systemctl status firewalld
systemctl disable firewalld.service
systemctl stop firewalld.service

3.关闭 SELinux

vi /etc/selinux/config
---------------------------
SELINUX=disabled
---------------------------
## SELinux的配置文件需要重启操作系统才可以生效,可以使用setenforce 0 使SELinux临时变更为Permissive状态,降低SELinux的影响。

4.修改字符集参数

vi ~/.bash_profile
---------------------------
export LANG=en_US.UTF-8
---------------------------source ~/.bash_profile

5.设置时区并统一主机时间

## 检查时区和时间是否正确(建议生产环境开启NTP服务同步时间)
[root@db1 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Apr 27 22:06 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@db1 ~]# date
Fri Jul 17 15:49:08 CST 2020## 如果时区不正确,则copy时区模板至/etc/localtime(此处以上海时间为例)
[root@db1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

6.关闭 SWAP

vi /etc/fstab   ## 注释掉swap分区挂载
swapoff -a      ## 关闭swap

7.[可选]设置 backupIP 网卡的 MTU 值(建议 8192)

vi /etc/sysconfig/network-scripts/ifcfg-ens34
---------------------------------------
MTU=8192     ## 可能需要网络工程师协助修改网络设备端口MTU配置,操作系统修改该参数后,建议重启服务器,否则可能造成SSH互信添加有问题
---------------------------------------# 命令临时修改方法:
ifconfig  ens34  mtu 8192

8.配置 SSH 服务(允许 root 登录,关闭 Banner)

# 检查root登录配置和Banner的配置
cat /etc/ssh/sshd_config |grep -v ^#|grep -E 'PermitRoot|Banner'# 如果不满足要求,应修改配置如下
vi /etc/ssh/sshd_config
--------------------------
#Banner none         ## 注释ssh登录的欢迎信息
PermitRootLogin yes  ## 允许root用户远程登录
--------------------------systemctl restart sshd.service

9.创建管理用户组(管理用户稍后使用脚本 gs_preinstall 创建)

groupadd dbgrp

10.配置内核参数

# vi /etc/sysctl.conf
---------------------------
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 5
net.sctp.path_max_retrans = 10
net.sctp.max_init_retransmits = 10
net.sctp.association_max_retrans = 10
net.sctp.hb_interval = 30000
net.ipv4.tcp_retries2 = 12
vm.overcommit_memory = 0
net.sctp.sndbuf_policy = 0
net.sctp.rcvbuf_policy = 0
net.sctp.sctp_mem = 94500000 915000000 927000000
net.sctp.sctp_rmem = 8192 250000 16777216
net.sctp.sctp_wmem = 8192 250000 16777216
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
net.ipv4.ip_local_port_range = 26000 65535
kernel.sem = 250 6400000 1000 25600
vm.min_free_kbytes = 102400    ## 内存*5%
net.core.somaxconn = 65535
net.ipv4.tcp_syncookies = 1
net.sctp.addip_enable = 0
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 60
kernel.shmall = 1152921504606846720
kernel.shmmax = 18446744073709551615
net.ipv4.tcp_sack = 1
net.ipv4.tcp_timestamps = 1
vm.extfrag_threshold = 500
vm.overcommit_ratio = 90
----------------------------------------# 注意:redhat 6.4&6.5需要打开sctp的checksums,否则可能引起创建表或数据库失败
[root@db1 ~]# echo 0 >  /sys/module/sctp/parameters/no_checksums
[root@db1 ~]# cat /sys/module/sctp/parameters/no_checksums
N

11.修改系统资源限制

vi /etc/security/limits.conf
----------------------------
* soft stack 3072
* hard stack 3072
* soft nofile 1000000  ## gs_preinstall脚本自动设置,可以不手动设置
* hard nofile 1000000  ## gs_preinstall脚本自动设置,可以不手动设置----------------------------vi /etc/security/limits.d/90-nproc.conf
----------------------------
* soft nproc unlimited  ## 系统支持的最大进程数
----------------------------## 说明:在使用gs_preinstall脚本后,limits资源虽然已经设置,但可能存在暂时不生效的情况,需要重启系统使之生效。

12.关闭透明页 transparent_hugepage

vi /etc/default/grub
----------------------------
#修改:
GRUB_CMDLINE_LINUX="rhgb quiet transparent_hugepage=never"
----------------------------
grub2-mkconfig  -o  /boot/grub2/grub.cfg    ## 重新编译grub,关闭透明页rebootcat /proc/meminfo |grep Huge## 临时关闭透明页方法
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

13.[可选]网卡参数配置(配置万兆业务网卡[backIp1])

rx = 4096   # 预安装时是否由脚本自动设置
tx = 4096   # 预安装时是否由脚本自动设置
mtu = 8192  # 推荐值:8192,同时需要协调对网络端口做出相应调整

三、预安装 openGauss 软件

1.配置 clusterconfig.xml 文件

# vi clusterconfig.xml
---------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<ROOT><!-- openGauss整体信息 --><CLUSTER><!-- 数据库名称 --><PARAM name="clusterName" value="gsCluster" /><!-- 数据库节点名称(hostname) --><PARAM name="nodeNames" value="db1.opengauss.com" /><!-- 节点后端通讯IP,与nodeNames对应 --><PARAM name="backIp1s" value="***.***.***.***"/><!-- 数据库安装目录 与其他路径相互独立--><PARAM name="gaussdbAppPath" value="/gauss/app" /><!-- 日志目录,与其他路径相互独立,默认路径"$GAUSSLOG/安装用户名"--><PARAM name="gaussdbLogPath" value="/gauss/log/omm" /><!-- 临时文件目录,默认位置在/opt/huawei/wisequery/perfadm_db--><PARAM name="tmpMppdbPath" value="/gauss/tmp" /><!--数据库工具目录,与其他路径相互独立,默认路径在"/opt/huawei/wisequery"--><PARAM name="gaussdbToolPath" value="/gauss/om" /><!--数据库core文件目录--><PARAM name="corePath" value="/gauss/corefile" /><!-- openGauss类型,此处示例为单机类型,“single-inst”表示单机或单击主备部署形态--><PARAM name="clusterType" value="single-inst"/></CLUSTER><!-- 每台服务器上的节点部署信息 --><DEVICELIST><!-- node1上的节点部署信息 --><DEVICE sn="1000001"><PARAM name="name" value="db1.opengauss.com"/><!-- 节点所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="***.***.***.***"/><PARAM name="sshIp1" value="***.***.***.***"/><!--dbnode--><!--当前主机上需要部署的数据库节点个数--><PARAM name="dataNum" value="1"/><!--DBnode端口号--><PARAM name="dataPortBase" value="26000"/><!--DBnode节点数据存储目录--><PARAM name="dataNode1" value="/gauss/data/db1"/></DEVICE></DEVICELIST>
</ROOT>
---------------------------------------------------------

说明:

  • "/gauss/om"存放互信等工具,避免权限问题,不要把实例数据目录放在此目录下。
  • 安装目录和数据目录必须为空或者不存在,否则可能导致安装失败。
  • 确保配置的目录之间不相互耦合。
  • 若需要安装脚本自动创建安装用户时,各配置的目录需保证不与系统创建的默认用户目录耦合关联。
  • 配置 openGauss 路径和实例路径时,路径中不能包含"|",";","&","$","<",">","`","","","'","{","}","(",")","[","]","~","*","?"特殊字符。
  • 配置数据库节点名称时,请通过 hostname 命令获取数据库节点的主机名称,替换示例中的 node1、node2。
  • 配置文件中所有 IP 参数(backIP、sshIP、listenIP 等)均只支持配置一个 IP,如果配置第二个 IP 参数,则不会读取第二个参数的配置值。

2.环境初始化

## 创建相关目录
mkdir /gauss
chgrp dbgrp -R /gauss
chmod 775 -R /gauss## 解压数据库安装包
mkdir -p /soft/openGauss
chmod 775 -R /soft
mv clusterconfig.xml   /soft/openGauss
mv openGauss-1.0.0-CentOS-64bit.tar.gz  /soft/openGauss
cd /soft/openGauss
tar -zxvf openGauss-1.0.0-CentOS-64bit.tar.gz

交互式安装

注: 若是共用的环境,需要加入--sep-env-file=ENVFILE 参数分离环境变量,避免与其他用户相互影响。

export LD_LIBRARY_PATH=/soft/openGauss/script/gspylib/clib:/usr/python3.6.11/lib:$LD_LIBRARY_PATH
cd /soft/openGauss/script
./gs_preinstall -U omm -G dbgrp -X /soft/openGauss/clusterconfig.xml

​ 安装时,preinstall 脚本会自动创建 root 用户的互信(单实例是本机 root 互信),当不允许创建 root 用户互信时,在主机上使用创建的 omm 用户执行本地模式前置,然后用户手动创建 openGauss 用户互信:如果预安装指定-L 参数,预安装前需手动将节点的主机名和 IP 映射关系写入/etc/hosts 文件,并在映射关系后添加注释内容"#Gauss OM IP Hosts Mapping".

cd /soft/openGauss/script
./gs_preinstall -U omm -G dbgrp -L -X /soft/openGauss/clusterconfig.xml  ##在每个节点手动执行

手动使用脚本创建互信(参考)

vi /soft/hostfile
-----------------------
***.***.***.***
-----------------------cd  /soft/openGauss/script
./gs_sshexkey -f /soft/hostfile

非交互式安装(参考)

# 手动使用脚本创建互信
vi /soft/hostfile
-----------------------
***.***.***.***
-----------------------cd  /soft/openGauss/script
./gs_sshexkey -f /soft/hostfilecd /soft/openGauss/script
./gs_preinstall -U omm -G dbgrp -X /soft/openGauss/clusterconfig.xml  --non-interactive

# 错误排查:

​ 如果准备安装环境失败请根据 openGauss 日志目录“$GAUSSLOG/om”下的“gs_preinstall-YYYY-MM-DD_HHMMSS.log”和“gs_local-YYYY-MM-DD_HHMMSS.log”中的日志信息排查错误。例如配置文件中“$gaussdbLogPath”参数指定的路径为“/var/log/gaussdb”,则“$GAUSSLOG/om”路径为“/var/log/gaussdb/omm/om”,omm 用户为运行 openGauss 的用户。

四、部署安装 openGauss 软件

## 执行安装脚本
chmod -R 775 /soft/
chown omm:dbgrp /soft -R
su - omm
cd /soft/openGauss/script
./gs_install -X /soft/openGauss/clusterconfig.xml  ## 密码复杂度要求:大写+小写+数字+特殊字符(任选3类,至少8位)

说明:

  • 默认字符集与操作系统设置保持一致,也可以在数据库初始化时使用-E 参数指定数据库的字符集为 GBK/UTF-8/Latinl,默认字符集为 SQL_ASCII
  • openGauss 支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/utf8/utf-8、Latinel/latinel
  • 执行 gs_install 脚本时,如果输入参数–autostart=no, 则工具脚本在配置(config)步骤完成后退出,不会自动启动 openGauss,需要用户通过执行 gs_om -t start 命令手动启动。
  • 安装过程中会生成 ssl 证书,证书存放路径为{gaussdbAppPath}/share/sslcert/om,其中{gaussdbAppPath}为集群 openGauss 配置文件中指定的程序安装目录。日志文件路径下会生成两个日志文件:“gs_install-YYYY-MMDD_HHMMSS.log”和“gs_local-YYYY-MM-DD_HHMMSS.log”

五、安装验证

su - root
cd /soft/openGauss/script/
./gs_checkos -i A
./gs_checkos -i B

六、初始化数据库

方法一:脚本初始化 (经测试,该脚本运行异常,执行初始化后又自动将文件删除,最终初始化无效)

## 命令示例:
gs_initdb  -E  UTF-8 --locale=zh_CN.UTF-8 /opt/gaussdb/data/data_n1 --nodename dn1 -w "Bigdata@123"## 当前测试使用的数据库版本
[omm@db1 ~]$ gaussdb -V
gaussdb (openGauss 1.0.0 build 0bd0ce80) compiled at 2020-06-30 18:19:27 commit 0 last mr## 初始化命令示例(结束时清空了数据目录,脚本可能存在异常,暂时不使用该方法)
[omm@db1 ~]$ gs_initdb -E UTF-8 --locale=en_US.UTF-8 /gauss/data/db1/tmp --nodename db1.opengauss.com -w "gauss@111"
The files belonging to this database system will be owned by user "omm".
This user must also own the server process.The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".creating directory /gauss/data/db1/tmp ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
creating template1 database in /gauss/data/db1/tmp/base/1 ... ok
initializing pg_authid ... ok
setting password ... ok
initializing dependencies ... ok
loading PL/pgSQL server-side language ... ok
creating system views ... ok
creating performance views ... ok
loading system objects' descriptions ... gs_initdb: removing data directory "/gauss/data/db1/tmp"  ## 自动删除了数据目录

方法二:gsql 方式

# gsql -d postgres -p 26000
postgres=# alter role omm identified by 'Gauss@123' replace 'Gauss_111';
postgres=# CREATE DATABASE mydb WITH ENCODING 'GBK' template = template0;

简单查询测试:

postgres=# select version();
postgres=# \lList of databasesName    | Owner | Encoding  | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------mydb      | omm   | UTF8      | C       | C     |postgres  | omm   | SQL_ASCII | C       | C     |template0 | omm   | SQL_ASCII | C       | C     | =c/omm           +|       |           |         |       | omm=CTc/ommtemplate1 | omm   | SQL_ASCII | C       | C     | =c/omm           +|       |           |         |       | omm=CTc/omm

七、卸载数据库

## 登录主节点执行
su - omm
gs_uninstall --delete-data     # 卸载集群所有数据库
gs_uninstall --delete-data -L  # 仅卸载本地数据库# 如果卸载失败请根据“$GAUSSLOG/om/gs_uninstall-YYYY-MM-DD_HHMMSS.log”中的日志信息排查错误。

八、清理系统环境配置

​ 在 openGauss 卸载完成后,如果不需要在环境上重新部署 openGauss,可以运行脚本 gs_postuninstall 对 openGauss 服务器上环境信息做清理。openGauss 环境清理是对环境准备脚本 gs_preinstall 所做设置的清理。

1> 确保 root 用户 SSH 互信

2> 执行清理脚本,如下:

cd /opt/software/openGauss/script
./gs_postuninstall -U omm -X /opt/software/openGauss/clusterconfig.xml --delete-user --delete-group
./gs_postuninstall -U omm -X /opt/software/openGauss/clusterconfig.xml --delete-user --delete-group -L ## 仅清理本地环境
## 若为环境变量分离的模式安装的集群需删除之前source的环境变量分离的env参数

3> 删除 root 的 SSH 互信,并删除 ENVFILE 环境变量:unset MPPDB_ENV_SEPARATE_PATH

注意:若是共用的环境,需要加入--sep-env-file

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

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

相关文章

docker设置容器独立ip(linux下虚拟机设置独立ip)

docker设置容器独立ip&#xff08;linux下虚拟机设置独立ip&#xff09; 在linux要设置容器或者其他虚拟机独立ip&#xff0c;需要如下步骤&#xff1a; 准备好ip和网关创建好网桥&#xff0c;并把物理网卡连接到网桥上对于docker容器来说&#xff0c;需要使用pipework配置容…

深度学习指标| 置信区间、Dice、IOU、MIOU、Kappa

深度学习部分指标介绍 置信区间混淆矩阵DiceIOU和MIOUKappa 置信区间 95%CI指标 读论文的时候&#xff0c;常会看到一个“95%CI”的评价指标。 其中CI指的是统计学中的置信区间&#xff08;Confidence interval&#xff0c;CI&#xff09;。在统计学中&#xff0c;一个概率样…

代码随想录训练营第46天 | LeetCode 139.单词拆分、动态规划:关于多重背包,你该了解这些!、总结

目录 LeetCode 139.单词拆分 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;你的背包如何装满&#xff1f;| LeetCode&#xff1a;139.单词拆分_哔哩哔哩_bilibili 思路 动态规划&#xff1a;关于多重背包&#xff0c;你该了解这些&#xff01…

perl 用 XML::LibXML DOM 解析 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 在云计算中&#xff0c;解析XML元素和属性是一种常见的操作…

vite打包流程和原理

文章目录 打包原理Vite比Webpack快&#xff1f;在生产环境下的表现启动项目后&#xff0c;完成加载比较慢&#xff1f;Esbuild & Rollup热更新 打包原理 vite利用了ES module这个特性&#xff0c;使用vite运行项目时&#xff0c;首先会用esbuild进行预构建&#xff0c;将所…

迷宫寻路[天梯赛 -- 栈]

文章目录 题目描述思路AC代码 题目描述 输入样例 8 8 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 4 4 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 -1 -1输出样例 1,1 2,1 3,1 4,1 5,1 5,2 5…

【Session】Tomcat Session 集群

设备 nginx&#xff1a;192.168.67.11 tomcat1&#xff1a;192.168.67.12 tomcat2&#xff1a;192.168.67.13安装nginx &#xff08;192.168.67.11&#xff09; #关闭防火墙和安全机制 [roottest1 ~]# systemctl stop firewalld [roottest1 ~]# setenforce 0#安装epel源 [ro…

HTML5、CSS3面试题(三)

HTML5、CSS3面试题&#xff08;二&#xff09; rem 适配方法如何计算 HTML 跟字号及适配方案&#xff1f;&#xff08;必会&#xff09; 通用方案 1、设置根 font-size&#xff1a;625%&#xff08;或其它自定的值&#xff0c;但换算规则 1rem 不能小于 12px&#xff09; 2…

JavaScript 通过 URL 获取 MIME类型

在JavaScript中&#xff0c;您可以使用URL对象和MediaType来获取URL中的MIME类型。 const mimeTypes {.jpg: image/jpeg,.jpeg: image/jpeg,.png: image/png,.gif: image/gif,.txt: text/plain,.html: text/html,.css: text/css,.js: application/javascript,// ... 其他MIME…

【AI+办公】利用AI软件制作PPT提升工作效率

最近看了很多AI相关信息的输入&#xff0c;很多使用AI软件赚钱的文章或付费课程&#xff0c;思路多多少少自己了解不少&#xff0c;后面有时间分享下。本篇主题是&#xff0c;利用AI软件制作PPT提升工作效率。对于上班族来说&#xff0c;提升工作效率也是一种节省个人时间的方式…

002——编译鸿蒙(Liteos -a)

目录 一、鸿蒙是什么 二、Kconfig 2.1 概述 2.2 编译器 2.3 make使用 本文章引用了很多韦东山老师的教程内容&#xff0c;算是我学习过程中的笔记吧。如果侵权请联系我。 一、鸿蒙是什么 这里我补充一下对鸿蒙的描述 这张图片是鸿蒙发布时使用的&#xff0c;鸿蒙是一个很…

JAVA 100道题目(1)

1.编写一个程序&#xff0c;输入两个整数并计算它们的和 以下是一个简单的Java程序&#xff0c;用于输入两个整数并计算它们的和&#xff1a; java复制代码 import java.util.Scanner; public class IntegerSum { public static void main(String[] args) { Scanner scanner …

hcia复习总结5

路由表 路由器的转发原理&#xff1a;当一个数据包进入路由器&#xff0c;路由器将基于数据包中的 目标IP地址查看本地的 路由表 。如果路由表中存在记录&#xff0c;则将 无条件 按照 路由表记录执行&#xff1b;如果没有记录&#xff0c;则将该数据包直接丢弃。 <aa…

基于变分模态分解与平稳小波变换的信号联合降噪(MATLAB R2021B)

变分模态分解VMD与递归式模态分解(EMD等)所采取的层层筛选模式有本质的不同&#xff0c;其整体框架是变分问题的求解&#xff0c;并且具有坚实的理论基础。 关于递归式模态分解(EMD等)的研究&#xff0c;实践超前于理论&#xff0c;目前尚没有严格的理论支持&#xff0c;递归式…

无硫防静电手指套:高科技产业的纯净与安全新选择

随着科技的飞速发展&#xff0c;高科技产业对于生产环境的纯净度和产品的防静电要求日益严格。为了满足这一高标准的需求&#xff0c;无硫防静电手指套应运而生&#xff0c;以其独特的无硫特性和出色的防静电功能&#xff0c;迅速成为了高科技产业中的纯净与安全新选择。 无硫手…

生成器模式(软考uml C++版)

按照软考中级软件设计师中指定的生成器模式uml图&#xff0c;可编写对应的C&#xff0b;&#xff0b;代码&#xff1a; #include<iostream> #include<vector> #include<string> using namespace std;/*创建者模式&#xff0c;又名生成器模式意图&#xff1a…

html5的css使用display: flex进行div居中的坑!

最近做项目的时候&#xff0c;有个需求&#xff0c;一个高度宽度不确定的Div在另一个Div内上下左右居中。 然后以前上下居中用的都是很繁琐的&#xff0c;就打算去百度搜索一个更优秀的方法。 百度AI自己给我一个例子&#xff1a; /* div在容器里居中显示&#xff0c;设置外容…

Linux_socket编程

套接字通信 socket 接口 守护进程 一.套接字通信 端口号&#xff1a; 端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; 一台主机可以根据ip地址定位另一台主机&#xff0c;而两台主机之间的通信本质是进程在通信。…

Mybatis(搭建,CRUD,方法参数,XML映射文件,动态SQL)【详解】

目录 一.准备基础代码 Mybatis的通用配置 二. 基本CURD操作 1.查询-根据id查询一条 2.查询-查询数量 3.删除 4.新增 获取主键值 5.修改 6.查询-模糊查询 预编译SQL #{}与${}的区别【面试题】 三. Mybatis的方法参数与结果集 1.SQL里取方法参数的值 2.查询结果集…

简单分析SpringMVC的处理请求流程

SpringMVC的处理请求流程 Tomcat接收到一个请求后&#xff0c;会交给DispatcherServlet处理 DispatcherServlet会根据请求的url找到对应的Handler&#xff0c;Handler实际上是一个加了RequestMapping或GetMapping等类似注解的方法 在执行方法前会解析方法参数&#xff0c;即解…