尚硅谷大数据项目《在线教育之离线数仓》笔记004

视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili

目录

第9章 数仓开发之DWD层

P049

P050

P051

P052

P053

P054

P055

P056

P057

P058

P059

P060

P061

P062

P063

P064

P065

P066

P067

P068

P069

P070


第9章 数仓开发之DWD层

P049

第9章 数仓开发之DWD层

DWD层设计要点:

(1)DWD层的设计依据是维度建模理论,该层存储维度模型的事实表。

(2)DWD层的数据存储格式为orc列式存储+snappy压缩。

(3)DWD层表名的命名规范为dwd_数据域_表名_单分区增量全量标识(inc/full)。

-- 9.1 交易域加购事务事实表
DROP TABLE IF EXISTS dwd_trade_cart_add_inc;
CREATE EXTERNAL TABLE dwd_trade_cart_add_inc
(`id`          STRING COMMENT '编号',`user_id`     STRING COMMENT '用户id',`course_id`   STRING COMMENT '课程id',`date_id`     STRING COMMENT '时间id',`session_id`  STRING COMMENT '会话id',`create_time` STRING COMMENT '加购时间',`cart_price`  DECIMAL(16, 2) COMMENT '加购时价格'
) COMMENT '交易域加购事务事实表'PARTITIONED BY (`dt` STRING)STORED AS ORCLOCATION '/warehouse/edu/dwd/dwd_trade_cart_add_inc/'TBLPROPERTIES ('orc.compress' = 'snappy');select *
from edu2077.ods_cart_info_full;select *
from edu2077.ods_cart_info_inc;select data.id,data.user_id,data.course_id,data.date_id,data.session_id,data.create_time,data.cart_price
from edu2077.ods_cart_info_inc
where dt = '2022-02-21'and type = 'bootstrap-insert';set hive.exec.dynamic.partition.mode=nonstrict;--关闭严格模式insert overwrite table edu2077.dwd_trade_cart_add_inc
select data.id,data.user_id,data.course_id,date_format(data.create_time, 'yyyy-MM-dd') date_id,data.session_id,data.create_time,data.cart_price,date_format(data.create_time, 'yyyy-MM-dd') dt
from edu2077.ods_cart_info_inc
where dt = '2022-02-21'and type = 'bootstrap-insert';insert overwrite table edu2077.dwd_trade_cart_add_inc partition (dt = '2022-02-21')
select data.id,data.user_id,data.course_id,date_format(data.create_time, 'yyyy-MM-dd') date_id,data.session_id,data.create_time,data.cart_price
from edu2077.ods_cart_info_inc
where dt = '2022-02-21'and type = 'bootstrap-insert';select *
from dwd_trade_cart_add_inc;--每日装载
insert overwrite table edu2077.dwd_trade_cart_add_inc partition (dt = '2022-02-22')
select data.id,data.user_id,data.course_id,date_format(data.create_time, 'yyyy-MM-dd') date_id,data.session_id,data.create_time,data.cart_price
from edu2077.ods_cart_info_inc
where dt = '2022-02-22'and type = 'insert';

P050

-- 9.2 交易域加购周期快照事实表
DROP TABLE IF EXISTS dwd_trade_cart_full;
CREATE EXTERNAL TABLE dwd_trade_cart_full
(`id`          STRING COMMENT '编号',`user_id`     STRING COMMENT '用户id',`course_id`   STRING COMMENT '课程id',`date_id`     STRING COMMENT '时间id',`session_id`  STRING COMMENT '会话id',`course_name` STRING COMMENT '课程名称',`create_time` STRING COMMENT '加购时间',`cart_price`  DECIMAL(16, 2) COMMENT '加购时价格'
) COMMENT '交易域加购周期快照事实表'PARTITIONED BY (`dt` STRING)STORED AS ORCLOCATION '/warehouse/edu/dwd/dwd_trade_cart_full/'TBLPROPERTIES ('orc.compress' = 'snappy');select * from ods_cart_info_full
where dt = '2022-02-21';--数据装载
insert overwrite table edu2077.dwd_trade_cart_full partition (dt = '2022-02-21')
select id,user_id,course_id,date_format(create_time, 'yyyy-MM-dd'),session_id,course_name,create_time,cart_price
from edu2077.ods_cart_info_full
where dt = '2022-02-21'and deleted = '0'and sold = '0';select * from dwd_trade_cart_full;

