写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.csdn.net/
尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影。我希望在最美的年华,做最好的自己

        本篇博客,博主为大家带来的是大数据实战【千亿级数仓】的阶段六,也就是最后一个阶段。

在这里插入图片描述

文章目录

    • 用户行为日志
      • 1 .日志数据格式
      • 2 .数据仓库-ETL处理
        • 点击流概念
        • 点击流模型pageviews
      • 3. 数据入库
        • 1. 创建ODS层数据表
          • 1.1 原始日志数据表
          • 1.2 点击流模型
          • 1.3 点击流visit模型表


        通过在阶段一就已经透露出的目标,我们再来回顾一下该阶段我们需要实现哪些内容。

  • 用户浏览记录整理分析(点击流)

        确定了我们所需要实现的是一个关于用户点击流数据处理的一个功能,那就让我们愉快地往下看吧~
在这里插入图片描述

用户行为日志

1 .日志数据格式

日志数据内容样例

f5dd685d-6b83-4e7d-8c37-df8797812075 222.68.172.190 - - 2018-11-01 14:34:57 "GET /images/my.jpg HTTP/1.1" 200 19939 "http://www.angularjs.cn/A00n" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"

字段解析:

  1. 用户id信息-uid: f5dd685d-6b83-4e7d-8c37-df8797812075
  2. 访客ip地址: 222.68.172.190
  3. 访客用户信息: - -
  4. 请求时间:2018-11-01 14:34:57
  5. 请求方式:GET
  6. 请求的url:/images/my.jpg
  7. 请求所用协议:HTTP/1.1
  8. 响应码:200
  9. 返回的数据流量:19939
  10. 访客的来源url:http://www.angularjs.cn/A00n
  11. 访客所用浏览器:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36

注意: 所有的数据字段之间的分隔符为空格

2 .数据仓库-ETL处理

点击流概念

        点击流(Click Stream)是指用户在网站上持续访问的轨迹。注重用户浏览网站的整个流程。用户对网站的每次访问包含了一系列的点击动作行为,这些点击行为数据就构成了点击流数据(Click Stream Data),它代表了用户浏览网站的整个流程

        点击流和网站日志是两个不同的概念,点击流是从用户的角度出发,注重用户浏览网站的整个流程;而网站日志是面向整个站点,它包含了用户行为数据、服务器响应数据等众多日志信息,我们通过对网站日志的分析可以获得用户的点击流数据。

        点击流模型完全是业务模型,相关概念由业务指定而来。由于大量的指标统计从点击流模型中更容易得出,所以在预处理阶段,可以使用spark程序来生成点击流模型的数据。

        在点击流模型中,存在着两种模型数据:PageViewsVisits
        

点击流模型pageviews

        Pageviews模型数据专注于用户每次会话(session)的识别,以及每次session内访问了几步每一步的停留时间

        在日志数据分析中,通常把前后两条访问记录时间差在30分钟以内算成一次会话。如果超过30分钟,则把下次访问算成新的会话开始

大致步骤如下:

  • 在所有访问日志中找出该用户的所有访问记录
  • 把该用户所有访问记录按照时间正序排序
  • 计算前后两条记录时间差是否为30分钟
  • 如果小于30分钟,则是同一会话session的延续
  • 如果大于30分钟,则是下一会话session的开始
  • 用前后两条记录时间差算出上一步停留时间
  • 最后一步和只有一步的 业务默认指定页面停留时间60s

3. 数据入库

1. 创建ODS层数据表

1.1 原始日志数据表
drop table if exists itcast_ods.ods_weblog_origin;
create table itcast_ods.ods_weblog_origin(valid Boolean,  remote_addr string,  remote_user string,time_local string,request string,status string,body_bytes_sent string,http_referer string,http_user_agent string,guid string)partitioned by (dt string) STORED AS PARQUET;

对应的字段

  valid Boolean,      		--判断数据是否合法remote_addr string,  		--记录客户端的ip地址remote_user string,		--记录客户端用户名称,忽略属性"-"time_local string,		--记录访问时间与时区request string,			--记录请求的url与http协议status string,			--记录请求状态;成功是200body_bytes_sent string,	--记录发送给客户端文件主体内容大小http_referer string,		--用来记录从那个页面链接访问过来的http_user_agent string,	--记录客户浏览器的相关guid string)				--用户id信息

注意事项:

