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

openGauss学习笔记-58 openGauss 高级特性-资源池化

文章目录

    • openGauss学习笔记-58 openGauss 高级特性-资源池化
      • 58.1 特性简介
      • 58.2 架构介绍
      • 58.3 功能特点
      • 58.4 适用场景与限制
      • 58.5 手动安装示例
      • 58.6 OCK RDMA使用示例
      • 58.7 OCK SCRLock使用示例

openGauss学习笔记-58 openGauss 高级特性-资源池化

58.1 特性简介

资源池化特性主要提供主备机共享一份存储的能力,提供一种新HA部署形态,解决传统HA部署下存储容量较单机翻倍的问题,满足降低存储容量及成本的诉求,同时备机支持实时一致性读。

58.2 架构介绍

资源池化整体架构图如下所示。

图 1 资源池化架构图
image-20230524192352441

  • 磁阵设备并且已经安装ultrapath多路径软件,磁阵设备可用。

  • 分布式存储服务DSS(Distributed Storage Service)

    DSS组件分为DSSAPI和DSSSERVER。DSSSERVER是独立进程,直接管理磁阵裸设备,并对外提供类似分布式文件系统的能力;DSSAPI是动态库,集成在数据库内部。DSS组件通过共享内存和客户端API动态库,为数据库提供创建文件、删除文件、扩展和收缩文件、读写文件的能力。

  • 分布式内存服务DMS(Distributed Memory Service)

    DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能。

  • 主备页面交换通过RDMA加速,依赖CX5网卡,并且依赖OCK RDMA动态库。

58.3 功能特点

  • 主备共享一份数据,显著降低传统HA的存储容量。
  • 主备之间去除了日志复制功能,增加了主备页面交换功能,备机支持实时一致性读。
  • 默认情况下,主备之间是通过TCP网络进行页面实时交换。为了降低页面交换的延迟,可选通过OCK RDMA动态库加速备机实时一致性的性能。

58.4 适用场景与限制

  • 要求存储设备是磁阵,磁阵的LUN需要支持SCSI3的PR协议(包括PR OUT(“PERSISTENT RESERVE OUT”)PR IN(“PERSISTENT RESERVE IN”)和INQUIRY), 用于实现集群IO FENCE;除此之外, 还需要支持SCSI3的CAW协议(COMPARE AND WRITE), 用于实现共享磁盘锁。如Dorado 5000 V3磁阵设备。
  • 最高支持1主7备部署。
  • 由于资源池化依赖类似分布式文件系统的功能来实现备机实时一致性读能力,因此要求文件元数据变更越少越好。基于性能考虑,本特性只支持段页式表。
  • 只支持主备部署在同一磁阵设备上,不支持容灾部署,也不支持主备混合部署(如主和备部署在不同的磁阵设备上)。
  • 主备页面交换可选通过RDMA加速,依赖CX5网卡,并且依赖计算提供的OCK RDMA动态库。
  • 暂不支持备机重建及节点替换、节点修复等能力。
  • 不支持传统模式数据库和资源池化模式数据库相互升级。

58.5 手动安装示例

与传统gs_initdb建库相比,资源池化建库将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到磁阵设备上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。资源池化新增了相关GUC参数,以及将系统表存储方式从页式切换到段页式。

