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

美团买菜基于 Flink 的实时数仓建设

美团买菜基于 Flink 的实时数仓建设

  • 1. 背景介绍
  • 2. 技术愿景和架构设计
  • 3. 典型场景、挑战与应对
    • 3.1 动态 ETA 实时特征
    • 3.2 实时数据经营分析
  • 4. 未来规划


1. 背景介绍

在这里插入图片描述
美团买菜是美团自营生鲜零售平台,上面所有的商品都由美团亲自采购,并通过供应链物流体系,运输到距离用户 3km 范围内的服务站。用户从美团买菜平台下单后,商品会从服务站送到用户手中,最快 30 分钟内。

上图中,左侧的时间轴展示了美团买菜的发展历程,右侧展示了美团买菜丰富的商品。目前,美团买菜在北上广深、武汉等城市均有业务覆盖,为人们日常的生活提供便利。在疫情场景下,起到了非常重要的保障民生作用。
在这里插入图片描述
接下来,介绍一下实时数仓场景。美团买菜的实时数仓场景分为三个部分。

  • 第一个应用场景,数据分析部分。其主要用户是业务管理层、数据分析师、数据运营人员等等。他们通过数据大盘、数据看板等形式,获取数据指标,用于企业经营、运营、活动决策。
  • 第二个应用场景,业务监控部分。其主要用户是大仓物流服务站的一线管理人员和总部的运营中台。他们会对线下作业情况进行异常监控,及时了解并处理线下业务的异动。
  • 第三个应用场景,实时特征部分。其主要面向算法模型的实时特征,例如供应链场景的销量预测、履约场景的动态 ETA、用户的搜索排序推荐等等。

2. 技术愿景和架构设计

在这里插入图片描述
技术愿景和架构设计。实时数仓的技术愿景是在新零售场景下,建设质量可靠、运行稳定、覆盖核心链路环节的实时数据体系。这里着重强调质量可靠、运行稳定、覆盖核心链路环节。

美团买菜所处的新零售行业,是一个薄毛利率赛道,对数据准确性的要求较高。由于买菜业务的正常运转,对数据有着强依赖,所以要求数据必须运行稳定。与此同时,美团买菜是自营的全链条业务,业务的链条环节较多,我们希望能够覆盖核心的链路环节。
在这里插入图片描述
基于上述的技术愿景,我们着重建设了质量保障体系、稳定性保障体系。这两个体系的主要目的是,提升实时数仓基线能力,让数据稳定生产,质量可信赖。希望质量保障体系、稳定性保障体系能够成为实时数仓的基石,建设好实时数仓的基本功。
在这里插入图片描述
在做好实时数仓基本功的基础上,我们希望数据发挥它的最大价值。根据 DIKM 模型,从数据到信息,信息到知识,知识到智慧,价值会被不断放大。基于 DIKM 模型的理论指导,我们建立了全域数据中心、统一资产管理中心。

其中,全域数据中心会有效组织原始事实和原始数据,让数据转换成信息。统一资产管理中心对信息加以提炼,提升洞察力、创造力,帮助信息更好的转换成知识、智慧。
在这里插入图片描述
接下来,介绍一下实时数仓的整体架构。如上图所示,底层模块是数据平台部分,包含了数据的同步、加工、质量检测、管理权限、数据治理等环节设计的数据工具链。
在数据平台工具模块之上是全域数据中心、质量保障体系、稳定性保障体系三个模块。其中,全域数据中心是基于数据源 ODS 层建设的数据仓库。在数据源 ODS 层,当前主要包含买菜业务数据、美团公共数据、灵犀流量数据、外部数据四个部分。

数据仓库主要有 DWD 层、DWS 层、APP 层和一致性的 DIM 层组成。其中,DWD 层主要还原业务的数据加工过程,包含清洗、转换、过滤。原子指标的加工会在 DWD 层进行收口。

DWS 层是面向分析场景建设的,主要的建模方式是维度建模。在 DWS 层常见的数据加工过程包含多个业务主题的数据关联,数据力度上的轻度汇总,衍生指标的加工。

APP 层主要面向应用场景建设宽表模型,其目的是更好地满足应用场景的个性化需求,提升数据应用的效率和体验。

质量保障体系主要包含流程规范、质量监控、问题处理、持续改进四个部分,形成了一个闭环的管理系统。稳定性保障体系从预防、发现、处理、规范四个角度建设。