parquet中字段数据类型要与hive表字段类型保持一致!!
1.2 点击流模型
drop table if exists itcast_ods.ods_click_pageviews;
create table itcast_ods.ods_click_pageviews(
session string,
remote_addr string,
time_local string,
request string,
visit_step int,
page_staylong string,
http_referer string,
http_user_agent string,
body_bytes_sent string,
status string)
partitioned by (dt string)
STORED AS PARQUET;

对应的字段

session string,         //session
remote_addr string,     //ip地址
time_local string,      //访问时间
request string,         //请求路径
visit_step int,         //访问第几个页面
page_staylong string,   //停留时长
http_referer string,    //用来记录从那个页面链接访问过来的
http_user_agent string, //记录客户浏览器的相关
body_bytes_sent string, //记录发送给客户端文件主体内容大小
status string           //状态//用户ID
1.3 点击流visit模型表
drop table if exist itcast_ods.ods_click_stream_visit;
create table itcast_ods.ods_click_stream_visit(
session   string,
remote_addr string,
inTime   string,
outTime   string,
inPage   string,
outPage   string,
referal   string,
pageVisits  int)
partitioned by (dt string)
STORED AS PARQUET;

对应的字段

session   string,    //session
remote_addr string,  //IP地址
inTime   string,     //进入时间
outTime   string,    //离开时间
inPage   string,     //进入的页面
outPage   string,    //离开的页面
referal   string,    //用来记录从那个页面链接访问过来的
pageVisits  int)     //访问页面数量

创建好了表之后,接下来我们需要对数据进行处理了。为了方便大家理解,如何将原始的数据通过不同的预处理,将数据分别写入到ods的3个不同功能的表中,送上一张图来帮助大家理清楚这个流程。

在这里插入图片描述
接下来奉上完整的代码,