P051

P052

P053

--9.3 交易域试听下单累积快照事实表
DROP TABLE IF EXISTS dwd_trade_course_order_inc;
CREATE EXTERNAL TABLE dwd_trade_course_order_inc
(`id`                   STRING COMMENT '编号',`user_id`              STRING COMMENT '用户id',`course_id`            STRING COMMENT '课程id',`course_name`          STRING COMMENT '课程名称',`category_id`          STRING COMMENT '分类id',`category_name`        STRING COMMENT '分类名称',`subject_id`           STRING COMMENT '科目id',`subject_name`         STRING COMMENT '科目名称',`order_id`             STRING COMMENT '订单id',`province_id`          STRING COMMENT '省份id',`play_time`            STRING COMMENT '首次播放时间',`play_date`            STRING COMMENT '首次播放日期',`order_time`           STRING COMMENT '首次下单时间',`order_date`           STRING COMMENT '首次下单日期',`end_date`             STRING COMMENT '结束日期,试听后七天内未下单即为结束,试听日期+7为结束日期',`session_id`           STRING COMMENT '会话id',`original_amount`      DECIMAL(16, 2) COMMENT '原始金额分摊',`coupon_reduce_amount` DECIMAL(16, 2) COMMENT '优惠金额分摊',`final_amount`         DECIMAL(16, 2) COMMENT '最终价格分摊'
) COMMENT '交易域试听下单累积快照事实表'PARTITIONED BY (`dt` STRING)STORED AS ORCLOCATION '/warehouse/edu/dwd/dwd_trade_course_order_inc/'TBLPROPERTIES ('orc.compress' = 'snappy');set hive.exec.dynamic.partition.mode=nonstrict;--关闭严格模式select * from ods_user_chapter_process_full;select * from edu2077.ods_order_info_inc;--(1)首日装载
with play as(select min(id)                                     id,user_id,course_id,min(create_time)                            play_time,date_format(min(create_time), 'yyyy-MM-dd') play_datefrom edu2077.ods_user_chapter_process_fullwhere dt = '2022-02-21'group by user_id, course_id),oi as(select data.id,data.province_id,data.session_idfrom edu2077.ods_order_info_incwhere dt = '2022-02-21'and type = 'bootstrap-insert'),od as(select data.id,data.course_id,data.order_id,data.user_id,data.origin_amount,data.coupon_reduce,data.final_amount,data.create_time                            order_time,date_format(data.create_time, 'yyyy-MM-dd') order_datefrom edu2077.ods_order_detail_incwhere dt = '2022-02-21'and type = 'bootstrap-insert'),dim_course as (select id,course_name,category_id,category_name,subject_id,subject_namefrom edu2077.dim_course_fullwhere dt = '2022-02-21')
insert
overwrite
table
edu2077.dwd_trade_course_order_inc
partition
(
dt
)
select final.id,user_id,course_id,course_name,category_id,category_name,subject_id,subject_name,order_id,province_id,play_time,play_date,order_time,order_date,end_date,session_id,origin_amount,coupon_reduce,final_amount,casewhen end_date is not null then end_datewhen order_date is not null then order_dateelse '9999-12-31' end dt
from (select play.id,play.user_id,play.course_id,od.order_id,oi.province_id,play.play_time,play.play_date,od.order_time,od.order_date,if(od.order_date is null anddate_add(play.play_date, 7) <= '2022-02-21',date_add(play.play_date, 7), null) end_date,oi.session_id,od.origin_amount,od.coupon_reduce,od.final_amountfrom playleft join od on play.user_id = od.user_id and play.course_id = od.course_idleft join oi on od.order_id = oi.idwhere od.order_time is nullor od.order_time > play.play_time) finalleft join dim_course on course_id = dim_course.id;select * from dwd_trade_course_order_inc;

P054