img 说明: 此处的单步手动安装是指工程编译之后,可单步执行相关命令进行资源池化建库。openGauss常规安装请参照《安装指南》。

  • 前置条件

    • 工程已完成代码编译,编译请参见软件安装编译
    • 主机已经挂载磁阵LUN设备,并且已经安装ultrapath多路径软件,磁阵设备可用。
  • 操作步骤

    1. 为磁阵LUN盘符创建软链接,并赋予相应的用户权限(假设磁阵LUN对应的盘符为/dev/sde, /dev/sdf)。

      sudo ln -s /dev/sde /dev/tpcc_data
      sudo ln -s /dev/sdf /dev/tpcc_log
      sudo chmod 777 /dev/tpcc_data
      sudo chmod 777 /dev/tpcc_log
      
    2. 为需要磁阵RAWIO权限的可执行文件赋权。

      sudo -i setcap CAP_SYS_RAWIO+ep 绝对路径/perctrl
      

      perctrl:用于对dss相关工具和进程赋予读写权限的可执行工具。

    3. 创建DSS服务端进程及建资源池化库需要的配置文件。

      测试目录(假设为/data/test)

      └─dss_home/
      ├── cfg
      │   ├── dss_inst.ini
      │   └── dss_vg_conf.ini
      └── log // 启动前需存在log目录
      

      dss_init.ini配置内容如下:

      INST_ID=0
      _LOG_LEVEL=55
      _LOG_BACKUP_FILE_COUNT=128
      _LOG_MAX_FILE_SIZE =20M
      LSNR_PATH=/data/test/dss_home
      STORAGE_MODE=RAID
      _SHM_KEY=12
      

      上述配置中参数说明如下:

      • INST_ID配置实例号,取值范围[0, 63],每个主备下的dssserver进程各不相同。
      • _LOG_LEVEL日志级别。
      • _LOG_BACKUP_FILE_COUNT日志文件最多保留的个数。
      • _LOG_MAX_FILE_SIZE为单个日志文件最大大小。
      • LSNR_PATH为DSS客户端与服务端之间通信使用的domain socket保存的目录,一般设为DSS服务端进程的家目录。
      • STORAGE_MODE为DSS对应的存储设备类型,磁阵的话配置为RAID。
      • _SHM_KEY共享内存KEY,需要保证每个DSS各不相同。

      dss_vg_conf.ini配置内容如下,

       data:/dev/tpcc_datalog: /dev/tpcc_log
      

      表示+data目录的内容存放在/dev/tpcc_data设备上,+log目录内容存放在/dev/tpcc_log设备上。这里要注意下,约定通过根目录名是否有+字符区分是文件系统中的文件,还是DSS中的文件。用户可以把DSS当做类似分布式文件系统来看待。

    4. 使用DSS客户端工具(dsscmd)在磁阵设备上初始化VG(类似于在裸盘上初始化文件系统的操作)。

      # 清空磁阵LUN开头数据
      dd if=/dev/zero bs=2048 count=100000 of=/dev/tpcc_data
      dd if=/dev/zero bs=2048 count=100000 of=/dev/tpcc_log
      # 创建VG
      dsscmd cv -g data -v /dev/tpcc_data -s 2048 -D /data/ss_test/dss_home
      dsscmd cv -g log  -v /dev/tpcc_log -s 65536 -D /data/ss_test/dss_home
      # 拉起dssserver
      dssserver -D /data/ss_test/dss_home &
      
    5. 通过gs_initdb建立资源池化库。

      gs_initdb -D /data/ss_test/dn_primary --nodename=single_node -w Gauss_234 --vgname="+data,+log" --enable-dss --dms_url="0:127.0.0.1:1611,1:127.0.0.1:1711" -I 0 --socketpath="UDS:/data/ss_test/dss_home/.dss_unix_d_socket"
      

      其中新增5个相关参数:

      • –vgname 卷组名,指定资源池化库建在哪个卷组下,这个名字与dss_vg_conf.ini文件中的配置项相关,卷组名需要出现在配置文件中,并且以‘+’字符开头。
      • –enable_dss 表示资源池化库要建到DSS里。
      • –dms_url “0:127.0.0.1:1611,1:127.0.0.1:1711”,格式为instance_id:ip:port。
      • -I 指定当前节点的实例号,取值范围[0,63]。
      • –socketpath 指定DSS客户端(这里指集成到数据库相关可执行文件中的DSS客户端动态库)与服务端通信使用的unix domain socket存放的位置。
    6. 建资源池化库成功,通过gs_ctl start命令拉取数据库进程。

      gs_ctl start -D /data/ss_test/dn_primary
      
    7. 按照上述步骤再重新执行安装备机。

58.6 OCK RDMA使用示例