object ClicklogApp {// 程序入口def main(args: Array[String]): Unit = {val pages: mutable.HashSet[String] = new mutable.HashSet[String]()//初始化静态资源路径集合def initlizePages(): Unit = {pages.add("/about")pages.add("/black-ip-list/")pages.add("/cassandra-clustor/")pages.add("/finance-rhive-repurchase/")pages.add("/hadoop-family-roadmap/")pages.add("/hadoop-hive-intro/")pages.add("/hadoop-zookeeper-intro/")pages.add("/hadoop-mahout-roadmap/")}/*1、对数据进行预处理,过滤掉无效的数据,将有效的数据写入到hive表*/// 1. 初始化 spark sessionval spark: SparkSession = SparkSession.builder().appName("Clicklog").master("local[*]").getOrCreate()// 获取到SparkContextval sc: SparkContext = spark.sparkContext// 设置日志级别sc.setLogLevel("WARN")// 2. 读取数据val logDatas: RDD[String] = sc.textFile("E://2020大数据新学年//BigData//项目//0519//access.log.20181101.dat_new.bak")// 3. 将每一条数据转换成WebLogBeanval webLogBeanRDD: RDD[WebLogBean] = logDatas.map(WebLogBean(_))// 4. 对数据进行过滤(删除无效数据)val activeWebLogBeans: RDD[WebLogBean] = webLogBeanRDD.filter(webLogBean => {// 若bean不为空,并且数据有效,那么保留该数据。反之删除数据if (webLogBean != null && webLogBean.valid) {true} else {false}})// 初始化静态数据initlizePages()// 5. 过滤静态数据val noStaticActiveWebLogBeans: RDD[WebLogBean] = activeWebLogBeans.filter(activeWebLogBean => {// 静态数据中包含用户访问的路径,表示这个数据是无效的if (pages.contains(activeWebLogBean.request)) {false} else {// 表示数据有效true}})// 导入隐式转换import spark.implicits._// 6. WebLogBean 转换成 WebLogBeanCase --> 因为WebLogBeanCase 的结构与最终存储数据的表结构相同val weblogBeanCaseRDD: RDD[WeblogBeanCase] = noStaticActiveWebLogBeans.map(webLogBean => {WeblogBeanCase(webLogBean.valid,webLogBean.remote_addr,webLogBean.remote_user,webLogBean.time_local,webLogBean.request,webLogBean.status,webLogBean.body_bytes_sent,webLogBean.http_referer,webLogBean.http_user_agent,webLogBean.guid)})//    // 7. 将数据写入到hive表
//    val weblogBeanCaseDF: DataFrame = weblogBeanCaseRDD.toDF()
//
//
//    // 将数据写入到HDFS
//    weblogBeanCaseDF.write.mode("overwrite").parquet("hdfs://node01:8020/user/hive/warehouse/itcast_ods.db/ods_weblog_origin/dt=20191212")/* 下面是点击流模型的计算 *///1. 根据用户 ID 对数据进行分组val userWebLogList: RDD[(String, Iterable[WeblogBeanCase])] = weblogBeanCaseRDD.groupBy(weblogBeanCase=>weblogBeanCase.guid)//2. 得到的数据是一个用户的数据都在一起,按照浏览的时间排序 -》  某一个用户浏览的顺序数据val pageViewsBeanCaseRDD: RDD[PageViewsBeanCase] = userWebLogList.flatMap(oneUserWebLog => {// 一个用户的数据// 获取用户的 useIdval userId: String = oneUserWebLog._1// 获取到用户的浏览记录(排好序的记录)val webLogList: List[WeblogBeanCase] = oneUserWebLog._2.toList.sortBy(_.time_local)// 初始化Sessionvar session: String = UUID.randomUUID().toString// 初始化用户访问的第几步var setp: Int = 1//初始化存储PageViewsBeanCase的listvar pageViewsBeanCaseList: ListBuffer[PageViewsBeanCase] = ListBuffer[PageViewsBeanCase]()//导入隐式转化,下面需要使用到continue和breakimport scala.util.control.Breaks._//3. 遍历每个用户的数据for (num <- 0 until (webLogList.size - 1)) {// 获取当前的浏览记录var cruurentWebLog: WeblogBeanCase = webLogList(num)// 3.1 数据量可能为一条,浏览时间默认为60sif (webLogList.size == 1) {// 封装PageViewsBeanCaseval pageViewsBeanCase: PageViewsBeanCase = PageViewsBeanCase(session,cruurentWebLog.remote_addr,cruurentWebLog.time_local,cruurentWebLog.request,setp,60 + "",cruurentWebLog.http_referer,cruurentWebLog.http_user_agent,cruurentWebLog.body_bytes_sent,cruurentWebLog.status,cruurentWebLog.guid )pageViewsBeanCase// 将刚计算的  pageViewBeanCase 保存到PageViewsBeanCaseList【最终写入到HDFS】pageViewsBeanCaseList += pageViewsBeanCase//重新生成新的uuidsession = UUID.randomUUID().toString} else {// 若没有进入上面的 if 表示有多条数据// 3.2  数据量有可能是多条   1 2 3 4 5// 先获取第一条数据时间// 若是第一条数据 我们跳过第一天 进入第二个循环 得到第二天数据breakable {if (num == 0) {// num == 0  表示 这是第一天的数据// 跳过第一天break()}// 先获取到上一次记录的时间(因为第一天已经跳过,cruurentWebLog 为第二天条的数据)val upDataTime: String = webLogList(num - 1).time_local// 获取到这一次记录的时间val nextDataTime: String = cruurentWebLog.time_local// 求两个界面的时间差// 第二条数据的时间 - 第一条数据的时间 = 第一个页面的停留时长val diffTime: Long = DateUtil.getTimeDiff(upDataTime, nextDataTime)//获取上一个数据的   WeblogBeanCaseval upWeblogBean: WeblogBeanCase = webLogList(num - 1)if (diffTime < 30 * 60 * 1000) {// 3.2.1 两个数据之间的间隔在30分钟之内// 封装PageViewsBeanCase ,这个PageViewsBeanCase 是第一天数据的PageViewsBeanCaseval beanCase: PageViewsBeanCase = PageViewsBeanCase(session, upWeblogBean.remote_addr, upWeblogBean.time_local, upWeblogBean.request,setp, diffTime + "", upWeblogBean.http_referer, upWeblogBean.http_user_agent, upWeblogBean.body_bytes_sent,upWeblogBean.status, upWeblogBean.guid)// 添加到结果集pageViewsBeanCaseList += beanCase// session不需要更新setp += 1} else {// 3.2.2 两个数据之间的间隔超过30分钟,换另外一个session会话//封装PageViewsBeanCaseval beanCase: PageViewsBeanCase = PageViewsBeanCase(session, upWeblogBean.remote_addr, upWeblogBean.time_local, upWeblogBean.request,setp, 60 + "", upWeblogBean.http_referer, upWeblogBean.http_user_agent, upWeblogBean.body_bytes_sent,upWeblogBean.status, upWeblogBean.guid)//添加到结果集pageViewsBeanCaseList += beanCase//为下一个会话准备数据//session需要更新//重新生成sessionsession = UUID.randomUUID().toString//sept 归1setp = 1}//最后一条数据if (webLogList.size - 1 == num) {//3.3最后一条数据  浏览时间默认60s//封装PageViewsBeanCaseval lastViewsBeanCase: PageViewsBeanCase = PageViewsBeanCase(session, cruurentWebLog.remote_addr, cruurentWebLog.time_local, cruurentWebLog.request,setp, 60 + "", cruurentWebLog.http_referer, cruurentWebLog.http_user_agent, cruurentWebLog.body_bytes_sent,cruurentWebLog.status, cruurentWebLog.guid)//添加到结果集pageViewsBeanCaseList += lastViewsBeanCase}}}}pageViewsBeanCaseList})//每个用户的最终//写入Hive   itcast_ods.ods_click_pageviews//pageViewsBeanCaseRDD.toDF().write.mode("overwrite").parquet("hdfs://node01:8020/user/hive/warehouse/itcast_ods.db/ods_click_pageviews/dt=20191212/")/* 下面是点击流visit模型表的计算 */// 1. 根据session  对数据进行分组val sessionGroupDatas: RDD[(String, Iterable[PageViewsBeanCase])] = pageViewsBeanCaseRDD.groupBy(bean=>bean.session)// 2. 获取到一个session内有哪些页面val visitBeanCaseRDD: RDD[VisitBeanCase] = sessionGroupDatas.map(pageViewsBeanCase => {// 获取到sessionval session: String = pageViewsBeanCase._1// 3. 获取到PageViewsBeanCase的集合,对一个会话内的数据进行排序 [按照步骤排序]val pageViewsBeanCases: List[PageViewsBeanCase] = pageViewsBeanCase._2.toList.sortBy(_.visit_step)// 4. 获取第一个访问页面的数据val firstPageViewsBeanCase: PageViewsBeanCase = pageViewsBeanCases.head// 5. 获取最后一个访问页面数据val lastPageViewsBeanCase: PageViewsBeanCase = pageViewsBeanCases.last// 6. 封装VisitBeanCaseVisitBeanCase(session, firstPageViewsBeanCase.remote_addr, firstPageViewsBeanCase.time_local, lastPageViewsBeanCase.time_local,firstPageViewsBeanCase.request, lastPageViewsBeanCase.request, firstPageViewsBeanCase.htp_referer, pageViewsBeanCases.size)})// 将数据写入到HivevisitBeanCaseRDD.toDF().write.mode("overwrite").parquet("hdfs://node01:8020/user/hive/warehouse/itcast_ods.db/ods_click_stream_visit/dt=20191212/")}}

