GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通
文章目录
- 前言
- 一、关于数据仓库需求场景分类
- 二、数据仓库线下部署场景
- 2.1、线下部署场景介绍及优劣势说明
- 2.2、线下部署场景对应的客户需求
- 三、数据仓库公有云部署场景
- 3.1、公有云部署场景介绍及优劣势说明
- 3.2、公有云部署场景对应的客户需求
- 四、为何重视数据共享(含湖仓一体)?
- 4.1、传统数据共享业务场景
- 4.2、数据共享(含湖仓一体)能力解决掉的问题
- 五、数据仓库技术架构演进
- 5.1、Shared Storage 架构
- 5.2、Shared Nothing 架构
- 5.3、存算分离架构
- 六、GaussDB(DWS)演进历程
- 七、DWS 云原生架构技术解析
- 7.1、极致弹性、数据共享、高灵活度、高性价比
- 7.2、按需弹性实践适应灵活多变的业务需求
- 7.3、湖仓一体,与大数据互联互通
- 7.4、数据生产线与 AI 生产线的高效配合
- 7.5、灵活可配的性能优化选择
- 7.6、提供按需权衡、灵活可配的缓存
- 7.7、深度优化存算分离架构
- 总结
前言
云计算时代,数仓能为我们带来哪些便利?GaussDB(DWS)即将发布的云原生数仓如何构筑新一代数据仓库的技术底座,在云原生数仓的地基之上,数据时代的产业又将如何扩张、拓展?在本文中我们将带您解密华为云新一代云数仓 GaussDB(DWS) 3.0 的核心技术与划时代意义。一、关于数据仓库需求场景分类
数据仓库是一个用于存储大量结构化和非结构化数据的集中式数据存储区域。它旨在帮助组织更好地理解其数据并支持决策制定过程。数据仓库通常由多个数据源提供数据,并使用 ETL(提取,转换,加载)过程将这些数据集成到一个单独的位置中。数据仓库通常用于支持商业分析、数据挖掘、业务智能和决策制定。
数据仓库的重要性在于它提供了一种将数据从各种来源集成到单个位置的方法。这使得对整个组织的数据进行分析和报告变得更加容易。数据仓库还可以帮助组织更好地了解其数据模型,从而更好地规划未来的IT项目。使用数据仓库可以提高组织的数据质量、数据集成能力和数据分析能力,从而提高组织的效率和决策质量。
我们将数据仓库需求场景分为两类,分别是线下部署场景和公有云场景。
二、数据仓库线下部署场景
2.1、线下部署场景介绍及优劣势说明
数据仓库的线下部署场景是指将数据仓库部署在本地服务器或数据中心的情况。适用于需要访问敏感数据或需要高度定制化的企业系统。
- 优势:线下部署可以提供更高的安全性和数据隐私保护,因为数据不需要通过互联网传输,而是在公司的内部网络中处理。
- 劣势:通常需要专业的 IT 团队来管理和维护服务器、网络和软件,以确保数据仓库正常运行并满足业务需求。
2.2、线下部署场景对应的客户需求
线下部署场景客户需求,主要集中在以下几点:
- 稳定、隔离。如在金融行业中第一要求就是系统是稳定的,并且负载之间具有比较好的隔离能力,系统之间的影响是比较小的。
- 数据共享(含湖仓一体)。
- 弹性。
三、数据仓库公有云部署场景
3.1、公有云部署场景介绍及优劣势说明
数据仓库需求场景的公有云场景是指将数据仓库部署在公有云中的场景。其中,公有云指的是由第三方服务商提供的云计算基础设施,例如亚马逊云服务(AWS)、微软云服务(Azure)、谷歌云平台(GCP)等。
公有云部署场景具备的优势集中在以下几点:
- 弹性伸缩:公有云提供强大的弹性伸缩能力,可以根据实际需求灵活扩充或缩减计算和存储资源,而无需担心硬件设备和系统软件的更新维护问题。
- 高可用性:公有云提供多区域部署,可以做到容灾和数据备份,保证数据的高可用性。
- 管理简单:公有云提供了全套的云端管理服务,包括监控、日志、备份、自动化部署等。这些服务可以降低数据仓库运维的复杂性,提高数据仓库运行效率和稳定性。
- 降低成本:公有云采用按需计费的模式,能够根据实际使用情况灵活调整资源,降低了企业的成本。
公有云部署场景面临的劣势集中在以下几点:
- 安全性问题:部分企业存在数据安全和隐私保护的顾虑,担心采用公有云会导致数据被泄露和攻击等问题。因此,需要严格的数据安全策略和监测手段。
- 可控性问题:公有云中数据仓库的运行状态和系统配置等由云服务商托管,企业并不能完全掌控,因此需要与云服务商进行密切合作。
- 稳定性问题:公有云的稳定性和服务质量会受到云服务商的影响,如果云服务商的服务出现问题,可能会导致数据仓库的运行受到影响。
- 依赖互联网:公有云场景需要依赖互联网,如果网络不稳定或有意外中断,可能会影响数据仓库的使用和管理。
3.2、公有云部署场景对应的客户需求
公有云部署场景客户需求,主要集中在以下几点:
- 成本。客户希望成本能够随着业务曲线变化也能动态变化,负载低的时候成本能够降下来,负载高的时候,成本可以做相应的提升,成本能够跟业务量有正比的关系,而不是固定成本,具体如下图所示:
- 灵活、实时弹性。对弹性的要求更加实时,收到系统告警之后能够马上对服务的吞吐或并发做弹性扩容。
- 数据共享(含湖仓一体)。很多客户在建设数据处理技术站的时候会和大数据一起建设,大数据作为数据旅程的一部分,在不同的处理环节使用的是不同组件,既有湖仓一体的诉求,也有本身数仓的数据共享诉求。
四、为何重视数据共享(含湖仓一体)?
4.1、传统数据共享业务场景
业务场景:客户搭建一套系统,上面跑一个业务 1,里面有一些数据。现在客户需要新上一个业务 2,传统做法就是把这个新作业加到这个原来系统 A 上,但是原来这个系统可能撑不住,原因可能是并发数、吞吐,或者其他原因。这个时候我们需要对系统做扩容,但是仅扩容单个集群,节点到一个规模的时候线性比的提升并不明显,尤其是并发很高的时候,单纯的增加节点并不能够很好的解决问题。
传统措施:这个时候我们需要搭建一个系统,用一个新系统服务新业务,新业务可能要访问业务 1 数据,就会把业务 1 的数据复制一份放到这个数据 2,类似于读写分离,但是这样的话会造成以下问题:
- 系统扩展性弱,通过数据 copy 实现数据共享。
- 系统间存在大量的数据冗余,甚至不一致。
- 系统间存在大量的数据传递。
4.2、数据共享(含湖仓一体)能力解决掉的问题
为了规避掉上述问题,我们采用数据共享(含湖仓一体)能力,其具备的优势有以下几点:
- 一份数据支持不同业务访问,数据零 copy。快速、敏捷支持新业务上线。
- 业务之间具备良好的隔离能力,性能稳定。
不同的场景对需求的优先级是不一样的,我们数仓要考虑在面对这两类不同的场景的时候,怎么用一套数仓的价格去解决这个问题,这是在需求场景上我们看到的一些变化。
五、数据仓库技术架构演进
5.1、Shared Storage 架构
早期的数仓,就挂了一个共享存储,我们称其为 Shared Storage。
特点:共享存储和状态,计算节点像访问单机一样访问最新的全局数据。
优点:无需数据分片,无需分布式 plan 执行,对业务透明。
缺点:
- 计算节点需要引入协调机制(cache 同步),保证数据的一致性,扩展性有上限。
- 单个 SQL 无法利用所有计算节点的扩展能力
5.2、Shared Nothing 架构
后面又出了这种 Shared Nothing 架构,像 GaussDB 十几年前刚开始做的时候,也是这么一个架构。
特点:一种分布式计算架构,CPU、内存、磁盘等资源都是私有的,整个系统中不存在共享资源,每个节点只处理自己分片的数据,没有单点的竞争。
优点:扩展性好。
缺点:
- 计算存储耦合,需要同时扩容,不够灵活。
- 扩容需要较长的数据重分布时间。
5.3、存算分离架构
特点:存储类似 Shared Storage,计算类似 Shared Nothing,每个节点只处理自己分片的数据。
优点:
- 计算存储分层扩展,计算节点扩容无需数据重分布,速度快,灵活;存储节点按需扩容,无限容量。
- 计算节点之间无需协调机制,只需保证计算节点只处理自己分片的数据。
六、GaussDB(DWS)演进历程
我们先回顾一下 DWS 演进历程,具体如下图所示:
GaussDB(DWS)在十年前就开始在做了,当时是针对于线下的这种场景,采用的就是 Shared Nothing 架构,在14年之前主要是做数仓里面比较通用的技术,包括分布式的执行、现代化引擎、列存储机制,后面开始在大行里面做连创,就遇到了更多的产品化的需求,包括这种大集群的通信、负载管理以及怎么跟用户这种大数据的生态做互通等等,再到后面随着市场的推广越来越多,就有更多产品化诉求和企业级特性诉求。在 2020 年的时候开始做 DWS,内部叫 3.0 版本,主要就是一个云原生数仓,也是我们本文将要给大家分享的内容。
七、DWS 云原生架构技术解析
7.1、极致弹性、数据共享、高灵活度、高性价比
三层解耦:
- 管理层,计算层,存储层独立灵活伸缩。
- 计算资源以逻辑集群方式组织。
灵活弹性:
- 分钟级单逻辑集群扩缩容。
- 分钟级快速创建销毁逻辑集群。
- 快速扩缩容,无数据重分布、拷贝。
一数多用:
- 任意逻辑集群均可承载读写负载。
- 多逻辑集群间共享数据,无需拷贝。
- 提供跨逻辑集群建的同时和近实时两种数据共享方式。
按需配置:
- 逻辑集群隔离不同业务。
- 业务承载量/并发量的线性扩展。
- 读写分离、不同负载隔离。
7.2、按需弹性实践适应灵活多变的业务需求
我们把弹性需求可以分成两大类:一类就是较长周期,随着公司业务的增长逐渐增加的;另外一种是短周期的,可能每天都在变,或者是每天的同时间点的业务负载都不一样,像对于这种比较稍微长周期或者稳态一点的业务,可以用这种在单位 vw 内增加计算资源的方式去来承载。
7.3、湖仓一体,与大数据互联互通
在湖仓一体上进一步增强体验,使用大数据的生态更加简单、维护代价更低,体验横向融合分析。
传统的维护,当外表的数量是一张、两张的时候还比较好维护,当外表有有成千上万张的时候就比较麻烦,你首先要把这些外表都创建出来,其次如果大数据这边把表的结构改了,不管是改了字段的类型或者是新加了字段,外表都需要做同步的维护,维护的代价就会高,而新的湖仓一体就完美解决掉了这个问题。
无缝访问数据湖:
- 对接 Hive Metastore 元数据管理,直接访问数据湖的数据表定义。
- 支持主要数据格式:ORC、Parquet、Hudi、Carbon。
融合查询:
- 混合查询数据湖和仓内的任意数据。
- 查询一步到位输出到仓内/数据湖,无需额外数据中转拷贝。
极致查询性能:
- 使用数仓高质量的查询计划和高效的执行引擎。
- 使用数仓的负载管理手段,精准控制。
7.4、数据生产线与 AI 生产线的高效配合
AI 有自己的一套系统,即 ModelArts,数据是 DWS,AI 如何访问到 DWS 的数据,DWS 又该如何利用 ModelArts 的模型?主要就是解决这两个问题。数据共享我们可以把数据都放到 obs上去,用开放的格式,这样数据共享的问题就比较好解决;在 AI 模型这方面,我们通过在 DWS 里面写 SQL的形式去使用 ModelArts 的 AI 能力。
数据生产线→AI 生产线:无缝数据通路
- 面向批量生产:通过 OBS 共享开放格式数据。
- 面向快速开发:通过 ConnectorX 等以查询取数的方式嵌入 Python 开发生态,重点是 Pandas。
AI 生产线→数据生产线: AI for Data
- 提供 SQL 语法,在数据分析过程中提供驱动 AI 训练、应用 AI 推理的能力。
- 将推理能力引入分析:直接调用部署的推理服务端点,灵活性好;将模型二进制部署为 UDF,性能好。
7.5、灵活可配的性能优化选择
在性能方面,存算分离之后关心的就是计算存储,保证性能主要的手段有冷热分区高效缓存、近数据计算和大带宽云存储三个方面,我们来看下图这个效果是非常显著的。
7.6、提供按需权衡、灵活可配的缓存
系统会把 obs 上的数据缓存到本地,解决很多性能的问题,缓存现在支持大小可配,想获得更好的性能可以多买一点本地缓存,如果对这个性能没有太高诉求,可以少买,成本完全由自己决定。
无缝配合缓存:
- 热数据优先缓存,使用本地的算子下推能力。
- 冷数据优先下推,使用云存储的近数据计算资源池。
近数据计算:
- 将数据下推到云存储,显著降低数据读取量。
7.7、深度优化存算分离架构
计算和存储分离之后,这种时延天然存在,物理上是不可避免的,在这种时延下,如果不做任何优化,性能肯定会下降,所以在这里做了一个通过并发来换取带宽的手段,虽然单线程作 IO,延迟变高,但是可以开更高的并发的,来把 obs 带宽打满。
- 更低时延:充分利用云存储的带宽优势,弥补其相较传统 MPP 的高延迟劣势。
- 更优资源调度:单查询充分利用资源,为并发查询提供稳定、可预测的性能保证。
- 更灵活配置:多级资源池灵活配置。
总结
传统数据仓库常常需要企业投入大量人力、物力和财力进行维护和升级等工作,这不仅耗时耗力,而且容易带来安全和风险问题。GaussDB (DWS) 云原生数仓利用云计算、自动化和管理工具等技术,可以降低企业的成本和风险,同时提升数据仓库的质量和效率。数字化转型是企业发展的必由之路,而数据仓库是数字化转型的重要基础设施。GaussDB (DWS) 云原生数仓的发展将为企业提供更全面、更优质、更高效的数据处理和分析能力,有助于企业更快速地实现数字化转型,更好地应对市场变化和竞争挑战。我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!
相关文章:
GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通
文章目录 前言一、关于数据仓库需求场景分类二、数据仓库线下部署场景2.1、线下部署场景介绍及优劣势说明2.2、线下部署场景对应的客户需求 三、数据仓库公有云部署场景3.1、公有云部署场景介绍及优劣势说明3.2、公有云部署场景对应的客户需求 四、为何重视数据共享(…...
Navicat历史版本下载及地址组成分析
下载地址组成 https://download3.navicat.com/download/navicat161_premium_cs_x64.exe 地址逻辑:前缀 版本 类型 语言 位数 前缀: http://download.navicat.com/download/navicat版本: 三位数,前两位是大版本,后一位是小版本ÿ…...
avue之动态切换表格样式问题
动态切换 a\b 两个表格 ,a表格高度变成b的高度等问题, 解决方案:...
彻底解决ruoyi分页后总数错误的问题
问题描述 最近时不时的发现用户列表出来的数据只有24条,但是总记录数却有58条,很奇怪。各种百度查询,都是什么修改查询分页改代码,尝试后发现还是没有效果,经过各种验证发现就是SQL语句错误。 如果非要说是SQL语句没…...
SpringMVC学习笔记——1
SpringMVC学习笔记——1 一、SpringMVC简介1.1、SpringMVC概述1.2、SpringMVC快速入门1.3、Controller中访问容器中的Bean1.4、SpringMVC关键组件的浅析 二、SpringMVC的请求处理2.1、请求映射路径配置2.2、请求数据的接收2.2.1、键值对方式接收数据2.2.2、封装JavaBean数据2.2…...
20230908_python练习_selenium模块爬取网页小说练习
霍比特人小说爬取,使用 selenium 模块调用谷歌浏览器,无界面模式爬取小说网站信息,将数据按照每次2000字符在mysql中保存。 # https://www.shukuai9.com/b/324694/ # 导入需要的库 from selenium import webdriver # 导入Keys模块ÿ…...
Python:安装Flask web框架hello world示例
安装easy_install pip install distribute 安装pip easy_install pip 安装 virtualenv pip install virtualenv 激活Flask pip install Flask 创建web页面demo.py from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello World! 2023if _…...
深度解析NLP文本摘要技术:定义、应用与PyTorch实战
目录 1. 概述1.1 什么是文本摘要?1.2 为什么需要文本摘要? 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 多文档摘要3.3 信息性摘要 vs. 背景摘要3.4 实时摘要 4. 主要类型4.1 抽取…...
zabbix监控多实例redis
Zabbix监控多实例Redis 软件名称软件版本Zabbix Server6.0.17Zabbix Agent5.4.1Redis6.2.10 Zabbix客户端配置 编辑自动发现脚本 vim /usr/local/zabbix/scripts/redis_discovery.sh #!/bin/bash #Fucation:redis low-level discovery #Script_name redis_discovery.sh red…...
win11将visual studio 2022的调试控制台改为windows terminal
一、前言 默认的调试控制台太丑了,字体也没有好看的,还是更喜欢windows terminal 二、修改 2.1 修改之前 2.2 修改步骤 打开windows terminal点这个向下的标志 选择settings按照下图1, 2, 3步骤依次操作即可 2.3 修改之后 总结 漂亮很多了...
社区问答精选——长安链开发知多少?(8月)
本文是根据社群内开发者较为关注的问题进行整理,希望可以帮助开发者解决所遇到的问题。有更多问答在社区issue中描述更为细致,开发者提问前可以先按照关键词进行搜索。欢迎各位开发者按照问答template提交issue,也欢迎有意愿的开发者参与到社…...
神经网络-Unet网络
文章目录 前言1.seq2seq 编码后解码2. 网络结构3.特征融合4. 前言 Unet用来做小目标语义分割。 优点:网络结构非常简单。 大纲目录 2016年特别火,在细胞领域做分割特别好。 1.seq2seq 编码后解码 2. 网络结构 几个卷积层,越来越扁&#x…...
Java | 多线程综合练习
不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴前言🌴一、卖电影票1.题目2.分析3.代码 🌴二、送礼物1. 题目2. 分析3.代码 🌴三.打印奇数1. 题目2.…...
Kotlin变量与控制条件的基本用法
一、变量与控制条件 1、var与val var:可修改变量 val:只读变量,只读变量并非绝对只读。 编译时常量只能在函数之外定义,因为函数内常量是在运行时赋值,编译时常量要在变量赋值前存在。并且值是无法修改的。 const…...
第18章_瑞萨MCU零基础入门系列教程之GPT
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
openssl websockets
1. HTTPS通信的C实现 - 知乎 GitHub - Bwar/Nebula: Nebula is a powerful framwork for building highly concurrent, distributed, and resilient message-driven applications for C....
Vue 组件的单元测试
1、基本的示例 单元测试是软件开发非常基础的一部分。单元测试会封闭执行最小化单元的代码,使得添加新功能和追踪问题更容易。Vue 的单文件组件使得为组件撰写隔离的单元测试这件事更加直接。它会让你更有信心地开发新特性而不破坏现有的实现,并帮助其他…...
海底两万里的思维导图,轻松了解整体的内容
《海底两万里》是一部经典的科幻小说。小说以其丰富的想象力和对海底世界的描绘而闻名于世。今天我们就用思维导图的分支介绍这个作品到底讲了什么。(思维导图示例:迅捷画板) 《海底两万里》是“凡尔纳三部曲”中的第二部(其它两部…...
ZABBIX 6.4官方安装文档
一、官网地址 Zabbix:企业级开源监控解决方案 二、下载 1.选择您Zabbix服务器的平台 2. Install and configure Zabbix for your platform a. Install Zabbix repository # rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8…...
本地MQTT服务器搭建(EMQX)
一、下载EMQX 下载地址:EMQ (emqx.com) 打开官网后,选择右边的免费试用按钮 然后单击EMQX Enterprise标签,然后选择下面的EMQX开源版,选择开源版的系统平台为Windows,单击免费下载。 在新页面下单击立即下载 二、安装…...
Docker启动pandora并指定ACCESS TOKEN
把chatGPT_ACCESS_TOKEN改成你的ACCESS_TOKEN 《chatGPT ACCESS TOKEN获取地址(需要魔法)》 docker run -d -m 512m -p 88:88 --privilegedtrue -e PANDORA_SERVER0.0.0.0:88 -e PANDORA_ACCESS_TOKENchatGPT_ACCESS_TOKEN --name pandora pengzhile/pa…...
Python + Jmeter 实现自动化性能压测
Step01: Python脚本开发 文件路径:D://wl//testproject//Fone-grpc//project1//test_client.py Python 脚本作用: 通过 grpc 调用底层 c 的接口,做数据库的数据插入与查询操作,然后将返回的结果进行拼接与输出。 2.代码里面将…...
【Linux进行时】进程状态
进程状态: ❓假设我们在上课,在B站上上课,请问我们的B站是不是一直运行呢?💡不是的! ❓假设我们同时打开了B站和PDF阅读器时,是怎么运行的呢? 💡每一个进程在CPU跑一会&a…...
HarmonyOS开发环境搭建
一 鸿蒙简介: 1.1 HarmonyOS是华为自研的一款分布式操作系统,兼容Android,但又区别Android,不仅仅定位于手机系统。更侧重于万物物联和智能终端,目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS,…...
友思特新闻|友思特与IDS深化战略合作伙伴关系
尊敬的客户和合作伙伴, 我们非常高兴地宣布,友思特已经与国际领先的机器视觉解决方案提供商 IDS 深化了我们的合作关系。 作为 IDS 的长期合作伙伴,友思特一直致力于为国内客户提供最先进的机器视觉技术和解决方案。 自从友思特与 IDS 合作…...
ARM Linux DIY(十三)Qt5 移植
前言 板子带有屏幕,那当然要设计一下 GUI,对 Qt5 比较熟悉,那就移植它吧。 移植 Qt5 buildroot 使能 Qt5,这里我们只开启核心功能 gui module --> widgets module 编译 $ make ODIY_V3S/ qt5base编译报错:找不…...
二,手机硬件参数介绍和校验算法
系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…...
ubunutu20/18/22 编译android 5相关的问题汇总-千里马framework开源代码平板编译过程
hi,粉丝朋友们: 闲鱼50块钱淘到了一个开源平板,注意这个平板是有源码的,可以进行相关的编译修改。哈哈哈,马哥这边就体验了一下50块钱平板是否可以拿来做framework呢? 哈哈,说好就开干了&#x…...
tauri vue vite
准备 rust 根据 https://www.rust-lang.org/tools/install,安装 rust 执行 cargo --version 检查安装是否完成nodejs 安装 nodejstauri cargo install create-tauri-app --lockedcargo create-tauri-app 选择: ✔ Project name tauri-app ✔ Choose wh…...
名词解析与经验分享(前端)
目录 1.什么是sass产品 2.下面我想说说事件循环 3. cmd窗口的一些快捷键 4. 组件与插件的区别 5. vue项目嵌入app后调用app方法 6.点击编辑按钮直接回到顶部,输入框光标闪动聚焦 7.短轮询与长轮询 短轮询 长轮询 8.前端moment库 9.移动端-触底刷新实现核心…...
律师事务所网站设计/营销型网站建设价格
Python 近两年一直霸占编程语言排行榜 Top3,火热程度有目共睹。这也让刚入行的程序员,甚至 BATJ 的技术大牛,都意识到 Python 对于一个程序员职业发展的重要性,将其作为第一/第二开发语言去学习。虽然 Python 以简单易学著称&…...
中国建设基础设施公司网站/郑州网站优化培训
红黑树特性 每个节点或者是黑色,或者是红色。根节点是黑色。每个叶子节点(NIL)是黑色。 (注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点)如果一个节点是红色的,则它的子节点必须…...
网站建设的机构/百度识图扫一扫
问题描述:在引用百分比布局AutoLayout无显示报Failed to load Appcompat Actionbar with unknown error 如下图 加载带有未知错误的AppCompat ActionBar失败。一路小找,发现这布局与原标题冲突(同事引用时没这冲突,不知道其他人有…...
政法委网站建设背景/全球搜是什么公司
selenium from selenium.webdriver import Chrome# 创建浏览器对象 b Chrome() # 打开网页 b.get(https://cd.zu.ke.com/zufang/pg2/#contentList) # 获取网页源代码 print(b.page_source)控制翻页 找到多页规律利用循环获取多页内容 from selenium.webdriver import Chrom…...
云虚拟主机 wordpress/郑州seo优化阿亮
转载自: 用 jQuery 和 Bootstrap 在 WordPress 中添加进度条 - 丘壑博客bestscreenshot.com需求昨天整理了一下Genesis的系列教程的翻译进度,汇总成了一个页面 神级 WordPress 主题框架 Genesis 从入门到精通 。 今天突然想放一个进度条,可…...
苹果手机怎么做ppt下载网站/网络营销大赛策划书
jQuery UI 设计主题文件结构主题是以特定的方式来增加他们的易用性。通常,文件目录结构如下所示:themename/ – 您的主题必须完全包含在一个单独的以主题名称命名的文件夹内。themename/themename.css – 这是基本的 CSS 文件。无论使用了哪个插件&#…...