--9.3 交易域试听下单累积快照事实表
--(2)每日装载
set hive.exec.dynamic.partition.mode=nonstrict;
with play as(select id,user_id,course_id,play_time,play_datefrom edu2077.dwd_trade_course_order_incwhere dt = '9999-12-31'unionselect min(id)                                     id,user_id,course_id,min(create_time),date_format(min(create_time), 'yyyy-MM-dd') play_datefrom edu2077.ods_user_chapter_process_fullwhere dt = '2022-02-22'group by user_id, course_idhaving date_format(min(create_time), 'yyyy-MM-dd') = '2022-02-22'),oi as(select data.id,data.province_id,data.session_id,data.create_time order_timefrom edu2077.ods_order_info_incwhere dt = '2022-02-22'and type = 'insert'),od as(select data.id,data.course_id,data.order_id,data.user_id,data.origin_amount,data.coupon_reduce,data.final_amount,date_format(data.create_time, 'yyyy-MM-dd') order_datefrom edu2077.ods_order_detail_incwhere dt = '2022-02-22'and type = 'insert'),dim_course as(select id,course_name,category_id,category_name,subject_id,subject_namefrom edu2077.dim_course_fullwhere dt = '2022-02-22')
insert
overwrite
table
edu2077.dwd_trade_course_order_inc
partition
(
dt
)
select final.id,user_id,course_id,course_name,category_id,category_name,subject_id,subject_name,order_id,province_id,play_time,play_date,order_time,order_date,end_date,session_id,origin_amount,coupon_reduce,final_amount,casewhen end_date is not null then end_datewhen order_date is not null then order_dateelse '9999-12-31' end dt
from (select play.id,play.user_id,play.course_id,od.order_id,oi.province_id,play.play_time,play.play_date,oi.order_time,od.order_date,if(order_date is null and date_add(play_date, 7) = '2022-02-22', '2022-02-22', null) end_date,oi.session_id,od.origin_amount,od.coupon_reduce,od.final_amountfrom playleft join od on play.user_id = od.user_id and play.course_id = od.course_idleft join oi on od.order_id = oi.idwhere order_time is nullor order_time > play_time) finalleft join dim_course on course_id = dim_course.id;

P055

--9.4 交易域下单事务事实表
DROP TABLE IF EXISTS dwd_trade_order_detail_inc;
CREATE EXTERNAL TABLE dwd_trade_order_detail_inc
(`id`                   STRING COMMENT '编号',`order_id`             STRING COMMENT '订单id',`user_id`              STRING COMMENT '用户id',`course_id`            STRING COMMENT '课程id',`course_name`          STRING COMMENT '课程名称',`category_id`          STRING COMMENT '分类id',`category_name`        STRING COMMENT '分类名称',`subject_id`           STRING COMMENT '科目id',`subject_name`         STRING COMMENT '科目名称',`province_id`          STRING COMMENT '省份id',`date_id`              STRING COMMENT '下单日期id',`session_id`           STRING COMMENT '会话id',`source_id`            STRING COMMENT '来源id',`create_time`          STRING COMMENT '下单时间',`original_amount`      DECIMAL(16, 2) COMMENT '原始金额分摊',`coupon_reduce_amount` DECIMAL(16, 2) COMMENT '优惠金额分摊',`final_amount`         DECIMAL(16, 2) COMMENT '最终价格分摊',`out_trade_no`         STRING COMMENT '订单交易编号',`trade_body`           STRING COMMENT '订单描述'
) COMMENT '交易域下单事务事实表'PARTITIONED BY (`dt` STRING)STORED AS ORCLOCATION '/warehouse/edu/dwd/dwd_trade_order_detail_inc/'TBLPROPERTIES ('orc.compress' = 'snappy');select * from edu2077.ods_order_detail_inc where dt = '2022-02-21';--(1)首日装载
set hive.exec.dynamic.partition.mode=nonstrict;insert overwrite table edu2077.dwd_trade_order_detail_incpartition (dt)
select odt.id,order_id,user_id,course_id,course_name,category_id,category_name,subject_id,subject_name,province_id,date_id,session_id,source_id,create_time,origin_amount,coupon_reduce,final_amount,out_trade_no,trade_body,date_id
from (select data.id,data.order_id,data.user_id,data.course_id,date_format(data.create_time, 'yyyy-MM-dd') date_id,data.create_time,data.origin_amount,data.coupon_reduce,data.final_amountfrom edu2077.ods_order_detail_incwhere dt = '2022-02-21'and type = 'bootstrap-insert') odtleft join(select data.id,data.province_id,data.out_trade_no,data.session_id,data.trade_bodyfrom edu2077.ods_order_info_incwhere dt = '2022-02-21'and type = 'bootstrap-insert') odon odt.order_id = od.idleft join(select distinct common.sid,common.sc source_idfrom edu2077.ods_log_inc oliwhere dt = '2022-02-21') logon od.session_id = log.sidleft join(select id,course_name,category_id,category_name,subject_id,subject_namefrom edu2077.dim_course_fullwhere dt = '2022-02-21') dim_courseon course_id = dim_course.id;