资源池化特性提供备机实时一致性读功能,主备之间页面交换可选择通过RDMA加速。此章节简要描述如何在资源池化中开启RDMA通信功能。

  • 前置条件

    开启RDMA功能依赖CX5网卡,并且依赖OCK RPC动态库。

  • 操作步骤

    1. 获取OCK RPC包。

      从指定openGauss接口人处获取。

    2. 部署OCK RPC包。

      1. 解压OCK RPC包。

        tar -zxf OCK_platform_rpc_22.0.0_EulerOS-aarch64.tar.gz
        cd OCK_platform_rpc_22.0.0_EulerOS-aarch64_release
        tar -zxf OCK_platform_rpc_EulerOS_aarch64.tar.gz
        tar -zxf OCK_platform_rpc_sbin.tar.gz
        cp rpc_sbin/ock_rpc_opengauss.sh ./
        
      2. 修改部署脚本ock_rpc_opengauss.sh参数。

        # Deployment user, which is the same as the opengauss user. 
        # It is a non-root user. Ensure that this user exists on all servers.
        USER_NAME="${USER}"# Deployment server, which can contain native
        HOST_IP=(30.30.xx.7 30.30.xx.8)# Deployment package. The package name starts with OCK_platform_rpc.
        PACKAGES="OCK_platform_rpc_aarch64_EulerOS.tar.gz"# Specifies the path from the SCP package to the server. 
        # If the path does not exist, the path is automatically created.
        PATH_TO_SCP="/home/ock/test"# Opengauss environment variable
        GAUSSHOME="/home/ock/mppdb_temp_install"# OCK_RPC environment variable. Do not change
        OCK_RPC_LIB_PATH="${GAUSSHOME}/lib"
        

        脚本中涉及参数如下:

        1. USER_NAME:DN所在机器用户名。
        2. HOST_IP :集群机器ip,包括本机机器。
        3. PACKAGES: 获取到的ock rpc二进制包名(与机器操作系统架构匹配)。
        4. PATH_TO_SCP: 拷贝路径。
        5. GAUSSHOME: 同openGauss配置的环境变量GAUSSHOME一致。
        6. OCK_RPC_LIB_PATH:ock rpc二进制所在路径,资源池化会通过动态加载方式使用,请务必配置正确。
      3. 执行部署脚本ock_rpc_opengauss.sh。

        sh ock_rpc_opengauss.sh
        

        img 说明: 实现功能:

        • 完成集群中OCK RPC二进制包的部署,解压和拷贝。
        • 配置好相关的环境变量$OCK_RPC_LIB_PATH。
        • 配置集群节点UCX环境变量。(UCX为基于RDMA开发的通信组件,OCK RPC是在UCX基础上开发的适配资源池化的通信组件。)
      4. 配置其他参数环境变量。

        export UCX_ZCOPY_THRESH="32768"
        export UCX_USE_MT_MUTEX=n
        export UCX_NET_DEVICES=mlx5_1:1
        

        参数说明:

        1. UCX_ZCOPY_THRESH优化参数,RDMA传输过程中减少内存申请。单位:byte。默认值:32768。(可选参数,建议默认值)。

        2. UCX_USE_MT_MUTEX优化参数,RDMA发送过程中保证数据一致性锁的类型,n:原子锁;y:互斥锁。(可选参数,建议使用原子锁,性能较好)。

        3. UCX_NET_DEVICES,UCX配置参数,用于指定网卡端口,可安装mlnx_ofed驱动,使用ibdev2netdev命令查看当前RDMA活动端口。(建议指定活动端口)。

          img 说明: 环境变量配置完之后,执行 source ~/.bashrc

    3. 执行1~5完成gs_initdb建库。

    4. 修改postgresql.conf配置文件。

      配置ss_interconnect_type=RDMA,添加配置项ss_rdma_work_config与ss_ock_log_path。参数说明及配置请参见资源池化参数

      示例:

      ss_interconnect_type=RDMA
      ss_rdma_work_config ='6 10'     (OCK RDMA使用用户态poll方式,并绑定cpu [6 10],空格分开)
      ss_ock_log_path=/home/ock_test/log”(OCK RDMA 消息通信过程日志记录)
      
    5. 执行gs_ctl start命令拉取数据库进程。

      gs_ctl start -D /data/ss_test/dn_primary
      

58.7 OCK SCRLock使用示例

