GreenPlum分布式集群部署实战

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.环境准备
      • ✨ 1.1 安装包下载
      • ✨ 1.2 IP及实例规划
      • ✨ 1.3 操作系统
    • 📣 2.安装前准备
      • ✨ 2.1 hostname设置
      • ✨ 2.2./etc/hosts
      • ✨ 2.3 创建用户
      • ✨ 2.4 host文件创建
      • ✨ 2.5 配置互信
      • ✨ 2.6 关闭防火墙
      • ✨ 2.7 禁用selinux
    • 📣 3.安装GP
      • ✨ 3.1 安装依赖
      • ✨ 3.2 安装rpm包
      • ✨ 3.3 目录创建
      • ✨ 3.4 数据库初始化
    • 📣 4.GP集群验证
    • 📣 5.集群管理命令

前言

Greenplum是一个面向数据仓库应用的分布式关系型数据库,本文介绍了整个分布式集群部署的过程。

📣 1.环境准备

✨ 1.1 安装包下载

1.Greenplum 的 GitHub
https://github.com/greenplum-db/gpdb/releases
2.Pivotal公司官网
https://network.pivotal.io/products/vmware-greenplum

✨ 1.2 IP及实例规划

IP主机名端口备注
192.168.6.12mdw15432Master host
192.168.6.13mdw25432Standby host
192.168.6.14sdw1主:6000-6001
镜像:7000-7001
segment host1,配置2个主实例+2个镜像实例
192.168.6.15sdw2主:6000-6001
镜像:7000-7001
segment host2,配置2个主实例+2个镜像实例

在这里插入图片描述

✨ 1.3 操作系统

[root@jeames ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@jeames ~]# free -m
total used free shared buff/cache available
Mem: 3771 159 3407 11 204 3365
Swap: 3967 0 3967

📣 2.安装前准备

✨ 2.1 hostname设置

1个master+1个standby master,2个segment的集群示例,OS均为CentOS 7.6.1810
–设置host名,4个节点设置
hostnamectl set-hostname mdw1
hostnamectl set-hostname mdw2
hostnamectl set-hostname sdw1
hostnamectl set-hostname sdw2

✨ 2.2./etc/hosts

在Greenplum中,习惯将Master机器叫做mdw,将Segment机器叫做sdw,dw的含义为Data Warehouse。
注意:4个节点设置一致
cat >> /etc/hosts <<“EOF”
192.168.6.12 mdw1
192.168.6.13 mdw2
192.168.6.14 sdw1
192.168.6.15 sdw2
EOF

✨ 2.3 创建用户

groupadd -g 1530 gpadmin
useradd -g 1530 -u 1530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
echo “gpadmin:jeames” | chpasswd

✨ 2.4 host文件创建

1.为所有节点创建一个all_hosts文件,包含所有节点主机名
su - gpadmin
mkdir -p /home/gpadmin/conf/
cat > /home/gpadmin/conf/all_hosts <<“EOF”
mdw1
mdw2
sdw1
sdw2
EOF
2.为所有节点创建一个seg_hosts文件 ,包含所有的Segment Host的主机名
su - gpadmin
cat > /home/gpadmin/conf/seg_hosts <<“EOF”
sdw1
sdw2
EOF

✨ 2.5 配置互信

集群ssh免密,做互信的配置,只在master节点 192.168.6.12 操作
1.生成秘钥对
ssh-keygen -t rsa
2.分发公钥
su - gpadmin
ssh-copy-id gpadmin@mdw1
ssh-copy-id gpadmin@mdw2
ssh-copy-id gpadmin@sdw1
ssh-copy-id gpadmin@sdw2

✨ 2.6 关闭防火墙

每个节点机器 root 用户操作
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

✨ 2.7 禁用selinux

cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

sed -i "s#^SELINUX=.*#SELINUX=disabled#g"  /etc/selinux/config
注意:修改后记得重启

📣 3.安装GP

✨ 3.1 安装依赖

##安装依赖包
yum install net-tools -y
yum install libcgroup-tools -y

yum install -y apr apr-util bash bzip2 curl krb5 libcurl libevent libxml2 libyaml
zlib openldap openssh openssl openssl-libs perl readline rsync R sed tar zip krb5-devel