统一资产管理中心基于全域数据管理中心质量保障体系、稳定性保障体系,其建设基础是元数据管理。元数据包含指标、维度、实时流、画像标签、实时特征、数据大盘、数据接口等等。

基于原数据之上是资产全景、资产应用、资产优化三个部分。资产全景将数据资产,通过分类检索的形式展示出来。数据应用部分包含了应用的管理、应用的血缘。资产优化部分包含模型优化、接口优化。

3. 典型场景、挑战与应对

3.1 动态 ETA 实时特征

在这里插入图片描述
实时数仓典型场景下的挑战和应对方法。首先,介绍一下动态 ETA 实时特征场景。
如上图所示,展示了用户在美团买菜下单的页面情况。页面中显示的预计送达时间,涉及到了动态 ETA。动态 ETA 是动态的承诺送达时间。经过研究发现,承诺用户送达时间不准,会影响用户的下单意愿。与此同时,当订单预计送达时间和实际送达时间差异变大后,客诉率及取消率均有明显攀升。

动态 ETA 的实现依赖算法模型预估履约时效。算法模型预估履约时效需要用到天气特征、用户下单商品特征、服务站内作业实时特征、配送实时特征。
在这里插入图片描述
动态 ETA 算法模型需要的实时特征数量非常多。算法特征生产链路比较复杂,任何一个实质特征的缺失,都会影响到算法模型的准确性,从而直接影响 C 端用户。因此实时特征数据稳定性要求 3 个 9 以上。
在这里插入图片描述
那么什么是 3 个 9 的稳定性呢?提升稳定性的本质,是提高系统的可用性。系统的可用性等于,平均无故障时间除以,平均无故障时间+平均故障修复时间。想要实现 3 个 9 的稳定性,要求平均每天故障时间少于 1.44 分钟。
在这里插入图片描述
接下来,讲一讲提升数据稳定性的方式。提升数据稳定性需要提升可用性。提升可用性的本质是,降低不确定性带来的风险。降低不确定性带来的风险包含发现问题、解决问题两个部分。

在发现问题方面,需要思考如何识别风险。在实时特征的生产中,我们会通过容量预估、性能压测、容灾演练、全链路监控,实时对账的方式,更好的识别风险。
在解决问题方面,需要思考如何应对风险。一些常见应对风险的方式包含存储计算、双链路备份、实时特征、易购存储、降级预案、故障处理 SOP、事故复盘、完善工具和规范等。
在这里插入图片描述
上图展示了,在故障发生的不同阶段,对稳定性的影响。事前阶段发生故障,对稳定性的影响最小。所以实时特征场景稳定性建设的关键策略是,尽可能在故障发生之前发现问题、解决问题。
在这里插入图片描述
稳定性保障体系全景。稳定性保障体系全景包含预防、发现、处理、规范四个部分。其中,预防部分主要包括异构存储、双链路备份、性能压测、容量预估、容灾演练、特征分级等等。

异构存储是指,Doris 和 ES 作为应用层的存储引擎。双链路备份是指,存储和计算,多机房部署两条数据生产链路。这两条数据生产链路互为储备,任何一条链路出现问题,都可以快速切换到另一条链路,从而保障数据的持续生产。在性能压测部分,主要通过数据回放和流量控制实现。容量预估是指 Flink 的并发数和内存配置。
在发现部分,我们除了在硬件、组件、服务层建立完善的监控体系,还针对数据场景的常见风险、异常情况,着重建设了 ETL 任务监控、端到端数据延迟监控、实时离线 t+1 对账。在风险处理部分,我们主要通过故障处理、兜底策略、降低预案来实现。

在预防、发现、处理三个部分的经验,通过规范的形式进行沉淀。规范部分主要包含事故的复盘规范、技术方案 review 规范、代码 review 机制、上线发布流程规范、巡检机制、值班制度。
在这里插入图片描述
下面重点介绍一下性能压测部分。如上图所示,我们通过环境隔离的方式,建立了线上和测试两条完整的数据链路。

在测试链路中,我们通过回拨 Kafka Offset,得到了非常大的数据流量。然后,通过流量控制模块得到需要的测试流量,从而实现按需构建压测流量。最后,我们通过记录不同流量下的链路性能,得到了需要的性能压测结果。
在这里插入图片描述
上图展示了性能压测结果的评估指标体系,其中包含了过程指标和结果指标。主要指标有任务配置、机器状态、Source QPS、Sink QPS、瓶颈算子 QPS、最大可支撑流量倍数 N、端到端耗时。