        在上述所展示的代码中,从数据的读取再到预处理,封装,判断,输出。每一步都经过了大量的思考,严格按照前面分享的思路。更多的细节大家可以参考详细的注释。

        另外,仅凭上面的代码还不能体现出这个任务的难点。我们还需提前准备好两个包,来方便我们在书写正式代码时调用,简化开发。
在这里插入图片描述
        该阶段的代码近期准备上传到GitHub,感兴趣的朋友也可以去博主小站👉Alice的技术栈后台留言哦~

        至此,大数据离线数仓项目就暂告一个段落…后期博主会持续分享关于大数据的项目,敬请期待😎

        如果以上过程中出现了任何的纰漏错误,烦请大佬们指正😅

        受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波🙏

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

相关文章

  1. 小白学冈萨雷斯数字图像处理——第四章:频域处理

    4.1 二维离散傅里叶变换 定义与一维DFT相同,此处不再赘述。 在计算二维傅里叶变换之前,可将f(x,y)*(-1)^(x+y)次,可将原点的变换值移到频谱中心。4.2 在MATLAB中计算并可视化二维DFT 下列函数返回M*N的傅里叶变换;数据原点在左上角,而两个四分之一周期交汇于频率矩形的中心…...

    2024/4/23 15:28:47
  2. 推送——个推

    内容:介绍个推接入及使用步骤如下:1、项目gradle中添加maven库地址//Maven URL地址maven {url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"}2、app.gradle配置依赖dependencies {implementation fileTree(dir: libs, include: [*.jar])imple…...

    2024/4/18 16:15:17
  3. 使用正则的零宽断言替换两个关键词之间的内容

    1.前言 ​ 遇到朋友有一个替换两个关键词之间的关键词的需求,之前也查过怎么做,但文章几乎为零(虽然有零宽断言的文章,但没有把这个需求作为用法明确体现出来)。个人理解的零宽断言的用处就是:“对匹配内容的上下文加以限定且限定的规则不参与匹配结果”。 ​ 前提假设…...