✨ 3.2 安装rpm包

在所有节点操作,root用户操作
1.默认安装到/usr/local下
rpm -ivh open-source-greenplum-db-6.24.3-rhel7-x86_64.rpm
2.赋权,修改该路径gpadmin操作权限
chown -R gpadmin:gpadmin /usr/local/greenplum*

✨ 3.3 目录创建

##创建目录,用作集群数据的存储目录,所有节点操作
mkdir -p /greenplum/data/
chown -R gpadmin:gpadmin /greenplum


-- 所有节点
echo ". /usr/local/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bashrc

-- master配置
echo "export MASTER_DATA_DIRECTORY=/greenplum/data/master/gpseg-1" >> /home/gpadmin/.bashrc
echo "export PGDATABASE=postgres" >> /home/gpadmin/.bashrc

# 使配置文件生效
source /home/gpadmin/.bashrc

✨ 3.4 数据库初始化

在master节点操作:创建一个初始化副本 initgp_config,修改参数:

-- 在所有节点操作(在master节点创建master目录,在segment节点分布创建primary目录和mirror目录) 或 3个目录创建都可以
su - gpadmin

-- master节点,Standby节点
mkdir -p /greenplum/data/master

-- segment节点
mkdir -p /greenplum/data/primary
mkdir -p /greenplum/data/mirror


-- master节点配置,有几个segment节点就设置几个DATA_DIRECTORY
cat > /home/gpadmin/conf/initgp_config <<"EOF"
#指定primary segment的数据目录,多个目录表示一台机器有多个segment
declare -a DATA_DIRECTORY=(/greenplum/data/primary /greenplum/data/primary)
# mirror的数据目录,和主数据一样,一个对一个,多个对多个
declare -a MIRROR_DATA_DIRECTORY=(/greenplum/data/mirror /greenplum/data/mirror)
#数据库代号
ARRAY_NAME="rptgp"
#segment前缀
SEG_PREFIX=gpseg
#primary segment 起始的端口号
PORT_BASE=6000
MIRROR_PORT_BASE=7000
MASTER_PORT=5432
MASTER_HOSTNAME=mdw1
MASTER_DIRECTORY=/greenplum/data/master
DATABASE_NAME=rptgpdb
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
EOF


--在master节点操作,执行初始化命令
su - gpadmin
gpinitsystem -c /home/gpadmin/conf/initgp_config -e=jeames -s mdw2 -P 5432 -S /greenplum/data/master/gpseg-1 -m 200 -b 256MB

📣 4.GP集群验证

若初始化成功,则GP自动启动,可以看到master节点上的5432已经在listen了,psql进入数据库,开始greenplum之旅。