3.2 实时数据经营分析

在这里插入图片描述
实时数据经营分析场景。美团买菜业务经常举行营销活动,提升用户的活跃度。在营销大促场景下,运营人员需要实时了解业务的经营状态,并制定运营策略。

与此同时,买菜业务受工作日、非工作日、节假日因素的影响,数据指标波动较大。单纯看指标的大小,很难判断指标的好坏,往往需要结合周同比、年同比进行辅助判断。在近几年的疫情场景下,买菜业务经常出现抢单模式,流量短时间内暴涨。
在这里插入图片描述
美团买菜面临的挑战。一方面,数据质量要求十分严苛。实时和离线数据差异不超过万分之三,端到端的数据差异不超过万分之一。在百万 QPS 流量下,需要保障无数据延迟。

另一方面,数据架构本身复杂度高。在实时、离线两条生产链路下,Flink 只支持计算引擎内的 exactly-once。
在这里插入图片描述
在上述情况下,数据质量的保障面临了很大挑战。数据质量是指,数据的一组满足固有特性(质量维度)要求的程度。

上图中,左边展示了数据质量问题。数据不同程度缺失,数据集成流程中的数据不等价,在数据需求期限内未获取最新数据,数据与目标特征值之间的差异程度、数据标识不唯一。

由于这些数据质量问题可以通过对应的指标来衡量,所以我们用数据完整性、数据一致性、数据及时性、数据准确性、数据唯一性,来衡量数据质量的好坏。
在这里插入图片描述
数据质量保障体系的建设思路是基于闭环管理,事前通过流程规范,减少质量问题的发生。事中通过数据质量监控系统,发现问题并处理问题。事后通过复盘的形式,将遇到的问题总结提炼,持续对流程规范进行改进。由此可见,事前、事中、事后组成了完整的闭环。
在这里插入图片描述
在数据保障体系的推进策略上,我们整体上分为三个阶段。

  • 第一阶段,提广度。我们建立了从需求分析、技术设计、数据模型开发、数据测试数据上线等等,覆盖了数据研发全流程的规范体系。在这个阶段,我们重点提升质量监控覆盖度,将数据生产过程进行全面的监控覆盖。
  • 第二阶段,保核心。在核心数据链路上,增加贴近业务的指标监控。相对于第一阶段的监控,第二阶段的监控能更好的发现个性化的业务问题。针对影响数据质量较大的流程规范做加法,保证完整的落地,持续的改进。
  • 第三阶段,线上化、自动化。线上化是指,将流程规范从线下转变为线上管理。线上管理的好处是,便于后续的统计分析。自动化是指,问题的处理、追踪。从人工处理的方式,变成工具,自动化的方式实现,避免遗漏并减少运营成本。

在这里插入图片描述
上图是数据质量保障体系的能力图,数据质量保障体系包含流程规范、质量监控、问题处理、持续改进四个模块儿。流程规范部分包含数据开发规范、工程开发流程规范、产业合作机制运营三个部分。

质量监控包含系统监控和服务监控。其中,系统监控包含存储引擎 Kafka 流量监控、计算引擎 Flink 核心指标监控、基于数据埋点的 Raptor 异常监控。

在服务监控方面,包含了主链路差值监控、APP 从同环比监控、ODS 层同环比监控。在问题处理方面,主要包括影响周知,告警处理、数据修复。在持续改进方面,包含基于时间线梳理、声音定位、问归因、监控告警优化、作业调参优化、资源配置优化。
在这里插入图片描述
在实时离线数据的一致性方面,我们基于 Doris 实现了存储一体架构。存储一体架构是基于 Lambda 架构改进实现的。在数据源部分,数据源通过两种数据同步的方式,分别同步到实时数仓和离线数仓。

实时数仓通过 Flink 引擎,对数据进行分层加工。离线数仓通过 Spark 引擎,对数据进行分层加工。实时数仓的数据和离线数仓的数据,最终会写到 Doris 存储引擎的同一个数据模型上。