P056

--9.4 交易域下单事务事实表
--(2)每日装载
insert overwrite table edu2077.dwd_trade_order_detail_incpartition (dt = '2022-02-22')
select odt.id,order_id,user_id,course_id,course_name,category_id,category_name,subject_id,subject_name,province_id,date_id,session_id,source_id,create_time,origin_amount,coupon_reduce,final_amount,out_trade_no,trade_body
from (select data.id,data.order_id,data.user_id,data.course_id,date_format(data.create_time, 'yyyy-MM-dd') date_id,data.create_time,data.origin_amount,data.coupon_reduce,data.final_amountfrom edu2077.ods_order_detail_incwhere dt = '2022-02-22'and type = 'insert') odtleft join(select data.id,data.province_id,data.session_id,data.out_trade_no,data.trade_bodyfrom edu2077.ods_order_info_incwhere dt = '2022-02-22'and type = 'insert') odon odt.order_id = od.idleft join(select distinct common.sid,common.sc source_idfrom edu2077.ods_log_inc oliwhere dt = '2022-02-22') logon od.session_id = log.sidleft join(select id,course_name,category_id,category_name,subject_id,subject_namefrom edu2077.dim_course_fullwhere dt = '2022-02-22') dim_courseon course_id = dim_course.id;

P057

--9.5 交易域支付成功事务事实表DROP TABLE IF EXISTS dwd_trade_pay_detail_suc_inc;
CREATE EXTERNAL TABLE dwd_trade_pay_detail_suc_inc
(`id`                   STRING COMMENT '编号',`order_id`             STRING COMMENT '订单id',`user_id`              STRING COMMENT '用户id',`course_id`            STRING COMMENT '课程id',`province_id`          STRING COMMENT '省份id',`date_id`              STRING COMMENT '支付日期id',`alipay_trade_no`      STRING COMMENT '支付宝交易编号',`trade_body`           STRING COMMENT '交易内容',`payment_type`         STRING COMMENT '支付类型名称',`payment_status`       STRING COMMENT '支付状态',`callback_time`        STRING COMMENT '支付成功时间',`callback_content`     STRING COMMENT '回调信息',`original_amount`      DECIMAL(16, 2) COMMENT '原始支付金额分摊',`coupon_reduce_amount` DECIMAL(16, 2) COMMENT '优惠支付金额分摊',`final_amount`         DECIMAL(16, 2) COMMENT '最终支付金额分摊'
) COMMENT '交易域支付成功事务事实表'PARTITIONED BY (`dt` STRING)STORED AS ORCLOCATION '/warehouse/edu/dwd/dwd_trade_pay_detail_suc_inc/'TBLPROPERTIES ('orc.compress' = 'snappy');--(1)首日装载
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table edu2077.dwd_trade_pay_detail_suc_incpartition (dt)
select odt.id,od.id,user_id,course_id,province_id,date_format(create_time, 'yyyy-MM-dd') date_id,alipay_trade_no,trade_body,payment_type,payment_status,callback_time,callback_content,origin_amount,coupon_reduce,final_amount,date_format(create_time, 'yyyy-MM-dd') date_id
from (select data.id,data.order_id,data.user_id,data.course_id,data.origin_amount,data.coupon_reduce,data.final_amount,data.create_timefrom edu2077.ods_order_detail_incwhere dt = '2022-02-21'and type = 'bootstrap-insert') odtleft join(select data.id,data.province_idfrom edu2077.ods_order_info_incwhere dt = '2022-02-21'and type = 'bootstrap-insert') odon odt.order_id = od.idjoin(select data.alipay_trade_no,data.trade_body,data.order_id,data.payment_type,data.payment_status,data.callback_time,data.callback_contentfrom edu2077.ods_payment_info_incwhere dt = '2022-02-21'and type = 'bootstrap-insert'and data.callback_time is not null) pion od.id = pi.order_id;select * from dwd_trade_pay_detail_suc_inc;

P058

