网易首页
133. DWM层-订单宽表 代码编写 订单与订单明细表双流JOIN
2023年2月6日 733观看
【尚硅谷】Flink数据仓库视频教程(一套精通实时数仓项目)
IT/互联网 / 程序设计开发
共292集
31.3万人观看
1
课程介绍 - 1
05:03
2
课程介绍 - 3
05:09
3
项目介绍 - 1
06:47
4
项目介绍 - 3
06:55
5
采集模块-课程介绍
04:56
6
采集模块-数仓分层之为什么分层
07:45
7
采集模块-数仓分层之分层明细 - 1
05:39
8
采集模块-数仓分层之分层明细 - 3
05:41
9
采集模块-整体需求介绍 - 1
08:47
10
采集模块-整体需求介绍 - 3
08:50
11
采集模块-离线架构分析之Sqoop&Flume
09:35
12
采集模块-离线架构分析之FlumeTairDirSource问题提出&解决 - 1
09:33
13
采集模块-离线架构分析之FlumeTairDirSource问题提出&解决 - 3
09:38
14
采集模块-离线架构分析之Kafka - 1
14:14
15
采集模块-离线架构分析之Kafka - 3
14:16
16
采集模块-离线架构分析之其他
07:55
17
采集模块-实时架构分析 - 1
06:00
18
采集模块-实时架构分析 - 3
06:12
19
采集模块-架构对比 - 1
05:25
20
采集模块-架构对比 - 3
05:21
21
采集模块-日志数据采集之需求分析
05:49
22
采集模块-日志数据采集之MockJar包测试
05:27
23
采集模块-日志数据采集之SpringBoot简单介绍
08:13
24
采集模块-日志数据采集之SpringBoot创建项目&简单测试 - 1
08:58
25
采集模块-日志数据采集之SpringBoot创建项目&简单测试 - 3
09:06
26
采集模块-日志数据采集之SpringBoot创建项目&加参数测试
03:45
27
采集模块-日志数据采集之数据落盘&写入Kafka 编码 - 1
07:55
28
采集模块-日志数据采集之数据落盘&写入Kafka 编码 - 3
07:58
29
采集模块-日志数据采集之数据落盘&写入Kafka 本地测试
05:05
30
采集模块-日志数据采集之数据落盘&写入Kafka 单机测试
04:57
31
采集模块-日志数据采集之Nginx 介绍
09:36
32
采集模块-日志数据采集之Nginx 配置负载均衡&测试 - 1
05:09
33
采集模块-日志数据采集之Nginx 配置负载均衡&测试 - 3
05:18
34
采集模块-日志数据采集之集群测试 - 1
06:30
35
采集模块-日志数据采集之集群测试 - 3
06:30
36
采集模块-业务数据采集之建库&建表
05:19
37
采集模块-业务数据采集之FlinkCDC 什么是CDC&对比 - 1
05:15
38
采集模块-业务数据采集之FlinkCDC 什么是CDC&对比 - 3
05:17
39
采集模块-业务数据采集之FlinkCDC 介绍 - 1
05:38
40
采集模块-业务数据采集之FlinkCDC 介绍 - 3
05:38
41
采集模块-业务数据采集之FlinkCDC DataStream方式 编码 - 1
10:48
42
采集模块-业务数据采集之FlinkCDC DataStream方式 编码 - 3
10:52
43
采集模块-业务数据采集之FlinkCDC DataStream方式 测试 - 1
05:19
44
采集模块-业务数据采集之FlinkCDC DataStream方式 测试 - 3
05:16
45
采集模块-业务数据采集之FlinkCDC DataStreamAPI 设置CK&打包&开启集群 - 1
08:29
46
采集模块-业务数据采集之FlinkCDC DataStreamAPI 设置CK&打包&开启集群 - 3
08:44
47
采集模块-业务数据采集之FlinkCDC DataStreamAPI 打包进行断点续传测试 - 1
06:08
48
采集模块-业务数据采集之FlinkCDC DataStreamAPI 打包进行断点续传测试 - 3
06:06
49
采集模块-业务数据采集之FlinkCDC FlinkSQLAPI 编码&测试 - 1
05:53
50
采集模块-业务数据采集之FlinkCDC FlinkSQLAPI 编码&测试 - 3
06:14
51
采集模块-业务数据采集之FlinkCDC DataStreamAPI 自定义反序列化器 格式说明 - 1
06:42
52
采集模块-业务数据采集之FlinkCDC DataStreamAPI 自定义反序列化器 格式说明 - 3
06:46
53
采集模块-业务数据采集之FlinkCDC DataStreamAPI 自定义反序列化器 编码完成 - 1
08:25
54
采集模块-业务数据采集之FlinkCDC DataStreamAPI 自定义反序列化器 编码完成 - 3
08:46
55
采集模块-业务数据采集之FlinkCDC DataStreamAPI 自定义反序列化器 代码测试
06:14
56
采集模块-业务数据采集之FlinkCDC DataStreamAPI&FlinkSQL对比
03:30
57
采集模块-业务数据采集之Maxwell 安装说明&测试 - 1
06:12
58
采集模块-业务数据采集之Maxwell 安装说明&测试 - 3
06:11
59
采集模块-业务数据采集之Canal 安装说明&测试
08:36
60
采集模块-业务数据采集之CDC对比 - 1
07:39
61
采集模块-业务数据采集之CDC对比 - 3
07:45
62
采集模块-业务数据采集之读取MySQL数据并写入Kafka 编码 - 1
05:55
63
采集模块-业务数据采集之读取MySQL数据并写入Kafka 编码 - 3
05:59
64
采集模块-业务数据采集之读取MySQL数据并写入Kafka 测试
04:39
65
DWD&DIM-课程介绍
06:15
66
DWD&DIM-行为数据 需求分析
09:51
67
DWD&DIM-行为数据 思路整理&消费Kafka数据
08:52
68
DWD&DIM-行为数据 将数据转换为JSON对象
08:15
69
DWD&DIM-行为数据 新老用户校验 - 1
05:43
70
DWD&DIM-行为数据 新老用户校验 - 3
05:43
71
DWD&DIM-行为数据 侧输出流&写入Kafka - 1
05:35
72
DWD&DIM-行为数据 侧输出流&写入Kafka - 3
05:35
73
DWD&DIM-行为数据 测试 - 1
05:24
74
DWD&DIM-行为数据 测试 - 3
05:22
75
DWD&DIM-业务数据之需求分析 - 1
14:21
76
DWD&DIM-业务数据之需求分析 - 3
14:17
77
DWD&DIM-业务数据之代码逻辑梳理
06:37
78
DWD&DIM-业务数据之代码编写 消费数据并过滤
05:01
79
DWD&DIM-业务数据之代码编写 读取配置表创建广播流
04:11
80
DWD&DIM-业务数据之代码编写 配置表字段分析&建表&JavaBean - 1
11:39
81
DWD&DIM-业务数据之代码编写 配置表字段分析&建表&JavaBean - 3
11:58
82
DWD&DIM-业务数据之代码编写 开启配置表Binlog并测试
04:47
83
DWD&DIM-业务数据之代码编写 连接主流&广播流并分析业务逻辑
08:34
84
DWD&DIM-业务数据之代码编写 创建TableProcessFunction并初始化相关参数
09:12
85
DWD&DIM-业务数据之代码编写 处理广播流数据 解析数据&建表 - 1
08:57
86
DWD&DIM-业务数据之代码编写 处理广播流数据 解析数据&建表 - 3
09:07
87
DWD&DIM-业务数据之代码编写 处理广播流数据 写入状态
01:10
88
DWD&DIM-业务数据之代码编写 处理主流数据 读取状态&过滤字段 - 1
08:37
89
DWD&DIM-业务数据之代码编写 处理主流数据 读取状态&过滤字段 - 3
08:51
90
DWD&DIM-业务数据之代码编写 处理主流数据 补充SinkTable&分流
05:15
91
DWD&DIM-业务数据之代码编写 检查代码
07:17
92
DWD&DIM-业务数据之代码编写 测试准备
08:20
93
DWD&DIM-业务数据之代码编写 测试 - 1
07:42
94
DWD&DIM-业务数据之代码编写 测试 - 3
07:39
95
DWD&DIM-业务数据之代码编写 将数据写入HBase 编码 - 1
13:47
96
DWD&DIM-业务数据之代码编写 将数据写入HBase 编码 - 3
13:58
97
DWD&DIM-业务数据之代码编写 将数据写入Kafka 编码 - 1
10:34
98
DWD&DIM-业务数据之代码编写 将数据写入Kafka 编码 - 3
10:35
99
DWD&DIM-业务数据之整体测试 环境准备
06:48
100
DWD&DIM-业务数据之整体测试 测试完成 - 1
07:38
101
DWD&DIM-业务数据之整体测试 测试完成 - 3
07:59
102
ODS&DWD&DIM-小总结 - 1
05:51
103
ODS&DWD&DIM-小总结 - 3
05:54
104
ODS&DWD&DIM-SQL分享 需求说明&建表&导数据
07:19
105
ODS&DWD&DIM-SQL分享 方案二 - 1
09:23
106
ODS&DWD&DIM-SQL分享 方案二 - 3
09:23
107
ODS&DWD&DIM-SQL分享 HiveOnSpark Bug说明
02:12
108
DWM层-需求分析 - 1
08:16
109
DWM层-需求分析 - 3
08:20
110
DWM层-访客UV 需求分析
09:29
111
DWM层-访客UV 代码编写 消费数据并转换为JSON对象
04:21
112
DWM层-访客UV 代码编写 过滤数据 - 1
07:40
113
DWM层-访客UV 代码编写 过滤数据 - 3
07:58
114
DWM层-访客UV 代码编写 设置状态超时时间防止状态过大 - 1
06:38
115
DWM层-访客UV 代码编写 设置状态超时时间防止状态过大 - 3
06:39
116
DWM层-访客UV 代码测试
08:18
117
DWM层-跳出明细 需求分析 - 1
06:14
118
DWM层-跳出明细 需求分析 - 3
06:12
119
DWM层-跳出明细 代码编写 - 1
07:48
120
DWM层-跳出明细 代码编写 - 3
07:45
121
DWM层-跳出明细 代码测试 - 1
06:12
122
DWM层-跳出明细 代码测试 - 3
06:12
123
DWM层-跳出明细 测试
07:55
124
DWM层-跳出明细 CEP 循环模式
03:08
125
DWM层-订单宽表 需求分析
05:25
126
DWM层-订单宽表 双流JOIN 官方文档说明 - 1
08:42
127
DWM层-订单宽表 双流JOIN 官方文档说明 - 3
08:48
128
DWM层-订单宽表 双流JOIN 代码编写
09:15
129
DWM层-订单宽表 双流JOIN 代码测试 - 1
06:13
130
DWM层-订单宽表 双流JOIN 代码测试 - 3
06:11
131
DWM层-订单宽表 代码编写 消费Kafka数据&转换JavaBean&提取事件时间 - 1
05:46
132
DWM层-订单宽表 代码编写 消费Kafka数据&转换JavaBean&提取事件时间 - 3
05:44
133
DWM层-订单宽表 代码编写 订单与订单明细表双流JOIN
09:13
134
DWM层-订单宽表 代码测试 准备工作 - 1
05:32
135
DWM层-订单宽表 代码测试 准备工作 - 3
05:38
136
DWM层-订单宽表 代码测试 测试完成
05:57
137
DWM层-订单宽表 关联维度 思路梳理
05:13
138
DWM层-订单宽表 关联维度 JDBCUtil 返回值&参数说明
09:39
139
DWM层-订单宽表 关联维度 JDBCUtil 查询&封装泛型对象 - 1
09:44
140
DWM层-订单宽表 关联维度 JDBCUtil 查询&封装泛型对象 - 3
09:41
141
DWM层-订单宽表 关联维度 JDBCUtil 测试
04:14
142
DWM层-订单宽表 关联维度 DimUtil封装&优化的必要性 - 1
07:56
143
DWM层-订单宽表 关联维度 DimUtil封装&优化的必要性 - 3
07:57
144
DWM层-订单宽表 关联维度 优化1旁路缓存 思路分析 - 1
05:28
145
DWM层-订单宽表 关联维度 优化1旁路缓存 思路分析 - 3
05:30
146
DWM层-订单宽表 关联维度 优化1旁路缓存 Redis工具类&Key的设计 - 1
07:49
147
DWM层-订单宽表 关联维度 优化1旁路缓存 Redis工具类&Key的设计 - 3
07:52
148
DWM层-订单宽表 关联维度 优化1旁路缓存 代码编写 - 1
06:52
149
DWM层-订单宽表 关联维度 优化1旁路缓存 代码编写 - 3
06:54
150
DWM层-订单宽表 关联维度 优化1旁路缓存 代码测试
08:29
151
DWM层-订单宽表 回顾 - 1
10:42
152
DWM层-订单宽表 回顾 - 3
10:48
153
DWM层-订单宽表 关联维度 优化2 异步IO说明 - 1
07:21
154
DWM层-订单宽表 关联维度 优化2 异步IO说明 - 3
07:24
155
DWM层-订单宽表 关联维度 优化2 异步IO编码步骤
04:51
156
DWM层-订单宽表 关联维度 优化2 异步IO编码 初始化函数 - 1
11:17
157
DWM层-订单宽表 关联维度 优化2 异步IO编码 初始化函数 - 3
11:40
158
DWM层-订单宽表 关联维度 优化2 异步IO编码 异步函数完成 - 1
12:00
159
DWM层-订单宽表 关联维度 优化2 异步IO编码 异步函数完成 - 3
12:04
160
DWM层-订单宽表 关联维度 优化2 异步IO编码 测试准备 - 1
08:53
161
DWM层-订单宽表 关联维度 优化2 异步IO编码 测试准备 - 3
08:51
162
DWM层-订单宽表 关联维度 优化2 异步IO编码 测试完成
09:52
163
DWM层-订单宽表 关联维度 补充其他维度信息
08:35
164
DWM层-订单宽表 最终测试
04:45
165
DWM层-订单宽表 不丢维度数据说明
06:35
166
DWM层-支付宽表 需求分析
09:30
167
DWM层-支付宽表 代码编写 - 1
07:56
168
DWM层-支付宽表 代码编写 - 3
08:01
169
DWM层-支付宽表 代码测试
08:39
170
DWM层-支付宽表 时间工具类说明
07:35
171
DWS层-课程介绍
05:29
172
DWS层-访客主题宽表 需求分析 - 1
06:53
173
DWS层-访客主题宽表 需求分析 - 3
07:05
174
DWS层-访客主题宽表 思路整理&读取Kafka数据 - 1
06:32
175
DWS层-访客主题宽表 思路整理&读取Kafka数据 - 3
06:37
176
DWS层-访客主题宽表 处理输出流&union&提取时间戳分组 - 1
08:37
177
DWS层-访客主题宽表 处理输出流&union&提取时间戳分组 - 3
08:38
178
DWS层-访客主题宽表 开窗&聚合 - 1
09:03
179
DWS层-访客主题宽表 开窗&聚合 - 3
09:12
180
DWS层-访客主题宽表 打印测试 - 1
08:38
181
DWS层-访客主题宽表 打印测试 - 3
08:54
182
DWS层-ClickHouse 课程介绍
03:42
183
DWS层-ClickHouse 概述&特点 - 1
06:37
184
DWS层-ClickHouse 概述&特点 - 3
06:43
185
DWS层-ClickHouse 安装准备工作
05:43
186
DWS层-ClickHouse 安装&启动 - 1
05:13
187
DWS层-ClickHouse 安装&启动 - 3
05:12
188
DWS层-ClickHouse 数据类型 - 1
08:25
189
DWS层-ClickHouse 数据类型 - 3
08:37
190
DWS层-ClickHouse 简单引擎介绍
04:32
191
DWS层-ClickHouse MergeTree - 1
05:18
192
DWS层-ClickHouse MergeTree - 3
05:17
193
DWS层-ClickHouse MergeTree之Partition By
06:02
194
DWS层-ClickHouse MergeTree之Primary Key
05:44
195
DWS层-ClickHouse MergeTree之Order By
04:19
196
DWS层-ClickHouse MergeTree之TTL
05:26
197
DWS层-ClickHouse ReplacingMergeTree
07:52
198
DWS层-ClickHouse SummingMergeTree
06:20
199
DWS层-ClickHouse 引擎选择分析 - 1
07:34
200
DWS层-ClickHouse 引擎选择分析 - 3
07:37
201
DWS层-ClickHouse SQL操作 一 - 1
06:51
202
DWS层-ClickHouse SQL操作 一 - 3
06:49
203
DWS层-ClickHouse SQL操作 二 - 1
11:33
204
DWS层-ClickHouse SQL操作 二 - 3
11:38
205
DWS层-ClickHouse 副本机制 - 1
05:39
206
DWS层-ClickHouse 副本机制 - 3
05:51
207
DWS层-ClickHouse 分片机制 说明
07:59
208
DWS层-ClickHouse 分片机制 实操 - 1
06:41
209
DWS层-ClickHouse 分片机制 实操 - 3
06:41
210
DWS层-访客主题 ClickHouseUtil 创建 - 1
06:40
211
DWS层-访客主题 ClickHouseUtil 创建 - 3
06:39
212
DWS层-访客主题 ClickHouseUtil 封装 - 1
06:06
213
DWS层-访客主题 ClickHouseUtil 封装 - 3
06:06
214
DWS层-访客主题 ClickHouseUtil 封装完成 - 1
09:16
215
DWS层-访客主题 ClickHouseUtil 封装完成 - 3
09:14
216
DWS层-访客主题 ClickHouseUtil 测试完成
09:24
217
DWS层-商品主题 JavaBean说明
08:30
218
DWS层-商品主题 代码编写 思路整理&消费数据创建流
07:51
219
DWS层-商品主题 代码编写 处理页面日志&收藏数据&购物车数据 - 1
08:33
220
DWS层-商品主题 代码编写 处理页面日志&收藏数据&购物车数据 - 3
08:29
221
DWS层-商品主题 代码编写 处理订单&支付数据
07:54
222
DWS层-商品主题 代码编写 处理退单&评价数据
08:51
223
DWS层-商品主题 代码编写 分组开窗&聚合
09:19
224
DWS层-商品主题 代码编写 关联维度&将数据写入ClickHouse
09:31
225
DWS层-商品主题-整体测试 - 1
10:50
226
DWS层-商品主题-整体测试 - 3
10:48
227
DWS层-商品主题-需求分析
05:10
228
DWS层-商品主题 代码编写 创建环境&使用DDL方式读取Kafka数据 - 1
11:23
229
DWS层-商品主题 代码编写 创建环境&使用DDL方式读取Kafka数据 - 3
11:39
230
DWS层-商品主题 代码编写 分组开窗聚合 - 1
05:16
231
DWS层-商品主题 代码编写 分组开窗聚合 - 3
05:18
232
DWS层-商品主题 代码编写 将动态表转换为流并打印
07:06
233
DWS层-商品主题 代码编写 将数据写入ClickHouse&测试 - 1
05:43
234
DWS层-商品主题 代码编写 将数据写入ClickHouse&测试 - 3
05:52
235
DWS层-关键词主题 需求分析
04:21
236
DWS层-关键词主题 代码编写 分词工具类封装
09:51
237
DWS层-关键词主题 代码编写 分词UDTF - 1
06:02
238
DWS层-关键词主题 代码编写 分词UDTF - 3
06:04
239
DWS层-关键词主题 代码编写 思路分析&读取数据&建表 - 1
08:30
240
DWS层-关键词主题 代码编写 思路分析&读取数据&建表 - 3
08:38
241
DWS层-关键词主题 代码编写 分词&开窗聚合 - 1
05:29
242
DWS层-关键词主题 代码编写 分词&开窗聚合 - 3
05:36
243
DWS层-关键词主题 代码编写 动态表转换为流&写入ClickHouse
09:10
244
DWS层-关键词主题 代码测试
04:06
245
数据可视化-课程介绍
07:35
246
数据可视化-Sugar 创建大屏
04:09
247
数据可视化-Sugar 使用步骤介绍
04:11
248
数据可视化-数据接口 项目构建
05:09
249
数据可视化-数据接口 依赖导入&分层说明
10:00
250
数据可视化-数据接口 GMV接口 Mapper完成
05:00
251
数据可视化-数据接口 GMV接口 Service&Controller完成
09:17
252
数据可视化-数据接口 GMV接口 测试
03:50
253
数据可视化-数据接口 GMV接口 对接Sugar - 1
07:01
254
数据可视化-数据接口 GMV接口 对接Sugar - 3
07:06
255
数据可视化-数据接口 品牌GMV接口 Mapper完成 - 1
06:22
256
数据可视化-数据接口 品牌GMV接口 Mapper完成 - 3
06:42
257
数据可视化-数据接口 品牌GMV接口 Service完成
05:40
258
数据可视化-数据接口 品牌GMV接口 Controller完成
03:47
259
数据可视化-数据接口 品牌GMV接口 测试完成
07:37
260
数据可视化-数据接口 品牌GMV接口 对接Sugar
03:39
261
数据可视化-数据接口 导入代码&品类GMV&SPU GMV
08:38
262
数据可视化-数据接口 其他需求图表 - 1
05:58
263
数据可视化-数据接口 其他需求图表 - 3
05:56
264
数据可视化-最终测试 - 1
06:46
265
数据可视化-最终测试 - 3
06:45
266
Flink优化-课程介绍 - 1
05:41
267
Flink优化-课程介绍 - 3
05:40
268
Flink优化-资源优化之内存设置 - 1
07:25
269
Flink优化-资源优化之内存设置 - 3
07:46
270
Flink优化-资源优化之并行度设置 - 1
05:49
271
Flink优化-资源优化之并行度设置 - 3
05:53
272
Flink优化-资源优化之RockDB配置 - 1
06:34
273
Flink优化-资源优化之RockDB配置 - 3
06:39
274
Flink优化-资源优化之CheckPoint配置
04:25
275
Flink优化-资源优化之ParameterTool的介绍
08:19
276
Flink优化-反压处理之反压介绍&定位 - 1
13:15
277
Flink优化-反压处理之反压介绍&定位 - 3
13:14
278
Flink优化-反压处理之反压问题解决 - 1
08:15
279
Flink优化-反压处理之反压问题解决 - 3
08:14
280
Flink优化-数据倾斜之定位问题
02:16
281
Flink优化-数据倾斜之KeyBy之前的数据倾斜
06:40
282
Flink优化-数据倾斜之KeyBy之后直接聚合 - 1
09:29
283
Flink优化-数据倾斜之KeyBy之后直接聚合 - 3
09:39
284
Flink优化-数据倾斜之KeyBy之后开窗聚合 - 1
07:51
285
Flink优化-数据倾斜之KeyBy之后开窗聚合 - 3
08:12
286
Flink优化-FlinkSQL优化之MiniBatch
08:41
287
Flink优化-FlinkSQL优化之LocalGlobal
03:39
288
Flink优化-FlinkSQL优化之SplitDistinct
03:34
289
Flink优化-FlinkSQL优化之Agg With Filter
01:38
290
Flink优化-FlinkSQL优化之TopN优化 - 1
05:06
291
Flink优化-FlinkSQL优化之TopN优化 - 3
05:18
292
Flink优化-FlinkSQL优化之去重方案&其他
05:37
相关视频
06:59
第8课时 祈使句 感叹句 - 3
2022年9月23日
1461观看
08:20
[1]--疑问句的表达
2022年10月28日
1025观看
02:47
感叹句的结构是什么,你都知道吗?90%的人都没搞懂
轻知识
2023年10月3日
645观看
02:14
用“could”问,用“can”答?要看清时态哦
轻知识
1年前
1284观看
03:12
中考英语:祈使句要用动词原形开头,这几个动词短语要认识哦
轻知识
1年前
1500观看
第12/47集 · 14:04
简单句-句子的成分-主语 - 2
考研留学
2022年10月31日
1238观看
第26/83集 · 05:56
并列句-并列连词在写作中的使用 - 3
考研留学
2022年11月2日
1427观看
02:42
动词ing短语,老师讲得很详细,不枉我听半天
轻知识
2年前
1263观看
02:08
run的动词短语你都知道吗?快来看看你都掌握了吗,记得收藏哦
轻知识
2023年10月1日
1158观看
01:59
有关practice的动词短语你都知道哪些,这个视频老师告诉你
轻知识
2023年9月27日
1610观看
第6/34集 · 07:16
语法补锅04:同位语从句
考研留学
2022年10月28日
1767观看
02:27
跟着老师学习有关offer的动词短语,老师教你方法,秒杀!
轻知识
2023年10月1日
724观看
02:10
考了感叹句的表达方法,你掌握了没有呢?学一学
轻知识
2023年10月20日
1229观看
02:47
有关know的介词短语,你会了吗?快来跟着视频看看吧
轻知识
2023年9月29日
735观看
03:22
单选题中的情态动词如何选择?只要分清这些,做题很简单
轻知识
1年前
666观看
02:59
by the time:介词短语,经常起连词作用
7月前
902观看