SCRLock,全称smart cached remote lock,是一个带有本地锁缓存的分布式锁SDK。本章介绍其安装部署方法。

  • 前置条件

    1. 开启RDMA功能依赖CX5网卡。
    2. 安装libunwind软件包,可从OS对应的镜像中获取
  • 操作步骤

    1. 获取OCK scrlock包。

      从指定openGauss接口人处获取。

    2. 部署OCK scrlock包。

      1. 主机解压OCK scrlock包。

        tar -zxf OCK_scrlock_22.0.0_openEuler-aarch64.tar.gz
        cd OCK_scrlock_22.0.0_openEuler-aarch64_release
        tar -zxf OCK_scrlock_openEuler_aarch64.tar.gz
        cd scrlock_sbin
        
      2. 修改部署脚本scrlock.sh参数。

        # user
        USER_NAME="omm"# ${USER_NAME} group
        USER_GROUP="dbgrp"# slave server
        HOST_IP=(30.30.xx.59 30.30.xx.58)# user mode sdk path
        SCP_TO_PATH="/home/${USER_NAME}/scrlock"# OCK_SCRLOCK environment variable
        OCK_SCRLOCK_LIB_PATH="/home/${USER_NAME}/lib"
        

        脚本中涉及参数如下:

        1. USER_NAME:OS用户名,用户自行配置。
        2. USER_GROUP:OS用户所属组,用户自行配置
        3. HOST_IP :集群备机ip,用户自行配置。
        4. SCP_TO_PATH:用户态软件包放置路径,用户自行配置,需要放在该OS用户有权限访问的路径下。
        5. OCK_SCRLOCK_LIB_PATH:ock scrlock二进制所在路径,DMS会通过动态加载方式使用,请务必配置正确,必须与高斯动态库目录一致,一般是"${GAUSSHOME}/lib"
      3. 执行部署脚本。

        1.执行gs_preinstall(高斯部署脚本)
        2.执行scrlock_preinstall.sh,并根据提示输入root密码
        3.执行gs_install(高斯部署脚本)
        4.以OS用户进入SCP_TO_PATH目录后,执行scrlock_install.sh,执行source ~/.bashrc
        5.重新拉起高斯数据库(cm_ctl stop;cm_ctl start)
        

        img 说明: 实现功能:

        • 完成集群中OCK scrlock二进制包的部署,解压和拷贝。
        • 配置好相关的环境变量$OCK_SCRLOCK_LIB_PATH。
        • gs_preinstall和gs_install为高斯部署脚本,与scrlock安装包无关。需要严格按照上述顺序执行。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

相关文章:

openGauss学习笔记-58 openGauss 高级特性-资源池化

文章目录 openGauss学习笔记-58 openGauss 高级特性-资源池化58.1 特性简介58.2 架构介绍58.3 功能特点58.4 适用场景与限制58.5 手动安装示例58.6 OCK RDMA使用示例58.7 OCK SCRLock使用示例 openGauss学习笔记-58 openGauss 高级特性-资源池化 58.1 特性简介 资源池化特性主…...

centos升级cmake之相关问题解决

1. yum安装(仓库默认版本) # 查看可安装版本 yum --showduplicates list xxxx# 安装指定版本 yum install xxxx-1.23.1 2. 安装高版本cmake 2.1 一开始下载的是cmake-xxx.zip,在 ./bootstrap 一直会报错“missing terminating " character”,后来…...

vcs仿真教程(查看断言)

VCS是在linux下面用来进行仿真看波形的工具,类似于windows下面的modelsim以及questasim等工具,以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 (1)新建文件夹: …...

2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工

2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工...

javaee spring aop 切入点表达式

1、切入点表达式:对指定的方法进行拦截,并且生成代理表达式。 表达式语法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))execution( public void com.test.service.impl.UsersService.add() )2、表达式不同写法 1.匹配指定方法 …...

js 获得元素的offsetLeft

要获得元素相对于其offsetParent元素左侧边缘的距离(即offsetLeft),可以使用如下代码: var el document.getElementById(your-element-id); var offsetLeft el.offsetLeft;其中,el为要获取offsetLeft的元素对象&…...

【Spring面试题】IOC控制反转和DI依赖注入(详解)

IOC Inversion of Control 控制反转,是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方,就是 Spring IoC Container,对于 IoC 来说,最重要的就是容器。 通俗点讲,因为项目…...

LeetCode 2511. 最多可以摧毁的敌人城堡数目

【LetMeFly】2511.最多可以摧毁的敌人城堡数目 力扣题目链接:https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/ 给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡。forts[i] 可以是 -1 &#xff0c…...

bazel远程缓存(Remote Cache)

原理 您可以将服务器设置为构建输出(即这些操作输出)的远程缓存。这些输出由输出文件名列表及其内容的哈希值组成。借助远程缓存,您可以重复使用其他用户的 build 中的构建输出,而不是在本地构建每个新输出。 增量构建极大的提升…...

算法竞赛入门经典习题2-6 排列(permutation)

排列&#xff08;permutation&#xff09;——算法竞赛入门经典_还记得樱花正开~的博客-CSDN博客 上面的代码很厉害&#xff0c;学习...我的代码水平就比较差了... #include <cstdio> #include <set>int main(){for(int i 123; i < 329; i){std::set<int&…...

队列的链表实现 题目(难度1/10)

C数据结构与算法 目录 队列介绍 队列这种容器&#xff0c;就像大家排队上公交车一样。 第一个来到的人排在最前面&#xff1b; 最后来的排在最后面&#xff1b; 第一个先上车&#xff08;离开队列&#xff09;&#xff1b; 队列的接口 队列是有如下接口的容器&#xff1…...