Doris 数据模型按天进行分区,实时数仓的数据会写到当天分区,离线数仓的数据会写到历史分区。当外部的数据查询需要查询当天或历史数据时,只需要通过时间分区路由。从而保证数据指标、数据维度口径完全一致。
在这里插入图片描述
在数据准确性方面,我们通过数据幂等和监控来实现。Kafka 只支持计算引擎内的 exactly once。为了实现端到端的 exactly once,我们一方面使用 Doris 的约定模型,实现数据幂等。另一方面,在数据加工过程中,按照业务组件进行数据去重。数据去重通常采用 row number 或 last value 的方式实践。

在质量的监控上,监控指标体系包含窗口统计指标、波动监控窗口。窗口统计指标是指,数据量、最大值、最小值、平均值、空值、占比、正则匹配。波动监控是指,数据的同环比。
在这里插入图片描述
在数据的及时性方面,我们通过性能瓶颈的定位和优化来解决。上图展示了数据生产链路性能瓶颈定位的过程。我们在 Flink ETL 任务里,植入算子处理的时间埋点。然后,将 ETL 任务输出的 Kafka,同步一份埋点数据到 Hive 引擎里。基于 Hive 引擎进行算子处理、性能分析,从而定位性能瓶颈。

当算子定位到性能瓶颈之后,我们采用的优化方式包含 TM JVM 性能调优、Doris 性能优化、Flink 任务优化。具体的优化方式包括调整新生代、老年代比例;Doris 导入并发数;compaction 参数调优;模型合并;RSU 数据缓存;大状态消除;代码逻辑优化等等。

4. 未来规划

在这里插入图片描述
接下来,讲一讲未来规划。实时数仓的未来规划主要包含三个部分。

  • 第一部分,数据的标准化。数据标准化的好处是,更好的保障数据口径一致,提升建模规范程度,数据的应用性。
  • 第二部分,流批一体。流批一体能提升实时离线数据的一致性和数据开发效率。
  • 第三部分,自动化建模。自动化建模的好处是,统一模型设计并实现任务的智能构建。

相关文章:

美团买菜基于 Flink 的实时数仓建设

美团买菜基于 Flink 的实时数仓建设 1. 背景介绍2. 技术愿景和架构设计3. 典型场景、挑战与应对3.1 动态 ETA 实时特征3.2 实时数据经营分析 4. 未来规划 1. 背景介绍 美团买菜是美团自营生鲜零售平台,上面所有的商品都由美团亲自采购,并通过供应链物流体…...

前端vue入门(纯代码)08

【08.webStorage--本地存储】 (1). 什么是 localStorage 和 sessionStorage ? 它们都是浏览器的一种本地存储数据的方式它们只是存在本地,即浏览器中,不会发送到服务器 它们的区别: localStorage:永久存在浏览器中…...