--9.5 交易域支付成功事务事实表
-- (2)每日装载
insert overwrite table edu2077.dwd_trade_pay_detail_suc_incpartition (dt = '2022-02-22')
select odt.id,od.id,user_id,course_id,province_id,date_format(create_time, 'yyyy-MM-dd') date_id,alipay_trade_no,trade_body,payment_type,payment_status,callback_time,callback_content,origin_amount,coupon_reduce,final_amount
from (select data.id,data.order_id,data.user_id,data.course_id,data.origin_amount,data.coupon_reduce,data.final_amount,data.create_timefrom edu2077.ods_order_detail_incwhere (dt = '2022-02-22' or dt = date_add('2022-02-22', -1))and (type = 'insert' or type = 'bootstrap-insert')) odtleft join(select data.id,data.province_idfrom edu2077.ods_order_info_incwhere (dt = '2022-02-22' or dt = date_add('2022-02-22', -1))and (type = 'insert' or type = 'bootstrap-insert')) odon odt.order_id = od.idjoin(select data.alipay_trade_no,data.trade_body,data.order_id,data.payment_type,data.payment_status,data.callback_time,data.callback_contentfrom edu2077.ods_payment_info_incwhere dt = '2022-02-22'and type = 'update'and array_contains(map_keys(old), 'callback_time')) pion od.id = pi.order_id;

P059

9.6 流量域页面浏览事务事实表

P060

9.7 流量域启动事务事实表

P061

9.8 流量域动作事务事实表

9.9 流量域曝光事务事实表

9.10 流量域错误事务事实表

P062

9.11 互动域收藏事务事实表

P063

9.12 互动域章节评价事务事实表

9.13 互动域课程评价事务事实表

P064

9.14 考试域答卷事务事实表

9.15 考试域答题事务事实表

P065

9.16 学习域播放周期快照事实表

(1)首日装载

P066

9.16 学习域播放周期快照事实表

(2)每日装载

P067

9.17 学习域播放事务事实表

P068

9.18 用户域用户注册事务事实表

P069

9.19 用户域用户登录事务事实表

P070

9.20 数据装载脚本

9.20.1 首日装载脚本

9.20.2 每日装载脚本

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试技术分享丨遇到bug怎么分析?

为什么定位问题如此重要&#xff1f; 可以明确一个问题是不是真的“bug” 很多时候&#xff0c;我们找到了问题的原因&#xff0c;结果发现这根本不是bug。原因明确&#xff0c;误报就会降低 多个系统交互&#xff0c;可以明确指出是哪个系统的缺陷&#xff0c;防止“踢皮球…

Jenkins自动化部署-Jenkins的安装

首先我们需要安装docker 安装 yum-utils包 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken 设置镜像地址 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce…

Midjourney 完整版教程(从账号注册到设计应用)

目录 一、Midjourney 介绍 二、Midjourney 的AI出图示例 三、手把手教你上手Midjourney 1、账号&初始化 1.1 账号注册登录 1.2 账号付费 1.3 账号初始化 2、Midjourney的基础设置 3、Midjourney 出图步骤。 (一)直接描述出图 (二)垫图生图。 4、Midjourney的…

squid服务器

目录 squid初识 安装squid代理 常用命令 主要配置文件 正向代理 环境配置 linux服务器设置 windows客户端设置 反向代理 环境配置 在web服务器配置服务 linux服务器配置 squid初识 含义&#xff1a;squid cache是一个流行的自由软件&#xff08;GNU通用公共许可证…

Docker 安装rabbitmq:3.12-management

拉取镜像&#xff1a; docker pull rabbitmq:3.12-management mkdir -p /usr/local/rabbitmq chmod 777 /usr/local/rabbitmq docker run -id --restartalways --namerabbitmq -v /usr/local/rabbitmq:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_U…

Docker容器学习:搭建ownCloud个人网盘

目录 前提环境 拉取镜像 创建容器 创建mysql容器&#xff1a; 创建OwnCloud容器&#xff0c;并连接到数据库&#xff1a; 创建Nginx容器&#xff1a; 配置nignx 前提环境 基于Centos7.9版本环境安装Docker-ce&#xff1a;24.0.5 拉取镜像 docker pull mysql:5.6 dock…

【C++入门】new和delete(C/C++内存管理)

目录 1.C/C内存分布2.C语言中动态内存管理方式3.C内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型 4.operator new与operator delete函数5.new和delete的实现原理5.1内置类型5.2自定义类型 6.malloc/free和new/delete的区别7.定位new表达式&#xff08;了解…