SpringMVC常用的三种获取请求参数的方式

在Spring MVC中&#xff0c;可以使用多种方式来获取请求参数。下面我将介绍常用的几种方式&#xff0c;并提供相关的示例代码。 1. 使用RequestParam注解获取请求参数 RequestParam注解用于从请求中获取指定名称的参数值&#xff0c;并将其绑定到方法参数上。如果请求中没有找…...

2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工

2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工...

数据结构----结构--线性结构--字符串

数据结构----结构–线性结构–字符串 一.字符串的定义方式 第一种&#xff1a; char* str1"Hello"第二种&#xff1a; char str2[]"Hello";区别 1.所在区域不同 //str1在常量区//str2在这里的写法是在栈区2.元素是否可改 //str1中的元素不可改//st…...

数据工厂-生成接口通用用例

章节目录&#xff1a; 一、背景介绍二、前置准备三、设计思路四、代码具体实现五、执行效果六、其他说明七、结束语 一、背景介绍 有哪些用例是可以通用且固定的&#xff1f; 针对之前提到的接口用例设计思路&#xff0c;拆分为三个切入点&#xff1a; 举个例子&#xff1a; {…...

N 字形变换

N 字形变换 题目: 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a;P A H N A P L S I I G Y I R 之后&#xff0c;你的输…...

STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题

记录一个非常蠢的问题&#xff0c;今天在移植rtthread的以太网驱动的时候出现无法获取动态ip的问题&#xff0c;问题如下&#xff1a; 设置为动态ip时不管是连接路由器还是电脑主机都无法ping通&#xff0c;也无法获取dns地址。 设置为静态ip时无法ping通主机。 使用wireshark…...

python编写MQTT订阅程序

Download | Eclipse Mosquitto 1、下载&#xff1a; https://mosquitto.org/files/binary/win64/mosquitto-2.0.17-install-windows-x64.exe 2、安装&#xff1a; 3、conf配置 1)使用notepad打开“C:\Program Files\mosquitto\mosquitto.conf”另存为c:\myapp\msquitto\mo…...

mysql 中 cast 函数用法

在 MySQL 中&#xff0c;CAST() 函数用于将一个表达式转换为指定的数据类型。它可以用于多种场景&#xff0c;例如将字符串转换为数字&#xff0c;或者将日期时间转换为特定格式。 以下是 CAST() 函数的基本语法&#xff1a; CAST(expression AS datatype) 其中&#xff0c…...

MongoDB 的简介

MongoDB 趋势 对于 MongoDB 的认识 Q&A QA什么是 MongoDB&#xff1f; 一个以 JSON 为数据模型的文档数据库一个以 JSON 为数据模型的文档数据库文档来自于“JSON Document”&#xff0c;并非我们一般理解的 PDF&#xff0c;WORD谁开发 MongDB&#xff1f; 上市公司 MongoD…...

是否在业务中使用大语言模型?

ChatGPT取得了巨大的成功&#xff0c;在短短一个月内就获得了1亿用户&#xff0c;并激发了企业和专业人士对如何在他们的组织中利用这一工具的兴趣和好奇心。 但LLM究竟是什么&#xff0c;它们如何使你的企业受益?它只是一种炒作&#xff0c;还是会长期存在? 在这篇文章中我…...

37. 交换字符(第三期模拟笔试)

题目&#xff1a; 给定一个01串&#xff08;仅由字符0和字符1构成的字符串&#xff09;。每次操作可以交换两个相邻的字符。 例如&#xff1a;对于字符串"001110"来说&#xff0c; 可以交换第二个字符0和第三个字符1&#xff0c;交换之后的字符串变成了"0101…...

git 查看当前分支最近一次提交的commit SHA

获取当前分支最近一次commit SHA &#xff08;长度为40个16进制数字的字符&#xff09;命令如下&#xff1a; git rev-parse HEAD 获取简写&#xff08;短&#xff09; commit SHA git rev-parse --short HEAD...

LuatOS 开发指南

NDK 开发 官方教程 官方例程 API 下载软件 下载官方NDK例程压缩包到本地&#xff0c;并解压。可以看到目录如下&#xff1a; doc: 文档教程 env: 编译环境 example: NDK示例 platform: 需要编译的平台&#xff08;air72x/air8xx&#xff09; tools: 其他辅助软件 VSCode 使…...

maven推包The environment variable JAVA_HOME is not correctly set