Xubuntu22.04之便签工具(一百八十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

Unity入门4——重要组件与API

一、GameObject (一)成员变量 // 名字 print(this.gameObject.name); this.gameObject.name "Lesson4唐老狮改名"; print(this.gameOb…...

NFS服务器安装及NFS制备程序安装

NFS服务器安装及NFS制备程序安装 NFS服务器安装 NFS是一种分布式文件系统协议,由sun公司开发,旨在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件 安装NFS服务器 登录需要安装NFS服务器的主机执行以下命令完成NFS安装 yum -y install…...

matlab+yalmip+cplex求解车辆路径优化问题(VRP)--matlab中yalmip函数介绍

YALMIP是一个MATLAB工具箱,用于建模和求解优化问题。它支持线性规划、二次规划、整数规划、鲁棒优化、半定规划等优化问题的建模和求解。下面是一些常用的函数的详细介绍: 1. sdpvar:用于定义优化问题中的变量。可以定义实数、向量和矩阵型变…...

实战:用dockerfile创建镜像实现springboot项目容器化

文章目录 前言技术积累docker基本操作命令dockerfile简介dockerfile指令说明 实战演示创建dockerfile创建挂载目录构建dockerfile启动容器完成验证 写在最后 前言 docker容器化方案是当下流行的服务部署方式,在软件领域举足轻重。我公司的测试、线上环境都采用dock…...

【Flask】配置项解析与加载

文章目录 默认配置表配置项加载方式直接配置存放在app.config字典通过.py配置文件通过class类加载对象通过.json配置文件通过环境变量配置内置命令行 默认配置表 配置项默认值备注DEBUGFalse是否开启 Debug 模式。如果为True,修改了代码,只需要保存&…...

Dinky: 实时即未来,让 Flink SQL 纵享丝滑--如何本地编译、运行

什么是Dinky 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 最后,Dinky 的发展皆归功于 Apache …...

2023 Nature 健康系统规模的语言模型是通用预测引擎

文章目录 一、论文关键信息二、论文主要内容三、总结与讨论🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题:Health system-scale language models are all-purpose prediction engines 期刊信息:2023 Nature 论文地址:h...

《2023 年 React 生态》

大家好,我是 Chocolate。 前不久看到一篇不错的内容,来自于 The React Ecosystem in 2023,也结合自己今年使用的 React 生态总结一下。 本文并非视频演讲稿,和视频内容还是有一点点区别,视频内容相对来说会更加详细一…...

武职302303笔记-day01

这里写自定义目录标题 开发永和小票开发步骤1、对页面进行需求分析 使用CSS的方式 Order.html问题:html代码和css样式代码交织 idea开发后端程序使用chatGPT给我们打工QRCreate.java 开发永和小票 开发步骤 1、对页面进行需求分析 页面是很多文字组成,…...

Python面试高频100题【11~15题】

Python面试必知100例。收集整理了目前Python岗位常见的面试题,希望大家通过学习理解相关知识点。下面介绍的是11~15道题。 十一、请介绍下Python中单下划线与双下划线区别 在Python中,单下划线和双下划线主要用于命名变量和方法,而它们具有不…...

Linux下Redis 存储

命令使用 目录 命令使用 RDB持久化 AOF持久化 yum安装 [rootlocalhost ~]# yum -y install redis 已加载插件:fastestmirror Loading mirror speeds from cached hostfile* c7-media: * epel: ftp.yz.yamagata-u.ac.jpvim到文件etc/redis.conf 取消注释requirep…...

QML 快速上手3 - QuickControl2

目录 QuickControl2简介风格设置control 配置文件图像浏览器案例component 组件报错问题StackViewSwipeView QuickControl2 简介 quickcontrol 用于快速构建风格化的用户界面 它包括了以下几个预制的组件风格 Default QT 默认风格Universal windows 桌面风格Material 谷歌推…...

QT Creator写一个简单的电压电流显示器

前言 本文主要涉及上位机对接收的串口数据处理,LCD Number控件的使用。之前的一篇写一个简单的LED控制主要是串口发出数据,这里再看一下怎么接收数据处理数据,这样基本就对串口上位机有简单的认识了。 LCD Number显示时间 这一小节通过用一…...

前端需要的技能

语言: 1,熟练掌握html5,css3,javascript,ajax 2,掌握PHP、java、python中至少一种web开发语言 3,库/框架:MooTools,YUI,Angular,jQuery,Dojo. 4,UI框架:BootStrap,Founda…...

Qt——Qt控件之基于模型的项目视图组-QTreeView树形视图控件的使用总结(Qt仿word标题列表的实现)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》...

spring boot框架步骤

目录 1. 创建一个新的Spring Boot项目2. 添加所需的依赖3. 编写应用程序代码4. 配置应用程序5. 运行应用程序6. 编写和运行测试7. 部署应用程序 总结 当使用Spring Boot框架开发应用程序时,以下是一些详细的步骤: 1. 创建一个新的Spring Boot项目 使用…...

动态创建select

1.动态创建select function createSelect(){ var mySelect document.createElement("select"); mySelect.id "mySelect"; document.body.appendChild(mySelect); } 2.添加选项option function addOption(){ //根据id查找对象, var objdoc…...

linux-centos7操作系统查看系统未挂载的磁盘,挂载磁盘

linux-centos7操作系统查看系统未挂载的磁盘,挂载磁盘 查看当前磁盘空间 根目录 / 下也只有44G,其他目录只有10几G,正式环境肯定不够用 df -h查看硬盘数量和分区情况 fdisk -l查看到/dev/vdb 有500多G了 将/dev/vdb在分出一个区使用 第一步:编辑分区。执行命令fdisk …...

STM32软件定时器

目录 什么是定时器? 软件定时器优缺点 软件定时器原理 软件定时器相关配置 单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器 3. 停止软件定时器 4. 复位软件定时器 5. 更改软件定时器定时时间 实操 cubeMX配置 …...

[论文阅读] (30)李沐老师视频学习——3.研究的艺术·讲好故事和论点

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…...

Java中List、Set、Map的区别和实现方式

Java中List、Set、Map的区别和实现方式 List List 是一个有序的集合,即元素按照插入的顺序进行排序,可以有重复的元素。因为是有序的,所以可以根据下标来获取元素或者遍历整个集合内的元素。常用的实现类包括 ArrayList 和 LinkedList。 A…...

@EnableScheduling和@Scheduled注解详解fixedrate和fixeddelay的区别

一、pom.xml中导入必要的依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><dependencies><…...

打印金字塔图案总结

那么好了好了&#xff0c;宝子们&#xff0c;今天给大家总结一下“打印金字塔图案”&#xff0c;来吧&#xff0c;开始整活&#xff01;⛳️ 最近在牛客网上刷题&#xff0c;遇到了这个打印类型的题目&#xff0c;我想总结一下&#xff0c;然后分享给大家。 一、正向金字塔 …...

SQL语句的执行顺序

1、SQL语句的一般执行顺序 1 from 找表 2 on 关联条件帅选 3 join 关联表操作 4 where 条件筛选 5 group by 进行分组 6 avg,sum… 执行函数 7 having 分组后筛选 8 select …...

Debian 版本代号与《玩具总动员》

作为最受欢迎的 Linux 发行版之一&#xff0c;Debian 是许多其他发行版的基础&#xff0c;许多非常受欢迎的 Linux 发行版&#xff0c;例如 Ubuntu、Knoppix、PureOS 、Tails、Armbian 以及 Raspbian&#xff0c;都基于 Debian。 经过近 20 个月的开发&#xff0c;2023 年 6 月…...

TypeScript 第一章

欢迎来到 TypeScript 学习&#xff01;本章将为您介绍 TypeScript 的基础知识。 TypeScript 是 JavaScript 的一个超集&#xff0c;它提供了静态类型检查、类、接口等特性&#xff0c;使得编写大型应用程序变得更加容易和可维护。TypeScript 编写的代码可以被编译成 JavaScript…...

【SpringCloud入门】-- Ribbon入门

1.什么是Ribbon&#xff1f; Ribbon就是netflix公司的一个开源项目&#xff0c;主要功能是提供客户端负载均衡算法和服务调用。Ribbon客户端组件提供了完善的配置项&#xff0c;如连接超时&#xff0c;重试等等。Ribbon作为服务消费者的负载均衡器&#xff0c;有两种使用方式&…...

wordpress knowhow/百度经验手机版官网

关于科学的作文600字(精选11篇)在日复一日的学习、工作或生活中&#xff0c;大家都经常接触到作文吧&#xff0c;作文要求篇章结构完整&#xff0c;一定要避免无结尾作文的出现。那么一般作文是怎么写的呢&#xff1f;以下是小编帮大家整理的关于科学的作文600字(精选11篇)&…...

做自己的网站流量怎么/山东seo网络推广

create database GSM1 on primary --主文件及主文件组 (name main1, --逻辑文件名filename c:\program files\microsoft sql server\mssql.2\mssql\data\mian1.mdf, --物理文件名size 10MB, --初始大小filegrowth 1MB --增长速度 ), (name ma…...

医疗软件网站建设公司/长沙seo网站推广

jstl与EL表达式 一el表达式介绍 EL 全名为Expression Language EL 语法很简单&#xff0c;它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构&#xff1a; ${sessionScope.user.sex} 所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是&#xff1a;从Sessio…...

网站 粘度/深圳网站建设资讯

显示存储卷列表&#xff08;和nova volume-list命令功能相同&#xff09; cinder list 显示存储卷类型列表 cinder type-list 列表展示zone cinder availability-zone-list 创建存储卷 cinder create --display-name VOLNAME SIZE&#xff08;SIZE的单位为GB&#xff09; 创建基…...

自己做网站卖阀门/网络推广怎么做

利用回溯法解决全排列问题。 题目&#xff1a; 给定一个没有重复数字的序列&#xff0c;返回其所有可能的全排列。示例&#xff1a; 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]思路&#xff1a; 代码&#xff1a; class Solution { pub…...

网站公司备案通知/站长交流平台

一GUI概述 AWT(Abstract Window Toolkit)包括了很多类和接口&#xff0c;用于Java Application的GUI(Graphics User Interface)编 程。使用AWT所涉及的类一般在java.awt包及其子包中&#xff0c;GUI的各种元素(如&#xff1a;窗口&#xff0c;按钮&#xff0c;文本框等)由Java…...