[gpadmin@mdw1 ~]$ netstat -tulnp | grep 5432
(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 0.0.0.0:5432            0.0.0.0:*               LISTEN      58954/postgres
tcp6       0      0 :::5432                 :::*                    LISTEN      58954/postgres


[gpadmin@mdw1 ~]$ psql postgres -c 'SELECT * FROM pg_stat_replication;'
  pid  | usesysid | usename | application_name | client_addr  | client_hostname | client_port |         backend_start         | backend_xmin |   state
 | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state
-------+----------+---------+------------------+--------------+-----------------+-------------+-------------------------------+--------------+----------
-+---------------+----------------+----------------+-----------------+---------------+------------
 60403 |       10 | gpadmin | gp_walreceiver   | 192.168.6.13 |                 |       33428 | 2023-06-11 15:37:38.811796+08 |              | streaming
 | 0/C000000     | 0/C000000      | 0/C000000      | 0/C000000       |             1 | sync
(1 row)


[gpadmin@mdw1 ~]$ psql -d rptgpdb
psql (9.4.26)
Type "help" for help.

rptgpdb=# \l
                               List of databases
   Name    |  Owner  | Encoding |  Collate   |   Ctype    |  Access privileges
-----------+---------+----------+------------+------------+---------------------
 postgres  | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 |
 rptgpdb   | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =c/gpadmin         +
           |         |          |            |            | gpadmin=CTc/gpadmin
 template1 | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =c/gpadmin         +
           |         |          |            |            | gpadmin=CTc/gpadmin

rptgpdb=# show port;
 port
------
 5432
(1 row)

rptgpdb=# show listen_addresses;
 listen_addresses
------------------
 *
(1 row)

rptgpdb=# select * from gp_segment_configuration order by 1;
 dbid | content | role | preferred_role | mode | status | port | hostname | address |            datadir
------+---------+------+----------------+------+--------+------+----------+---------+--------------------------------
    1 |      -1 | p    | p              | n    | u      | 5432 | mdw1     | mdw1    | /greenplum/data/master/gpseg-1
    2 |       0 | p    | p              | s    | u      | 6000 | sdw1     | sdw1    | /greenplum/data/primary/gpseg0
    3 |       1 | p    | p              | s    | u      | 6001 | sdw1     | sdw1    | /greenplum/data/primary/gpseg1
    4 |       2 | p    | p              | s    | u      | 6000 | sdw2     | sdw2    | /greenplum/data/primary/gpseg2
    5 |       3 | p    | p              | s    | u      | 6001 | sdw2     | sdw2    | /greenplum/data/primary/gpseg3
    6 |       0 | m    | m              | s    | u      | 7000 | sdw2     | sdw2    | /greenplum/data/mirror/gpseg0
    7 |       1 | m    | m              | s    | u      | 7001 | sdw2     | sdw2    | /greenplum/data/mirror/gpseg1
    8 |       2 | m    | m              | s    | u      | 7000 | sdw1     | sdw1    | /greenplum/data/mirror/gpseg2
    9 |       3 | m    | m              | s    | u      | 7001 | sdw1     | sdw1    | /greenplum/data/mirror/gpseg3
   10 |      -1 | m    | m              | s    | u      | 5432 | mdw2     | mdw2    | /greenplum/data/master/gpseg-1
(10 rows)

rptgpdb=# select * from gp_segment_configuration order by hostname,port;
 dbid | content | role | preferred_role | mode | status | port | hostname | address |            datadir
------+---------+------+----------------+------+--------+------+----------+---------+--------------------------------
    1 |      -1 | p    | p              | n    | u      | 5432 | mdw1     | mdw1    | /greenplum/data/master/gpseg-1
   10 |      -1 | m    | m              | s    | u      | 5432 | mdw2     | mdw2    | /greenplum/data/master/gpseg-1
    2 |       0 | p    | p              | s    | u      | 6000 | sdw1     | sdw1    | /greenplum/data/primary/gpseg0
    3 |       1 | p    | p              | s    | u      | 6001 | sdw1     | sdw1    | /greenplum/data/primary/gpseg1
    8 |       2 | m    | m              | s    | u      | 7000 | sdw1     | sdw1    | /greenplum/data/mirror/gpseg2
    9 |       3 | m    | m              | s    | u      | 7001 | sdw1     | sdw1    | /greenplum/data/mirror/gpseg3
    4 |       2 | p    | p              | s    | u      | 6000 | sdw2     | sdw2    | /greenplum/data/primary/gpseg2
    5 |       3 | p    | p              | s    | u      | 6001 | sdw2     | sdw2    | /greenplum/data/primary/gpseg3
    6 |       0 | m    | m              | s    | u      | 7000 | sdw2     | sdw2    | /greenplum/data/mirror/gpseg0
    7 |       1 | m    | m              | s    | u      | 7001 | sdw2     | sdw2    | /greenplum/data/mirror/gpseg1
(10 rows)

📣 5.集群管理命令

1.集群状态
[gpadmin@mdw1 ~]$ gpstate

20230611:15:46:55:063875 gpstate:mdw1:gpadmin-[INFO]:-Starting gpstate with args:
20230611:15:46:55:063875 gpstate:mdw1:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.24.3 build commit:25d3498a400ca5230e81ab                                      b94861f23389315213 Open Source'
20230611:15:46:55:063875 gpstate:mdw1:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.26 (Greenplum Database 6.24.3 build commit:25d3498a400ca                                      5230e81abb94861f23389315213 Open Source) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on May  3 2023 21:05:45'
20230611:15:46:55:063875 gpstate:mdw1:gpadmin-[INFO]:-Obtaining Segment details from master...
20230611:15:46:55:063875 gpstate:mdw1:gpadmin-[INFO]:-Gathering data from segments...
..
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-Greenplum instance status summary
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-----------------------------------------------------
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Master instance                                           = Active
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Master standby                                            = mdw2
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Standby master state                                      = Standby host passive
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total segment instance count from metadata                = 8
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-----------------------------------------------------
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Primary Segment Status
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-----------------------------------------------------
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total primary segments                                    = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total primary segment valid (at master)                   = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total primary segment failures (at master)                = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid files missing              = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid files found                = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs missing               = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs found                 = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of /tmp lock files missing                   = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of /tmp lock files found                     = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number postmaster processes missing                 = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number postmaster processes found                   = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-----------------------------------------------------
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Mirror Segment Status
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-----------------------------------------------------
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total mirror segments                                     = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total mirror segment valid (at master)                    = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total mirror segment failures (at master)                 = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid files missing              = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid files found                = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs missing               = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs found                 = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of /tmp lock files missing                   = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number of /tmp lock files found                     = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number postmaster processes missing                 = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number postmaster processes found                   = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number mirror segments acting as primary segments   = 0
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-   Total number mirror segments acting as mirror segments    = 4
20230611:15:46:57:063875 gpstate:mdw1:gpadmin-[INFO]:-----------------------------------------------------

gpstate -s 可以查看详细信息
命令gpstate -f可以查看standby master库的详情



2.开关闭集群
[gpadmin@mdw1 ~]$ gpstop -a
[gpadmin@mdw1 ~]$ gpstart -a

在这里插入图片描述

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

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

相关文章

Django实现简单的音乐播放器 3

在原有音乐播放器上请求方式优化和增加加载本地音乐功能。 效果&#xff1a; 目录 播放列表优化 设置csrf_token 前端改为post请求 视图端增加post验证 加载歌曲 视图 设置路由 模板 加载layui css 加载layui js 增加功能列表 功能列表脚本实现 最终效果 总结 播…

Vue 如何简单快速组件化

文章目录 前言相关文章组件化实战如何引入组件什么是父组件&#xff0c;什么是子组件如何实现给子组件赋值完整代码 如何调用子组件方法完整代码 总结 前言 为了简化拆分复杂的代码逻辑&#xff0c;和实现代码的组件化&#xff0c;封闭化。我们需要使用组件化的方法。我这里只…

SDN-OpenDaylight与Mininet的原理、安装、使用

一、前言 本文将介绍OpenDaylight与Mininet的原理并介绍他们的安装及简单的使用&#xff0c;本实验的环境为Liunx Ubuntu 16.04&#xff0c;已成功安装OVS&#xff0c;但没有安装Mininet。 二、原理 &#xff08;一&#xff09;OpenDaylight OpenDaylight是一个软件定义网络&…

天猫数据分析工具(天猫实时数据)

后疫情时代&#xff0c;聚会、聚餐与送礼热度上涨&#xff0c;酒类产品既作为送礼首选又作为佐餐饮品的热门选手也受此影响迎来消费小高峰。在此背景下&#xff0c;白酒市场也开始复苏并不断加快速度。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年1月份至4月…

C# 简述.NET中堆和栈的区别

目录 一&#xff0c;引言 二&#xff0c;.NET的堆栈 三&#xff0c;.NET中的托管堆 四&#xff0c;.NET中的非托管堆 五、堆栈、托管堆和非托管堆的比较 六&#xff0c;总结 一&#xff0c;引言 .NET提供了垃圾回收机制&#xff0c;使程序员从内存管理中被解放出来。但这…

4.2 x64dbg 针对PE文件的扫描

通过运用LyScript插件并配合pefile模块&#xff0c;即可实现对特定PE文件的扫描功能&#xff0c;例如载入PE程序到内存&#xff0c;验证PE启用的保护方式&#xff0c;计算PE节区内存特征&#xff0c;文件FOA与内存VA转换等功能的实现&#xff0c;首先简单介绍一下pefile模块。 …

【Web3】Web3连接到以太坊网络(测试网、主网)

目录 什么是Web3 Web3项目连接以太坊网络 1.下载Web3 2.实例化Web3对象 3.infura 获取连接以太坊网络节点 4.添加网络节点 什么是Web3 web3.js开发文档&#xff1a;web3.js - Ethereum JavaScript API — web3.js 1.0.0 documentation web3.js 中文文档 : web3.js - 以…

Mysql 幻读,当前读和快照读

什么是幻读 幻读指当用户读取某一范围的数据行时&#xff0c;另一个事务又在该范围内插入了新行&#xff0c;当用户在读取该范围的数据行时&#xff0c;会发现有新增行数据&#xff1b; mysql 在RR(可重复读)隔离级别利用间隙锁机制下一定程度上解决了幻读。 这里的一定程度…

Android Studio实现内容丰富的安卓美食管理发布平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号079 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

更改VS code Jupyter 插件的默认快捷键

更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键 替换Jupyter默认快捷键 更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键打开keyboard shortcuts 设置方法一方法二 更换快捷键 end Jupyter 插件很好的在VS code中集成了…

异地远程访问本地SQL Server数据库【无公网IP内网穿透】

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云文章&#xff1a;无需公网IP…

Golang的trace性能分析

文章目录 一、trace概述二、trace的使用方式代码中trace采集通过pprof采集 三、trace分析细节trace的web界面trace中需要关注的关注GC的频率关注goroutine调度情况关注goroutine的数量理想情况 四、GC分析当前服务GC情况设置GOGC设置GOMEMLIMITGC阈值的讨论GC的特点 五、gorout…

前端学习——jsDay5

对象 对象使用 小练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

Spring Boot中的请求参数绑定及使用

Spring Boot中的请求参数绑定及使用 在Web应用程序中&#xff0c;请求参数绑定是非常重要的操作。Spring Boot框架使得请求参数绑定变得非常简单&#xff0c;通过使用注解和预定义的类可以轻松地实现此操作。本文将介绍Spring Boot中的请求参数绑定及其使用。 请求参数绑定 在…

银河麒麟服务器v10 sp1 部署 Net6.0 项目

上一篇已经部署了Net6.0环境&#xff0c;本节将实现Net6.0程序部署&#xff0c;打开或新建项目&#xff0c;修改appsettings.json配置&#xff1a; 添加&#xff1a;"urls": "http://*:8061",//linux部署使用&#xff0c;端口可根据需求修改为自己的 在项…

关于数据库SQL优化

简介 在项目上线初期&#xff0c;业务数据量相对较少&#xff0c;SQL的执行效率对程序运行效率的影响可能不太明显&#xff0c;因此开发和运维人员可能无法判断SQL对程序的运行效率有多大。但随着时间的积累&#xff0c;业务数据量的增多&#xff0c;SQL的执行效率对程序的运行…

简要介绍 | 基于深度学习的姿态估计技术

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对基于深度学习的姿态估计技术进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 注2&#xff1a;"简要介绍"系列的所有创作均使用了AIGC工具辅助 基于深度学习的姿态估计技术 背景介绍 …

前端 | windows安装nvm管理node.js

文章目录 01 nvm介绍02 安装03 设置镜像04 安装与版本管理05 基础使用 01 nvm介绍 nvm&#xff0c;即node version manager&#xff0c;是一个方便切换和管理node.js版本的工具。 安装nvm前的注意事项&#xff1a; 卸载掉现有的node.js所有安装目录避免出现空格和中文选用管理…

用vue3+elementplus做的一个滚动菜单栏的组件

目录 起因概览设计及解决思路1.滚动条竖起来2.绑定菜单3.吸附优化 组件全部代码 起因 在elementplus中看到了滚动条绑定了slider&#xff0c;但是这个感觉很不实用&#xff0c;在底部&#xff0c;而且横向滚动&#xff0c;最常见的应该是那种固定在左上角的带着菜单的滚动条&a…

Windows 10睡眠失效解决办法

第一步 检查是否有程序阻止睡眠 打开终端,执行如下命令 powercfg /requests如果返回结果不为空说明有程序阻止睡眠 找到对应的程序将其退出即可 如果返回结果为空则进行下一步 第二步 检查网易UU加速器 如果你安装了UU加速器 打开网易UU加速器 打开系统设置,将休眠不断…
最新文章