解决办法&#xff1a; 打开idea查看jdk安装位置 1.在/etc下面创建&#xff08;如果存在就是更新&#xff09;launchd.conf。里面添加一行&#xff1a; setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home #JAVA_HOME后面是我的java安装路径…...

Python VScode 配置

在上一章节中我们已经安装了 Python 的环境&#xff0c;本章节我们将介绍 Python VScode 的配置。 准备工作&#xff1a; 安装 VS Code安装 VS Code Python 扩展安装 Python 3 安装 VS Code VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软…...

【vue2第九章】组件化开发和根组件以及style上的scoped作用

组件化开发和根组件 什么是组件化开发&#xff1f; 一个页面可以拆分为多个组件&#xff0c;每个组件有自己的样式&#xff0c;结构&#xff0c;行为&#xff0c;组件化开发的好处就是&#xff0c;便于维护&#xff0c;利于重复利用&#xff0c;提升开发的效率。 便于维护&…...

从零开始的Hadoop学习(五)| HDFS概述、shell操作、API操作

1. HDFS 概述 1.1 HDFS 产出背景及定义 1&#xff09;HDFS 产生背景 随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;迫切 需要一种系统来管理多台机器上的…...

【spark】序列化和反序列化,transient关键字的使用

序列化 Spark是基于JVM运行的进行&#xff0c;其序列化必然遵守Java的序列化规则。 序列化就是指将一个对象转化为二进制的byte流&#xff08;注意&#xff0c;不是bit流&#xff09;&#xff0c;然后以文件的方式进行保存或通过网络传输&#xff0c;等待被反序列化读取出来。…...

2.4 Vector<T> 动态数组(随机访问迭代器)

C自学精简教程 目录(必读) 该 Vector 版本特点 这里的版本主要是使用模板实现、支持随机访问迭代器&#xff0c;支持std::sort等所有STL算法。(本文对随机迭代器的支持参考了 复旦大学 大一公共基础课C语言的一次作业) 随机访问迭代器的实现主要是继承std::iterator<std:…...

wordpress商城模板下载/输入关键词搜索

分门别类刷算法&#xff0c;坚持&#xff0c;进步&#xff01; 刷题路线参考&#xff1a;https://github.com/chefyuan/algorithm-base https://github.com/youngyangyang04/leetcode-master/ 大家好&#xff0c;我是老三&#xff0c;一个刷题困难户&#xff0c;接下来我们开始…...

php开发系统网站建设/东营seo整站优化

一、工作中因为要使用到Tomcat集群部署&#xff0c;此时就涉及到了Session共享问题&#xff0c;主要有三种解决方案&#xff1a; 1、使用数据库来存储Session 2、使用Cookie来存储Session 3、使用Redis来存储Sesssion 二、本文中主要讲一下第3种方案&#xff0c;也就是使用Redi…...

做网站容易找工作吗/关键词工具有哪些

我们都做过一道题&#xff08;&#xff1f;&#xff09;货币兑换&#xff0c;是用cdq分治来解决不单调的斜率优化 现在它放到了树上.. 总之先写下来dp方程&#xff0c;$f[i]min\{f[j](dis[i]-dis[j])*p[i]q[i]\} ,j是i的祖先,dis[i]-dis[j]<l[i]$ &#xff0c;其中dis[i]表示…...

长沙便宜做网站/2023年10月疫情还会严重吗

在百度与机器之心联合举办的【三小时AI开发进阶】系列公开课中&#xff0c;百度资深研发工程师倾囊相授&#xff0c;首节课关注视觉模型开发难点&#xff1a;解析小目标检测的技术原理并带来现场实战演示&#xff0c;让我们一文快速回顾本节课的核心干货&#xff01; 【课程主…...

巴中做网站 微信开发/h5制作

文档介绍&#xff1a;网络系统管理与维护综合实训课程实训报告学生学号:65学生姓名:徐广成2013年12月实训1网络用户与资源管理实训目的实现网络用户与资源管理实训内容某企业有两个业务部门:市场部和技术部。要求:1.两部门需要实现部门文件资源的相互访问,但本部门不得修改其他…...

wordpress 最新版/seo的中文含义是

今天研究了个开源项目&#xff0c;数据库是mysql的&#xff0c;其中的脚本数据需要备份&#xff0c;由于本人的机器时mac pro&#xff0c;而且mac下的数据库连接工具都不怎么好用&#xff0c;就想着如何利用windows下的数据库连接工具使用&#xff0c;并做相关备份&#xff0c;…...