    2024/4/17 2:43:36
  4. 设计模式故事——单例模式

    4 单例模式 场景 附近有一个篮球专卖店太火了,想让小佑给配一个专用的微信客服(可以一对多)给客户解答疑惑,多次强调一个就够。 实现 这个容易,我建立一个客服类,new一个客服专门给他服务。 怎么保证同时只存在一个微信客服呢?客户只要一个,如果存在两个客服,另一个就…...

    2024/4/18 3:41:56
  5. Bugly功能详解:异常上报、APP自更新、热修复

    异常收集上报 集成SDKdependencies {compile com.tencent.bugly:crashreport:latest.release //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.2.0 }在AndroidManifest.xml中添加权限:<uses-permission android:name="android.permissio…...

    2024/5/1 15:15:22
  6. DataWhale-街景字符编码识别比赛记录

    DataWhale-街景字符编码识别比赛记录引言赛题背景计划尝试方向当前进度未完待续... 引言 作为正式参加的第一个CV比赛,打算通过这个来入个门。因为前两天因为私事没来得及跑这个比赛。看小组的讨论,打算先试试已有成功方案,跑通模型,先有个baseline然后逐步优化。 赛题背景…...

    2024/4/17 2:43:54
  7. 如何遍历Map数组

    方法如下:public static void main(String[] args) {//新建Map然后填入数据Map<String, String> map = new HashMap<>();map.put("key_one", "one");map.put("key_two", "two");map.put("key_three", "th…...

    2024/4/17 2:43:54
  8. LeetCode-432:全 O(1) 的数据结构

    一、题目描述class AllOne { private:class Node{public:string str;int num;Node(string s, int n){str = s;num = n;}friend bool operator<(const Node &a, const Node &b){if (a.num != b.num)return a.num < b.num;elsereturn a.str < b.str;}friend boo…...

    2024/4/20 3:46:32
  9. 跑模型的问题总结(一)

    刚开始跑模型遇到了很多问题,感谢大神们的博客,自己对遇到的问题做个小总结~一、tmux的使用:1.新开一个会话---tmux new -s session_name 2.会话里启动进程后,回到原本界面的方法----先按下ctrl+b,然后再单独按d 3.重新回到会话里查看进程的方法:tmux a -t session_name …...

    2024/4/17 23:40:46
  10. 图片打水印

    官网: https://github.com/huangyz0918/AndroidWM三方引入:implementation com.huangyz0918:androidwm:0.2.3private void createWaterMark() {//打文字水印WatermarkText watermarkText = new WatermarkText(editText.getText().toString()).setPositionX(0.5).setPositionY…...

    2024/4/23 15:28:46
  11. 山东科技大学2020年5月18日作业题解

    山东科技大学2020年5月18日作业题解 **题目一:**正方形、长方形、立方体 之二 Description 给出正方形(Square)、长方形(Rectangle)、立方体(Cube)、长方体(Cuboid)的边长,求(表)面积。 正方形、立方体各边相等的,因此只需存储一条边长。 长方形需存储两条边长。 …...

    2024/4/23 15:28:38
  12. 语言切换--国际化

    最常见的就是中英文切换补充:图片也可以做国际化->比如各国国旗(通过drawable-xxx)效果如下:步骤如下:1、res右键,按照下面操作中所需语言即可2、再将之前strings.xml复制到新建的value-en 和 value-zhstrings.xm(zh)<resources><string name="app_name…...

    2024/4/23 15:28:39
  13. Day1 赛题理解

    1 赛题理解 赛题名称:零基础入门CV之街道字符识别 赛题目标:通过这道赛题可以引导大家走入计算机视觉的世界,主要针对竞赛选手上手视觉赛题,提高对数据建模能力。 赛题任务:赛题以计算机视觉中字符识别为背景,要求选手预测街道字符编码,这是一个典型的字符识别问题。 为…...

    2024/4/23 15:28:44
  14. 程序员如何通过造轮子走向人生巅峰

    前言:你所做的事情,也许暂时看不到成果。但不要灰心,你不是没有成长,而是在扎根。程序员圈经常流行的一句话:“不要重复造轮子”。在计算机领域,我们将封装好的组件、库,叫做轮子。因为它可以拿来直接用,直接塞进我们的项目中,就能实现对应的功能。有些同学会问,人家…...

    2024/4/28 9:57:27
  15. Spring Boot 消息队列 Kafka 入门

    1. 概述如果胖友还没了解过分布式消息队列 Apache Kafka ,建议先阅读下艿艿写的 《芋道 Kafka 极简入门》 文章。虽然这篇文章标题是安装部署,实际可以理解成《一文带你快速入门 Kafka》,哈哈哈。考虑这是 Kafka 如何在 Spring Boot 整合与使用的文章,所以还是简单介绍下 K…...

    2024/4/23 15:28:34
  16. 从零开始搭建我的Java Web项目(前后端)

    从零开始搭建我的Java Web项目(前后端)后端环境准备 1)idea 2019.3.3 安装包下载地址:https://download.jetbrains.8686c.com/idea/ideaIU-2019.3.3.exe jar包安装地址:https://pan.baidu.com/s/1JSA4gFIZOF3H3f1yjrwFzA 参考地址:https://www.cnblogs.com/horvey/p/12247…...

    2024/4/23 15:28:36
  17. 一网打尽!!!以太网、局域网、广域网、因特网、互联网与万维网是什么?用来干什么的?它们之间有什么区别?

    前言 相信有些童鞋一直分不清以太网、局域网、广域网、互联网、因特网、万维网这“几张网”的区别,我也是。所以今天我们就来介绍一下它,勇闯盘丝洞,看看这几张网到底是何方妖孽所做!以太网 简介 以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太…...

    2024/4/23 15:28:37
  18. 84天博客之旅感悟,一段时间的小小心得

    今天5月20日,首先祝有情人终成眷属,单身的兄弟姐妹也赶紧努力,早日脱单(虽然我也是单身狗,但是劝告大家,想找对象一定要脸皮厚,主动聊天才有机会,就算不成功也算增加经验,为以后做铺垫,加油兄弟姐妹们,祝早日脱单)。 在今天我也发扬了一次不要脸精神,写了一篇Bli…...

    2024/4/23 15:28:34
  19. 牛客网算法练习--[编程题]俄罗斯方块 java实现

    [编程题]俄罗斯方块热度指数:26960 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M算法知识视频讲解 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。 荧幕上一共有 n 列,每次都会有一个 …...

    2024/4/23 15:28:31
  20. 刘晓燕核心词汇趣讲笔记-第十四课

    genius天才哥哥牛死了=genius天才evolve volve revolve involve演化、进化 旋转 旋转 卷入revolution革命旋转出来=轮旋上升=evolve演化 一再转=revolve旋转 转到里面=involve卷入 一再旋转=revolution革命reserve serve observe deserve预定 服务 观察,遵守 应该,值得conser…...

    2024/4/23 15:28:32

最新文章

  1. stm32单片机开发二、定时器-内部时钟中断和外部时钟中断、编码器

    定时器本质就是一个计数器 案例&#xff1a;定时器定时中断 内部时钟中断 Timer_Init(); //定时中断初始化 /*** 函 数&#xff1a;定时中断初始化* 参 数&#xff1a;无* 返 回 值&#xff1a;无*/ void Timer_Init(void) {/*开启时钟*/RCC_APB1PeriphClockCmd(RCC…...

    2024/5/6 2:36:23
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 算法打卡day29

    今日任务&#xff1a; 1&#xff09;1005.K次取反后最大化的数组和 2&#xff09;134.加油站 3&#xff09;135.分发糖果 1005.K次取反后最大化的数组和 题目链接&#xff1a;1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 给定一个整数数组 A&…...

    2024/4/30 15:22:05
  4. node.js常用指令

    1、node&#xff1a;启动 Node.js REPL&#xff08;交互式解释器&#xff09;。 node 2、node [文件名]&#xff1a;执行指定的 JavaScript 文件。 node app.js 3、npm init&#xff1a;初始化一个新的 Node.js 项目&#xff0c;生成 package.json 文件。 此命令会创建一个…...

    2024/5/3 8:55:58
  5. 【攻防世界】file_include (PHP伪协议+过滤器)

    打开题目环境&#xff1a; 进行PHP代码审计&#xff0c;发现这是一个文件包含漏洞。 我们尝试利用PHP伪协议中的 php://filter来读取 check.php 中的内容。 构造payload 并提交&#xff1a; 发现payload被过滤掉了&#xff0c;我们就需要尝试使用不同的转换器。 PHP各类转换…...

    2024/5/4 13:52:41
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57