024:vue中动态添加ref,通过ref更改css

第024个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

【日常积累】Linux中vi/vim的使用

概述 vim是由vi发展演变过来的文本编辑器&#xff0c;因其具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能&#xff0c;由于其功能相比vi来说更加强大&#xff0c;所以在实际工作中的使用更加广泛。 vim工作模式 Vim具有多种工作模式&#xff0c;常用的工作模式有&…

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

Midjourney API 的对接和使用

“ 阅读本文大概需要 4 分钟。 ” 在人工智能绘图领域&#xff0c;想必大家听说过 Midjourney 的大名吧。 Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作&#xff0c;只要简单输入绘图指令&#xff0c;这个神奇的工具就能在瞬间为我们呈现出对应的图像。无…

VUE笔记(一)初识vue

一、vue的简介 1、什么是vue 官网地址:Vue.js Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。 构建用户界面&#xff1a;之前在学习vue之前通过原生js对DOM操作进行构建用户界面的 使用原生js构建用户界面的不足 - 没有规范&#xff0c…

Kubernetes(K8S)使用PV和PVC做存储安装mysql

Kubernetes使用PV和PVC做存储安装mysql 环境准备什么是PV和PVC环境准备配置nfs安装nfs配置nfs服务端 创建命名空间配置pv和pvcpv的yaml文件pvc的yaml文件 部署mysql创建mysql的root密码的secret创建mysql部署的yaml部署mysql链接mysql外部链接内部链接 环境准备 首先你需要一个…

git 基础入门

Git基础入门 Git是一个分布式 版本管理系统&#xff0c;用于跟踪文件的变化和协同开发。 版本管理&#xff1a;理解成档案馆&#xff0c;记录开发阶段各个版本 分布式&集中式 分布式每个人都有一个档案馆&#xff0c;集中式只有一个档案馆。分布式每人可以管理自己的档案…

HodlSoftware-免费在线PDF工具箱 加解密PDF 集成隐私保护功能

HodlSoftware是什么 HodlSoftware是一款免费在线PDF工具箱&#xff0c;集合编辑 PDF 的简单功能&#xff0c;可以对PDF进行加解密、优化压缩PDF、PDF 合并、PDF旋转、PDF页面移除和分割PDF等操作&#xff0c;而且工具集成隐私保护功能&#xff0c;文件只在浏览器本地完成&…

SQLI-labs-第一关

知识点&#xff1a;单引号字符型注入 思路&#xff1a; 1、根据提示&#xff0c;为get注入&#xff0c;在url中输入内容 2、判断注入点 输入?id1&#xff0c;显示数据库语句错误&#xff0c;说明这里存在sql注入漏洞 输入?id1‘ and 11 -- &#xff0c;回显正常&#xff0c…

webpack5(一)

什么是webpack webpack是一个静态资源打包工具&#xff0c;它会以一个或者多个文件作为打包的入口&#xff0c;将整个项目的所有文件编译组合成一个或多个文件输出出去。输出的文件就是编译好的文件&#xff0c;可以在浏览器端运行。一般将 webpack 输出的文件称为 bandle 。 …

Linux操作系统--网络配置(2)

在上一次课程中,我们对Linux课程中的网络有了一个了解,下面我们来看看如何配置网络IP。 1.配置网络IP地址 在Linux操作系统中,比如搭建集群,这一个时候如果使用DHCP实现动态IP的分配,那么如果需要访问管理其中一个节点操作时候,就需要通过其IP访问。这一个时候还得去查看…

RabbitMQ死信队列

RabbitMQ死信队列 1、过期时间TTL 过期时间TTL表示可以对消息设置预期的时间&#xff0c;在这个时间内都可以被消费者接收获取&#xff1b;过了之后消息将自动被 删除。RabbitMQ可以对消息和队列设置TTL&#xff0c;目前有两种方法可以设置&#xff1a; 第一种方法是通过队列…

广汽埃安,新能源扛把子?继比亚迪、理想之后实现正“盈利”

根据广汽集团日前披露的2023年半年度报告&#xff0c;广汽埃安在今年的六七月份连续两个月实现盈利&#xff0c;成为继比亚迪、理想之后&#xff0c;第三家实现盈利的国产新能源汽车品牌。这一成绩进一步表明广汽埃安在国内新能源汽车市场的竞争力以及其持续增长的势头。报告显…