From bef94df4ac619383179c1d725ce5a7411db65a66 Mon Sep 17 00:00:00 2001
From: qian <2269112473@qq.com>
Date: Mon, 16 Dec 2024 22:00:16 +0800
Subject: [PATCH] 2.
---
.idea/workspace.xml | 35 ++-
.../cn/edu/hust/domain/SessionDetail.java | 59 +++-
.../edu/hust/domain/SessionRandomExtract.java | 145 ++++++++-
src/main/java/cn/edu/hust/domain/Task.java | 192 ++++++++++--
.../cn/edu/hust/domain/Top10Category.java | 134 ++++++++-
.../edu/hust/domain/Top10CategorySession.java | 90 ++++--
.../java/cn/edu/hust/jdbc/JDBCHelper.java | 274 ++++++++++--------
7 files changed, 740 insertions(+), 189 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 6f01dc9..284b88f 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,15 +4,14 @@
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
@@ -255,6 +254,12 @@
+
+
+
+
+
+
@@ -441,7 +446,7 @@
-
+
1529592741848
@@ -464,7 +469,14 @@
1734352616873
-
+
+ 1734354342561
+
+
+
+ 1734354342561
+
+
@@ -584,7 +596,8 @@
-
+
+
diff --git a/src/main/java/cn/edu/hust/domain/SessionDetail.java b/src/main/java/cn/edu/hust/domain/SessionDetail.java
index e438d25..c2bf387 100644
--- a/src/main/java/cn/edu/hust/domain/SessionDetail.java
+++ b/src/main/java/cn/edu/hust/domain/SessionDetail.java
@@ -2,23 +2,54 @@ package cn.edu.hust.domain;
import java.io.Serializable;
-public class SessionDetail implements Serializable{
+// SessionDetail类,实现了Serializable接口,这意味着该类的对象可以进行序列化与反序列化操作,
+// 常用于在诸如网络传输、将对象持久化存储到文件等场景下,方便对象的保存和后续恢复使用。
+public class SessionDetail implements Serializable {
+
+ // 任务ID,用于唯一标识某个相关任务,在涉及多任务处理的系统中,通过它可以区分不同任务所对应的会话详情信息。
private Long taskId;
+
+ // 用户ID,用于唯一标识系统中的用户,通过它可以关联到具体是哪个用户产生的该会话相关操作记录。
private Long userId;
+
+ // 会话ID,用于唯一标识一次会话,在整个系统中不同的会话具有不同的该ID值,通过它可以区分不同的会话实例。
+ // (此处变量名拼写有误,应为sessionId,以下按正确语义进行注释说明)
private String sessinId;
+
+ // 页面ID,可能用于标识用户在会话期间访问的具体页面,不同页面具有不同的ID,方便记录用户的页面访问轨迹等情况。
private Long pageid;
+
+ // 操作时间,用于记录用户在会话中执行某个操作(如点击、搜索等)的具体时间点,格式应该遵循一定的时间表示规范(具体取决于业务实现)。
private String actionTime;
+
+ // 搜索关键词,当用户在会话过程中进行搜索操作时,记录用户输入的搜索关键词内容,可用于分析用户的搜索偏好等。
private String searchKeyWord;
+
+ // 点击的商品分类ID,当用户在会话中点击了某个商品分类时,记录该分类对应的唯一标识ID,便于后续统计分析各分类的点击情况。
private Long clickCategoryId;
+
+ // 点击的商品ID,当用户在会话中点击了某个具体商品时,记录该商品对应的唯一标识ID,有助于跟踪用户对具体商品的关注情况。
private Long clickProductId;
+
+ // 下单的商品分类IDs,以某种特定格式(如逗号分隔的字符串等)记录用户在本次会话中下单的所有商品所属分类的ID集合,方便分析不同分类商品的下单情况。
private String orderCategoryIds;
+
+ // 下单的商品IDs,以某种特定格式(如逗号分隔的字符串等)记录用户在本次会话中下单的所有商品的ID集合,用于追踪具体哪些商品被用户下单购买了。
private String orderProductIds;
+
+ // 支付的商品分类IDs,以某种特定格式(如逗号分隔的字符串等)记录用户在本次会话中完成支付的所有商品所属分类的ID集合,可用于统计各分类商品的支付情况。
private String payCategoryIds;
+
+ // 支付的商品IDs,以某种特定格式(如逗号分隔的字符串等)记录用户在本次会话中完成支付的所有商品的ID集合,用于明确具体哪些商品最终被用户成功支付购买了。
private String payProductIds;
+ // 无参构造函数,用于创建SessionDetail类的实例对象,
+ // 当通过默认方式(如:SessionDetail obj = new SessionDetail();)实例化该类对象时会调用此构造函数。
public SessionDetail() {
}
+ // 设置方法,用于一次性设置SessionDetail类对象的所有属性值,
+ // 参数按照顺序依次对应各个属性的值,调用此方法并传入相应数据可对对象的各个属性进行初始化赋值。
public void set(Long taskId, Long userId, String sessinId, Long pageid, String actionTime, String searchKeyWord, Long clickCategoryId, Long clickProductId, String orderCategoryIds, String orderProductIds, String payCategoryIds, String payProductIds) {
this.taskId = taskId;
this.userId = userId;
@@ -34,99 +65,123 @@ public class SessionDetail implements Serializable{
this.payProductIds = payProductIds;
}
+ // 获取任务ID的方法,返回当前SessionDetail对象的任务ID属性值,外部代码可以通过调用此方法获取该对象关联的任务ID信息。
public Long getTaskId() {
return taskId;
}
+ // 设置任务ID的方法,用于给当前SessionDetail对象的任务ID属性赋值,外部代码可以通过调用此方法来更新该对象关联的任务ID信息。
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
+ // 获取用户ID的方法,返回当前SessionDetail对象的用户ID属性值,方便外部代码获取该会话相关操作对应的用户标识。
public Long getUserId() {
return userId;
}
+ // 设置用户ID的方法,用于给当前SessionDetail对象的用户ID属性赋值,可用于更新该会话相关操作对应的用户标识信息。
public void setUserId(Long userId) {
this.userId = userId;
}
+ // 获取会话ID的方法,返回当前SessionDetail对象的会话ID属性值(尽管变量名拼写有误,但此处按功能注释),外部代码可通过此方法获取该会话的唯一标识。
public String getSessinId() {
return sessinId;
}
+ // 设置会话ID的方法,用于给当前SessionDetail对象的会话ID属性赋值(尽管变量名拼写有误,但此处按功能注释),可用于更新该会话的唯一标识信息。
public void setSessinId(String sessinId) {
this.sessinId = sessinId;
}
+ // 获取页面ID的方法,返回当前SessionDetail对象的页面ID属性值,外部代码可以调用此方法获取用户在会话中访问的页面标识信息。
public Long getPageid() {
return pageid;
}
+ // 设置页面ID的方法,用于给当前SessionDetail对象的页面ID属性赋值,外部代码可通过调用此方法来更新用户在会话中访问的页面标识信息。
public void setPageid(Long pageid) {
this.pageid = pageid;
}
+ // 获取操作时间的方法,返回当前SessionDetail对象的操作时间属性值,外部代码通过调用此方法可以获取用户执行操作的具体时间信息。
public String getActionTime() {
return actionTime;
}
+ // 设置操作时间的方法,用于给当前SessionDetail对象的操作时间属性赋值,外部代码可以调用此方法来更新用户执行操作的具体时间信息。
public void setActionTime(String actionTime) {
this.actionTime = actionTime;
}
+ // 获取搜索关键词的方法,返回当前SessionDetail对象的搜索关键词属性值,外部代码调用此方法可获取用户在会话中输入的搜索内容信息。
public String getSearchKeyWord() {
return searchKeyWord;
}
+ // 设置搜索关键词的方法,用于给当前SessionDetail对象的搜索关键词属性赋值,外部代码可通过调用此方法来更新用户在会话中输入的搜索内容信息。
public void setSearchKeyWord(String searchKeyWord) {
this.searchKeyWord = searchKeyWord;
}
+ // 获取点击的商品分类ID的方法,返回当前SessionDetail对象的点击商品分类ID属性值,外部代码通过调用此方法可以获取用户点击商品分类的相关标识信息。
public Long getClickCategoryId() {
return clickCategoryId;
}
+ // 设置点击的商品分类ID的方法,用于给当前SessionDetail对象的点击商品分类ID属性赋值,外部代码可通过调用此方法来更新用户点击商品分类的相关标识信息。
public void setClickCategoryId(Long clickCategoryId) {
this.clickCategoryId = clickCategoryId;
}
+ // 获取点击的商品ID的方法,返回当前SessionDetail对象的点击商品ID属性值,外部代码调用此方法可获取用户点击具体商品的相关标识信息。
public Long getClickProductId() {
return clickProductId;
}
+ // 设置点击的商品ID的方法,用于给当前SessionDetail对象的点击商品ID属性赋值,外部代码可通过调用此方法来更新用户点击具体商品的相关标识信息。
public void setClickProductId(Long clickProductId) {
this.clickProductId = clickProductId;
}
+ // 获取下单的商品分类IDs的方法,返回当前SessionDetail对象的下单商品分类IDs属性值,外部代码调用此方法可获取用户下单商品所属分类的相关标识集合信息。
public String getOrderCategoryIds() {
return orderCategoryIds;
}
+ // 设置下单的商品分类IDs的方法,用于给当前SessionDetail对象的下单商品分类IDs属性赋值,外部代码可通过调用此方法来更新用户下单商品所属分类的相关标识集合信息。
public void setOrderCategoryIds(String orderCategoryIds) {
this.orderCategoryIds = orderCategoryIds;
}
+ // 获取下单的商品IDs的方法,返回当前SessionDetail对象的下单商品IDs属性值,外部代码调用此方法可获取用户下单的具体商品的相关标识集合信息。
public String getOrderProductIds() {
return orderProductIds;
}
+ // 设置下单的商品IDs的方法,用于给当前SessionDetail对象的下单商品IDs属性赋值,外部代码可通过调用此方法来更新用户下单的具体商品的相关标识集合信息。
public void setOrderProductIds(String orderProductIds) {
this.orderProductIds = orderProductIds;
}
+ // 获取支付的商品分类IDs的方法,返回当前SessionDetail对象的支付商品分类IDs属性值,外部代码调用此方法可获取用户支付商品所属分类的相关标识集合信息。
public String getPayCategoryIds() {
return payCategoryIds;
}
+ // 设置支付的商品分类IDs的方法,用于给当前SessionDetail对象的支付商品分类IDs属性赋值,外部代码可通过调用此方法来更新用户支付商品所属分类的相关标识集合信息。
public void setPayCategoryIds(String payCategoryIds) {
this.payCategoryIds = payCategoryIds;
}
+ // 获取支付的商品IDs的方法,返回当前SessionDetail对象的支付商品IDs属性值,外部代码调用此方法可获取用户支付的具体商品的相关标识集合信息。
public String getPayProductIds() {
return payProductIds;
}
+ // 设置支付的商品IDs的方法,用于给当前SessionDetail对象的支付商品IDs属性赋值,外部代码可通过调用此方法来更新用户支付的具体商品的相关标识集合信息。
public void setPayProductIds(String payProductIds) {
this.payProductIds = payProductIds;
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java b/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java
index 17b51a4..8311162 100644
--- a/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java
+++ b/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java
@@ -1,62 +1,183 @@
-package cn.edu.hust.domain;
+package cn.edu.hust.domain; // 定义该类所在的包,包在Java中用于对类进行合理的组织分类,方便在项目里管理不同功能的模块,使得代码结构更加清晰有条理,不同业务相关的类可以放在对应的包下。
-import java.io.Serializable;
+import java.io.Serializable; // 导入Serializable接口,表示该类的实例可以被序列化,序列化后的对象能够方便地进行存储,例如保存到文件中,或者在网络间进行传输,以满足不同的应用场景需求。
+/**
+ * SessionRandomExtract类用于表示从session数据中随机提取的用户行为信息。
+ * 此类实现了Serializable接口,意味着它的对象能够进行序列化操作,这一特性使其在需要持久化存储或者在分布式系统中进行数据传输时非常有用,
+ * 可以方便地将对象状态转换为字节流形式,后续再进行反序列化还原对象状态,便于数据的共享与交互。
+ */
public class SessionRandomExtract implements Serializable {
+
+ // 类中的成员变量,用于存储相关的session信息,以下分别对各个成员变量进行详细说明。
+
+ // 任务ID,用于标识该session提取操作所属的任务,通常与数据处理的任务相关联。
+ // 在存在多个不同的数据处理任务场景下,通过这个任务ID能够明确该条session相关信息是属于哪一个具体任务的,方便后续进行任务相关的统计、分析等操作。
private Long taskId;
+
+ // 用户session的唯一标识符,通常用来表示一次用户访问的会话。
+ // 它能够唯一区分不同的用户访问会话,在分析用户在单次访问过程中的行为、操作顺序以及时间跨度等方面起到关键作用,不同的访问会话具有不同的该标识符。
private String sessionId;
+
+ // session开始时间,记录用户开始浏览的时间。
+ // 这个时间信息对于分析用户的访问习惯、活跃时间段以及不同时间段的行为模式差异等有重要意义,例如可以统计某个时间段内的用户访问量等情况。
private String startTime;
+
+ // 用户在session中使用的搜索关键词,用于分析用户的兴趣。
+ // 通过收集和分析用户输入的搜索关键词,能够了解用户在此次访问过程中关注的内容、想要查找的信息,进而为个性化推荐、搜索引擎优化等业务提供数据支持。
private String searchKeyWords;
+
+ // 用户在该session中点击的类别ID列表,通常用来分析用户的点击行为。
+ // 可以根据这些点击的类别ID了解用户在浏览过程中对哪些类型的内容更感兴趣,比如商品类别、文章分类等,有助于进行用户行为画像、精准营销等相关业务操作。
private String click_category_ids;
+ /**
+ * 默认构造方法。
+ * 其作用是在创建该类的实例时,初始化所有成员变量。
+ * 虽然在这个方法里没有显式地给成员变量赋值初始化操作,但Java会为基本数据类型的成员变量赋予默认值(例如,Long类型默认值为null),
+ * 为对象类型成员变量创建一个初始的空对象引用,以此完成对象的初步构建,方便后续根据具体需求再通过setter方法等设置具体的值。
+ */
public SessionRandomExtract() {
}
+ /**
+ * 通过该构造方法,可以快速地为一个SessionRandomExtract对象设置所有字段的值。
+ * 该方法提供了一种便捷的方式,在实例化对象后能一次性地传入各个属性对应的参数值,完成对象各成员变量的赋值操作,
+ * 避免了逐个调用setter方法来设置值的繁琐过程,提高了对象初始化的效率,尤其在批量创建和初始化对象时很有用。
+ *
+ * @param taskId 任务ID,对应要设置的任务的唯一标识值,用于关联具体的数据处理任务。
+ * @param sessionId 用户session ID,对应要设置的本次用户访问会话的唯一标识符。
+ * @param startTime session开始时间,要设置的用户开始浏览的具体时间值,应符合相应的时间格式要求。
+ * @param searchKeyWords 用户搜索的关键词,要设置的用户在此次会话中输入的用于搜索的关键词内容。
+ * @param click_category_ids 用户点击的类别ID,要设置的用户在本次会话中点击的各类别对应的唯一标识符组成的列表内容,格式应符合业务约定。
+ */
public void set(Long taskId, String sessionId, String startTime, String searchKeyWords, String click_category_ids) {
+ // 将任务ID赋值给类成员变量taskId,使得当前对象的任务ID属性存储传入的对应任务标识值,方便后续通过该属性获取任务相关信息。
this.taskId = taskId;
+
+ // 将sessionId赋值给类成员变量sessionId,完成对当前对象的用户会话标识符的设置,用于唯一确定该次用户访问会话。
this.sessionId = sessionId;
+
+ // 将session的开始时间赋值给startTime,以此确定该对象所代表的用户访问会话的起始时间信息,便于时间相关的业务分析。
this.startTime = startTime;
+
+ // 将搜索的关键词赋值给searchKeyWords,用于记录用户在此次会话中输入的搜索内容,后续可用于分析用户兴趣点。
this.searchKeyWords = searchKeyWords;
+
+ // 将点击的类别ID列表赋值给click_category_ids,方便后续分析用户在该会话中对不同类别内容的点击偏好情况。
this.click_category_ids = click_category_ids;
}
+ // 以下是每个字段的getter和setter方法,用于获取和设置类的成员变量值,它们遵循Java的面向对象编程规范,方便对类的属性进行访问控制和修改操作。
+
+ /**
+ * 获取任务ID。
+ * 外部代码可以通过调用此方法获取当前SessionRandomExtract对象所关联的任务ID,
+ * 以便在业务逻辑处理中,根据任务ID进行进一步的查询、统计或者关联其他相关数据等操作。
+ *
+ * @return 当前对象的任务ID,返回类型为Long,返回的值就是该对象中存储的任务ID的具体数值。
+ */
public Long getTaskId() {
- return taskId;
+ return taskId; // 返回任务ID的值,即将当前对象的taskId成员变量的值返回给调用者。
}
+ /**
+ * 设置任务ID。
+ * 外部代码可以调用此方法来更新当前SessionRandomExtract对象所关联的任务ID,
+ * 例如在数据更新、任务重新分配等业务场景下,需要改变对象对应的任务标识时,就可以使用这个方法进行赋值操作。
+ *
+ * @param taskId 任务ID,参数类型为Long,传入的就是要设置给当前对象的新的任务ID值。
+ */
public void setTaskId(Long taskId) {
- this.taskId = taskId;
+ this.taskId = taskId; // 设置任务ID的值,将传入的taskId参数赋值给当前对象的taskId成员变量。
}
+ /**
+ * 获取session ID。
+ * 调用此方法能够获取当前SessionRandomExtract对象所代表的用户访问会话的唯一标识符,
+ * 便于在诸如查询该会话的详细信息、关联其他相关会话数据等操作中使用这个ID值。
+ *
+ * @return 当前对象的session ID,返回类型为String,返回的是存储在该对象中的session ID的具体内容。
+ */
public String getSessionId() {
- return sessionId;
+ return sessionId; // 返回session ID的值,也就是将当前对象的sessionId成员变量的值返回给调用者。
}
+ /**
+ * 设置session ID。
+ * 该方法可用于外部代码对当前SessionRandomExtract对象所代表的用户访问会话标识符进行更新操作,
+ * 比如在会话标识规则变更、数据整合等情况下,需要改变对象对应的session ID时,可通过此方法来实现。
+ *
+ * @param sessionId session ID,参数类型为String,传入的是要设置给当前对象的新的session ID值。
+ */
public void setSessionId(String sessionId) {
- this.sessionId = sessionId;
+ this.sessionId = sessionId; // 设置session ID的值,将传入的sessionId参数赋值给当前对象的sessionId成员变量。
}
+ /**
+ * 获取session开始时间。
+ * 外部代码调用此方法可以获取当前SessionRandomExtract对象所代表的用户访问会话的开始时间,
+ * 这个数据可以用于分析用户的访问习惯、不同时间段的活跃度等情况,为业务决策提供参考依据,比如是否在特定时间段加大推广力度等。
+ *
+ * @return 当前对象的session开始时间,返回类型为String,返回的值就是该对象中存储的session开始时间的具体内容。
+ */
public String getStartTime() {
- return startTime;
+ return startTime; // 返回session开始时间的值,即将当前对象的startTime成员变量的值返回给调用者。
}
+ /**
+ * 设置session开始时间。
+ * 通过调用此方法,外部代码可以更新当前SessionRandomExtract对象所代表的用户访问会话的开始时间数据,
+ * 例如在时间数据校准、数据录入错误修正等业务场景下,需要修改开始时间的具体内容时,就可以使用这个方法进行赋值操作。
+ *
+ * @param startTime session开始时间,参数类型为String,传入的是要设置给当前对象的新的session开始时间值。
+ */
public void setStartTime(String startTime) {
- this.startTime = startTime;
+ this.startTime = startTime; // 设置session开始时间的值,将传入的startTime参数赋值给当前对象的startTime成员变量。
}
+ /**
+ * 获取用户搜索的关键词。
+ * 外部代码调用此方法可以获取当前SessionRandomExtract对象所代表的用户在访问会话中输入的搜索关键词内容,
+ * 这些关键词能够反映用户的兴趣方向,对于搜索引擎优化、个性化推荐等业务有着重要的参考价值,可基于此为用户提供更精准的服务。
+ *
+ * @return 当前对象的搜索关键词,返回类型为String,返回的值就是该对象中存储的搜索关键词的具体内容。
+ */
public String getSearchKeyWords() {
- return searchKeyWords;
+ return searchKeyWords; // 返回搜索关键词的值,即将当前对象的searchKeyWords成员变量的值返回给调用者。
}
+ /**
+ * 设置用户搜索的关键词。
+ * 通过调用此方法,外部代码可以更新当前SessionRandomExtract对象所代表的用户在访问会话中输入的搜索关键词内容,
+ * 例如在关键词记录错误修正、补充缺失关键词等业务场景下,需要改变搜索关键词的具体内容时,就可以使用这个方法进行赋值操作。
+ *
+ * @param searchKeyWords 用户搜索的关键词,参数类型为String,传入的是要设置给当前对象的新的搜索关键词值。
+ */
public void setSearchKeyWords(String searchKeyWords) {
this.searchKeyWords = searchKeyWords;
+ // 设置搜索关键词的值,将传入的searchKeyWords参数赋值给当前对象的searchKeyWords成员变量。
}
+ /**
+ * 获取用户点击的类别ID列表。
+ * 调用此方法能获取当前SessionRandomExtract对象所代表的用户在访问会话中点击的各类别对应的唯一标识符组成的列表内容,
+ * 它是分析用户点击行为偏好的重要依据,可基于此进一步挖掘用户对不同类型内容的关注度,为精准营销、内容推荐等业务提供支持。
+ *
+ * @return 当前对象的点击类别ID列表,返回类型为String,返回的是存储在该对象中的点击类别ID列表的具体内容。
+ */
public String getClick_category_ids() {
- return click_category_ids;
+ return click_category_ids; // 返回点击类别ID的值,也就是将当前对象的click_category_ids成员变量的值返回给调用者。
}
+ /**
+ * 设置用户点击的类别ID列表。
+ * 外部代码可以利用此方法对当前SessionRandomExtract对象所代表的用户在访问会话中点击的类别ID列表内容进行更新操作,
+ * 例如在点击记录错误修正、新增或删除部分点击类别ID等业务场景下,需要改变点击类别ID列表的具体内容时,可通过该方法来完成赋值。
+ *
+ * @param click_category_ids 用户点击的类别ID列表,参数类型为String,传入的是要设置给当前对象的新的点击类别ID列表值。
+ */
public void setClick_category_ids(String click_category_ids) {
- this.click_category_ids = click_category_ids;
+ this.click_category_ids = click_category_ids; // 设置点击类别ID的值,将传入的click_category_ids参数赋值给当前对象的click_category_ids成员变量。
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/cn/edu/hust/domain/Task.java b/src/main/java/cn/edu/hust/domain/Task.java
index bef5826..2f29301 100644
--- a/src/main/java/cn/edu/hust/domain/Task.java
+++ b/src/main/java/cn/edu/hust/domain/Task.java
@@ -1,92 +1,228 @@
-package cn.edu.hust.domain;
+package cn.edu.hust.domain; // 定义该类所在的包,包在Java项目中起着组织类结构的重要作用,它将功能相关或处于同一业务模块下的类归为一组,有助于清晰地管理不同模块,使整个项目的代码架构更加有条理,便于开发人员查找、理解以及维护各类代码文件。
-import java.io.Serializable;
+import java.io.Serializable; // 导入Serializable接口,表示该类的实例可以被序列化。序列化操作使得对象能够转换为字节流的形式,这对于对象的存储(比如保存到文件中)或者在网络环境下进行传输都非常便利,能够满足如分布式系统、数据持久化等多种应用场景的需求。
-public class Task implements Serializable{
+/**
+ * Task类用于表示任务信息,通常用于任务调度或任务管理的系统中。
+ * 此类实现了Serializable接口,意味着其对象能够被序列化,方便在系统不同组件间进行存储或传输,例如可以将任务对象存储到数据库中以备后续查询恢复使用,或者在分布式任务调度系统的不同节点间传递任务相关信息等。
+ */
+public class Task implements Serializable {
+
+ // 类中的成员变量,用于存储任务的相关信息,以下对每个成员变量进行详细说明,它们共同构成了描述一个任务的关键属性集合。
+
+ // 任务 ID,用于唯一标识任务。
+ // 在整个任务管理系统中,每个任务都有一个独一无二的任务ID,通过它可以准确地定位、查询以及区分不同的任务,方便在任务的调度、监控以及数据统计等操作中使用该标识来关联相应的任务记录。
private Long taskId;
+
+ // 任务名称,表示任务的名称,通常用于描述任务的含义。
+ // 任务名称一般以一种易于理解的方式呈现任务的大致功能或业务目标,方便开发人员、运维人员以及其他相关人员快速知晓该任务是做什么的,例如“数据备份任务”“用户信息同步任务”等。
private String taskName;
+
+ // 创建时间,记录任务的创建时刻。
+ // 这个时间戳记录了任务最初被创建的时间点,对于分析任务的生命周期、追溯任务的起源以及按照时间顺序管理任务历史记录等方面有着重要作用,可以帮助了解任务的整体时间线情况。
private String createTime;
+
+ // 任务开始时间,记录任务实际开始执行的时间。
+ // 与创建时间不同,它标志着任务进入实际执行阶段的具体时刻,在任务调度系统中,通过对比创建时间和开始时间,可以评估任务是否及时启动,以及是否存在延迟等情况,同时也有助于统计任务的执行时长等信息。
private String startTime;
+
+ // 任务结束时间,记录任务执行完成的时间。
+ // 结合开始时间,能够准确计算出任务的执行时长,并且可以根据结束时间判断任务是否按照预期完成,对于任务执行效率的分析、任务执行结果的记录以及后续的任务复盘等操作提供了关键的时间依据。
private String finishTime;
+
+ // 任务类型,用于区分不同类型的任务。
+ // 在复杂的任务管理系统中,可能存在多种不同性质和功能的任务,例如数据处理任务、文件传输任务、定时触发任务等,通过任务类型可以对任务进行分类管理,方便针对不同类型的任务制定相应的调度策略、执行逻辑以及资源分配方案等。
private String taskType;
+
+ // 任务状态,表示任务当前的状态,如 "进行中"、"已完成"、"失败" 等。
+ // 任务状态是实时反映任务进展情况的重要属性,系统可以根据任务执行过程中的不同阶段和结果来更新这个状态,方便监控任务的执行情况,对于任务调度器来说,也可以依据任务状态决定是否需要重新调度、重试或者进行其他后续操作。
private String taskStatus;
+
+ // 任务参数,通常用于存储任务执行时所需要的附加参数,可能是 JSON 格式或其他。
+ // 不同的任务在执行过程中可能需要一些特定的配置信息或者输入数据,这些都可以通过任务参数来传递,例如数据处理任务可能需要指定数据源路径、处理规则等参数,任务参数的灵活性使得任务可以适应多种不同的具体业务需求。
private String taskParam;
+ /**
+ * 默认构造方法。
+ * 其作用是在创建该类的实例时,初始化所有成员变量。
+ * 在Java中,如果没有显式地在构造方法中对成员变量进行赋值,基本数据类型的成员变量会被赋予默认值(例如Long类型默认值为null),对象类型成员变量则初始化为空对象引用,这样就完成了对象的初步构建,后续可根据具体业务场景通过相应的setter方法来设置具体的值。
+ */
public Task() {
}
+ /**
+ * 通过该构造方法,可以快速地为Task对象设置所有字段的值。
+ * 该方法提供了一种便捷的方式,在实例化对象后能一次性地传入各个属性对应的参数值,完成对象各成员变量的赋值操作,避免了逐个调用setter方法来设置值的繁琐过程,尤其在批量创建和初始化任务对象时,能显著提高效率。
+ *
+ * @param taskId 任务ID,对应要设置的任务的唯一标识值,该值在整个任务管理系统中应是唯一的,用于准确区分不同任务。
+ * @param taskName 任务名称,要设置的表示任务含义的名称字符串,应具有清晰的业务描述性。
+ * @param createTime 任务创建时间,要设置的任务最初被创建的时间值,格式需符合系统中时间记录的规范要求,比如常见的"yyyy-MM-dd HH:mm:ss"格式。
+ * @param startTime 任务开始时间,要设置的任务实际开始执行的时间值,同样需遵循相应的时间格式规范,以便后续进行时间相关的计算和分析。
+ * @param finishTime 任务结束时间,要设置的任务执行完成的时间值,也应满足时间格式要求,用于确定任务执行周期等情况。
+ * @param taskType 任务类型,要设置的用于区分任务种类的类型标识字符串,不同类型的任务对应不同的业务逻辑和处理方式。
+ * @param taskStatus 任务状态,要设置的表示任务当前进展情况的状态描述字符串,如 "进行中"、"已完成"、"失败" 等符合业务定义的状态值。
+ * @param taskParam 任务参数,要设置的任务执行时所需的附加参数内容,其格式取决于具体业务需求,可能是JSON格式或者其他自定义的格式等。
+ */
public void set(Long taskId, String taskName, String createTime, String startTime, String finishTime, String taskType, String taskStatus, String taskParam) {
+ // 设置任务 ID,将传入的taskId参数值赋给当前对象的taskId成员变量,使得对象能够持有该任务的唯一标识信息。
this.taskId = taskId;
+
+ // 设置任务名称,把传入的taskName参数值赋予当前对象的taskName成员变量,以此确定该任务在业务层面上的称呼和描述。
this.taskName = taskName;
+
+ // 设置任务创建时间,将传入的createTime参数值赋值给当前对象的createTime成员变量,用于记录任务的起始创建时刻。
this.createTime = createTime;
+
+ // 设置任务开始时间,把传入的startTime参数值赋给当前对象的startTime成员变量,以便明确任务实际开始执行的时间点。
this.startTime = startTime;
+
+ // 设置任务结束时间,将传入的finishTime参数值赋予当前对象的finishTime成员变量,用于标记任务执行完毕的时间情况。
this.finishTime = finishTime;
+
+ // 设置任务类型,把传入的taskType参数值赋给当前对象的taskType成员变量,通过该属性可以区分不同种类的任务。
this.taskType = taskType;
+
+ // 设置任务状态,将传入的taskStatus参数值赋予当前对象的taskStatus成员变量,以此反映任务当前所处的进展状态。
this.taskStatus = taskStatus;
+
+ // 设置任务参数,把传入的taskParam参数值赋给当前对象的taskParam成员变量,为任务执行提供所需的附加配置信息等。
this.taskParam = taskParam;
}
+ // 以下是每个字段的getter和setter方法,用于获取和设置类的成员变量值,遵循Java面向对象编程中对类属性访问控制的规范,方便在不同的业务逻辑中灵活获取和修改任务对象的各个属性。
+
+ /**
+ * 获取任务 ID。
+ * 外部代码可以通过调用此方法获取当前Task对象所关联的任务ID,以便在任务管理相关的业务逻辑处理中,依据该ID进行诸如查询任务详情、关联其他相关任务数据、进行任务调度操作等各种操作。
+ *
+ * @return 当前对象的任务 ID,返回类型为Long,返回的值就是该对象中存储的任务ID的具体数值,可用于在整个任务管理系统中唯一标识该任务。
+ */
public Long getTaskId() {
- return taskId;
+ return taskId; // 返回任务 ID 的值,即将当前对象的taskId成员变量的值返回给调用者。
}
+ /**
+ * 设置任务 ID。
+ * 外部代码可以调用此方法来更新当前Task对象所关联的任务ID,例如在任务ID需要重新分配、修改或者进行数据迁移等业务场景下,需要改变对象对应的任务标识时,就可以使用这个方法进行赋值操作。
+ *
+ * @param taskId 任务 ID,参数类型为Long,传入的就是要设置给当前对象的新的任务ID值,该值应保证在系统内的唯一性。
+ */
public void setTaskId(Long taskId) {
- this.taskId = taskId;
+ this.taskId = taskId; // 设置任务 ID 的值,将传入的taskId参数赋值给当前对象的taskId成员变量。
}
+ /**
+ * 获取任务名称。
+ * 调用此方法能够获取当前Task对象所代表的任务的名称,便于在任务管理界面展示、日志记录以及与其他相关人员沟通任务情况等操作中使用该名称来清晰表述任务内容。
+ *
+ * @return 当前对象的任务名称,返回类型为String,返回的是存储在该对象中的任务名称的具体字符串内容,其应具有明确的业务含义描述功能。
+ */
public String getTaskName() {
- return taskName;
+ return taskName; // 返回任务名称的值,也就是将当前对象的taskName成员变量的值返回给调用者。
}
+ /**
+ * 设置任务名称。
+ * 该方法可用于外部代码对当前Task对象所代表的任务名称进行更新操作,比如在任务功能发生变更、需要重新命名以更准确反映任务内容等情况下,可通过此方法来实现任务名称的修改。
+ *
+ * @param taskName 任务名称,参数类型为String,传入的是要设置给当前对象的新的任务名称值,应符合业务上对任务命名的规范要求。
+ */
public void setTaskName(String taskName) {
- this.taskName = taskName;
+ this.taskName = taskName; // 设置任务名称的值,将传入的taskName参数赋值给当前对象的taskName成员变量。
}
+ /**
+ * 获取任务创建时间。
+ * 外部代码调用此方法可以获取当前Task对象所代表的任务的创建时间,这个时间数据对于分析任务的历史记录、追溯任务的起源以及按照时间顺序梳理任务流程等方面有着重要作用,可作为时间轴上的关键节点参考。
+ *
+ * @return 当前对象的任务创建时间,返回类型为String,返回的值就是该对象中存储的任务创建时间的具体字符串内容,格式通常需符合系统规定的时间表示规范。
+ */
public String getCreateTime() {
- return createTime;
+ return createTime; // 返回任务创建时间的值,即将当前对象的createTime成员变量的值返回给调用者。
}
+ /**
+ * 设置任务创建时间。
+ * 通过调用此方法,外部代码可以更新当前Task对象所代表的任务的创建时间数据,例如在时间记录错误修正、数据同步时需要调整创建时间等业务场景下,就可以使用这个方法进行赋值操作,需确保传入的时间值格式正确。
+ *
+ * @param createTime 任务创建时间,参数类型为String,传入的是要设置给当前对象的新的任务创建时间值,应遵循系统要求的时间格式规范。
+ */
public void setCreateTime(String createTime) {
- this.createTime = createTime;
+ this.createTime = createTime; // 设置任务创建时间的值,将传入的createTime参数赋值给当前对象的createTime成员变量。
}
+ /**
+ * 获取任务开始时间。
+ * 调用此方法能获取当前Task对象所代表的任务的实际开始执行时间,它与创建时间、结束时间等结合起来,可以用于分析任务的执行周期、是否按时启动等情况,对于任务执行效率的评估和监控有着重要意义。
+ *
+ * @return 当前对象的任务开始时间,返回类型为String,返回的是存储在该对象中的任务开始时间的具体字符串内容,格式需符合系统设定的时间表示规则。
+ */
public String getStartTime() {
- return startTime;
+ return startTime; // 返回任务开始时间的值,也就是将当前对象的startTime成员变量的值返回给调用者。
}
+ /**
+ * 设置任务开始时间。
+ * 外部代码可以利用此方法对当前Task对象所代表的任务的开始时间进行更新操作,比如在任务启动时间记录错误、任务因某些原因重新启动等业务场景下,可通过该方法来完成开始时间的赋值修改,需保证时间值格式正确。
+ *
+ * @param startTime 任务开始时间,参数类型为String,传入的是要设置给当前对象的新的任务开始时间值,应符合系统要求的时间格式规范。
+ */
public void setStartTime(String startTime) {
- this.startTime = startTime;
+ this.startTime = startTime; // 设置任务开始时间的值,将传入的startTime参数赋值给当前对象的startTime成员变量。
}
+ /**
+ * 获取任务结束时间。
+ * 此方法用于获取当前Task对象所代表的任务的执行完成时间,结合开始时间等属性,可准确计算出任务的执行时长,并且能依据该时间判断任务是否按预期完成,对于任务执行情况的统计和分析是一个关键的数据点。
+ *
+ * @return 当前对象的任务结束时间,返回类型为String,返回的值就是该对象中存储的任务结束时间的具体字符串内容,格式应符合系统规定的时间表示规范。
+ */
public String getFinishTime() {
- return finishTime;
+ return finishTime; // 返回任务结束时间的值,即将当前对象的finishTime成员变量的值返回给调用者。
}
+ /**
+ * 设置任务结束时间。
+ * 调用该方法可让外部代码更新当前Task对象所代表的任务的结束时间数据,例如在任务执行完毕时间记录错误、任务提前或延迟结束等业务场景影响结束时间统计结果,需要对其数值进行修正时,就可以使用这个方法来赋值。
+ *
+ * @param finishTime 任务结束时间,参数类型为String,传入的是要设置给当前对象的新的任务结束时间值,应遵循系统要求的时间格式规范。
+ */
public void setFinishTime(String finishTime) {
- this.finishTime = finishTime;
+ this.finishTime = finishTime; // 设置任务结束时间的值,将传入的finishTime参数赋值给当前对象的finishTime成员变量。
}
+ /**
+ * 获取任务类型。
+ * 外部代码调用此方法可以获取当前Task对象所代表的任务的类型标识,基于这个类型信息,能够针对不同类型的任务采取相应的处理逻辑、调度策略以及资源分配方式等,方便对任务进行分类管理和差异化操作。
+ *
+ * @return 当前对象的任务类型,返回类型为String,返回的是存储在该对象中的任务类型的具体字符串内容,其对应着不同的任务分类定义。
+ */
public String getTaskType() {
- return taskType;
+ return taskType; // 返回任务类型的值,即将当前对象的taskType成员变量的值返回给调用者。
}
+ /**
+ * 设置任务类型。
+ * 通过调用此方法,外部代码可以更新当前Task对象所代表的任务的类型标识,比如在任务功能发生重大变更导致类型改变、任务分类规则调整等业务场景下,需要改变任务类型的具体内容时,就可以使用这个方法进行赋值操作,应遵循业务上对任务类型定义的规范要求。
+ *
+ * @param taskType 任务类型,参数类型为String,传入的是要设置给当前对象的新的任务类型值,其应符合系统中对任务类型的命名和分类约定。
+ */
public void setTaskType(String taskType) {
- this.taskType = taskType;
+ this.taskType = taskType; // 设置任务类型的值,将传入的taskType参数赋值给当前对象的taskType成员变量。
}
+ /**
+ * 获取任务状态。
+ * 此方法用于获取当前Task对象所代表的任务的当前状态信息,任务状态对于实时监控任务进展、决定后续操作(如是否重试、继续执行还是结束任务等)起着关键作用,不同的状态值对应着不同的任务处理逻辑。
+ *
+ * @return 当前对象的任务状态,返回类型为String,返回的是存储在该对象中的任务状态的具体字符串内容,如 "进行中"、"已完成"、"失败" 等符合业务定义的状态描述。
+ */
public String getTaskStatus() {
- return taskStatus;
- }
-
- public void setTaskStatus(String taskStatus) {
- this.taskStatus = taskStatus;
- }
-
- public String getTaskParam() {
- return taskParam;
- }
-
- public void setTaskParam(String taskParam) {
- this.taskParam = taskParam;
+ return taskStatus; // 返回任务状态的值,即将当前对象的taskStatus成员变量的值返回给调用者。
}
}
+
+/**
+ * 设置任务状态。
+ * 外部代码可以利用此方法对当前Task对象所代表的任务的状态进行更新操作,例如在任务执行
+ **/
\ No newline at end of file
diff --git a/src/main/java/cn/edu/hust/domain/Top10Category.java b/src/main/java/cn/edu/hust/domain/Top10Category.java
index 8b7eac4..552c72a 100644
--- a/src/main/java/cn/edu/hust/domain/Top10Category.java
+++ b/src/main/java/cn/edu/hust/domain/Top10Category.java
@@ -1,61 +1,191 @@
-package cn.edu.hust.domain;
+package cn.edu.hust.domain; // 定义类所在的包,包的作用通常是用于对类进行合理的组织,方便在项目中更好地管理代码模块,使得代码结构更清晰,不同功能的类可以归属到不同的包下。
+/**
+ * Top10Category 类用于表示某一任务(task)下前 10 名的商品类别信息。
+ * 该类的主要用途是封装和管理与商品类别相关的重要统计信息,这些信息对于分析商品各类别在不同行为维度下的表现情况非常有帮助,
+ * 例如可以通过这些数据了解哪些商品类别更受用户关注、哪些更容易促成订单以及实际的支付情况等。
+ * 主要包含了关于商品类别的相关统计信息,涵盖了点击量、订单量和支付量等关键指标,通过这些指标能直观反映商品类别的热度及商业价值等情况。
+ */
public class Top10Category {
+
+ // 类的成员变量,用于存储商品类别的统计信息,以下分别对每个成员变量进行详细说明。
+
+ // 任务 ID,用于唯一标识一个任务,其含义通常与某个特定的数据分析任务相关联,
+ // 在一个存在多个数据分析任务并行或按顺序执行的系统中,通过这个 ID 可以清晰区分不同任务所对应的商品类别统计数据。
private Long taskId;
+
+ // 类别 ID,表示商品类别的唯一标识符,在整个商品分类体系里,每个类别都有一个独一无二的这个 ID,
+ // 方便在数据库存储、查询以及业务逻辑处理中准确地定位和操作特定的商品类别相关数据。
private Long categoryId;
+
+ // 点击量,表示某个类别的商品被点击的总次数,它直观地反映了用户对该商品类别的关注程度,
+ // 点击次数越多,往往意味着该类别商品在展示效果、吸引力等方面表现更好,更能引起用户的兴趣。
private Long clickCount;
+
+ // 订单量,表示某个类别的商品成功下单的总次数,这是衡量该商品类别商业转化能力的一个重要指标,
+ // 说明用户从对该类别商品的浏览、点击等行为进一步转化为实际下单购买的情况,订单量越高,商业价值相对越大。
private Long orderCount;
- private Long payCount;
+ // 支付量,表示某个类别的商品成功支付的总次数,它体现了最终实际完成支付的情况,
+ // 因为下单后可能存在取消订单等情况,支付量更能精准反映该类别商品真正实现交易的情况,是衡量商业收益的关键数据之一。
+ private Long payCount;
+ /**
+ * 默认构造方法。
+ * 其作用是在创建 Top10Category 类的实例时,初始化所有成员变量。
+ * 虽然在这个方法里没有显式地给成员变量赋值初始化操作,但 Java 会为基本数据类型的成员变量赋予默认值(例如,Long 类型默认值为 null),
+ * 为对象类型成员变量创建一个初始的空对象引用,以此完成对象的初步构建,方便后续根据具体需求再通过 setter 方法等设置具体的值。
+ */
public Top10Category() {
}
+ /**
+ * 通过该构造方法,可以快速地为 Top10Category 对象设置所有字段的值。
+ * 该方法提供了一种便捷的方式,在实例化对象后能一次性地传入各个属性对应的参数值,完成对象各成员变量的赋值操作,
+ * 避免了逐个调用 setter 方法来设置值的繁琐过程,提高了对象初始化的效率,尤其在批量创建和初始化对象时很有用。
+ *
+ * @param taskId 任务 ID,对应要设置的任务的唯一标识值。
+ * @param categoryId 类别 ID,对应要设置的商品类别的唯一标识值。
+ * @param clickCount 点击量,要设置的该类别商品的点击总次数。
+ * @param orderCount 订单量,要设置的该类别商品的成功下单总次数。
+ * @param payCount 支付量,要设置的该类别商品的成功支付总次数。
+ */
public void set(Long taskId, Long categoryId, Long clickCount, Long orderCount, Long payCount) {
+ // 设置任务 ID,将传入的 taskId 参数值赋给当前对象的 taskId 成员变量,完成任务 ID 的赋值操作。
this.taskId = taskId;
+
+ // 设置类别 ID,把传入的 categoryId 参数值赋予当前对象的 categoryId 成员变量,实现类别 ID 的赋值。
this.categoryId = categoryId;
+
+ // 设置点击量,将传入的 clickCount 参数值赋值给当前对象的 clickCount 成员变量,以此确定该对象所表示的商品类别的点击次数。
this.clickCount = clickCount;
+
+ // 设置订单量,把传入的 orderCount 参数值赋给当前对象的 orderCount 成员变量,用于明确该商品类别的订单数量情况。
this.orderCount = orderCount;
+
+ // 设置支付量,将传入的 payCount 参数值赋予当前对象的 payCount 成员变量,从而设定该商品类别的支付数量相关信息。
this.payCount = payCount;
}
+ // 以下是每个字段的 getter 和 setter 方法,用于获取和设置类的成员变量值,它们遵循 Java 的面向对象编程规范,方便对类的属性进行访问控制和修改操作。
+
+ /**
+ * 获取任务 ID。
+ * 外部代码可以通过调用此方法获取当前 Top10Category 对象所关联的任务 ID,
+ * 以便在业务逻辑处理中,根据任务 ID 进行进一步的查询、统计或者关联其他相关数据等操作。
+ *
+ * @return 当前对象的任务 ID,返回类型为 Long,返回的值就是该对象中存储的任务 ID 的具体数值。
+ */
public Long getTaskId() {
return taskId;
+ // 返回任务 ID 的值,即将当前对象的 taskId 成员变量的值返回给调用者。
}
+ /**
+ * 设置任务 ID。
+ * 外部代码可以调用此方法来更新当前 Top10Category 对象所关联的任务 ID,
+ * 例如在数据更新、任务重新分配等业务场景下,需要改变对象对应的任务标识时,就可以使用这个方法进行赋值操作。
+ *
+ * @param taskId 任务 ID,参数类型为 Long,传入的就是要设置给当前对象的新的任务 ID 值。
+ */
public void setTaskId(Long taskId) {
this.taskId = taskId;
+ // 设置任务 ID 的值,将传入的 taskId 参数赋值给当前对象的 taskId 成员变量。
}
+ /**
+ * 获取类别 ID。
+ * 调用此方法能够获取当前 Top10Category 对象所代表的商品类别的唯一标识符,
+ * 便于在诸如查询该类别商品的详细信息、关联其他相关商品类别数据等操作中使用这个 ID 值。
+ *
+ * @return 当前对象的类别 ID,返回类型为 Long,返回的是存储在该对象中的类别 ID 的具体数值。
+ */
public Long getCategoryId() {
return categoryId;
+ // 返回类别 ID 的值,也就是将当前对象的 categoryId 成员变量的值返回给调用者。
}
+ /**
+ * 设置类别 ID。
+ * 该方法可用于外部代码对当前 Top10Category 对象所代表的商品类别标识符进行更新操作,
+ * 比如在商品分类体系发生调整、类别合并或者重新编号等情况下,需要改变对象对应的类别 ID 时,可通过此方法来实现。
+ *
+ * @param categoryId 类别 ID,参数类型为 Long,传入的是要设置给当前对象的新的类别 ID 值。
+ */
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
+ // 设置类别 ID 的值,将传入的 categoryId 参数赋值给当前对象的 categoryId 成员变量。
}
+ /**
+ * 获取点击量。
+ * 外部代码调用此方法可以获取当前 Top10Category 对象所代表的商品类别被用户点击的总次数,
+ * 这个数据可以用于分析该类别商品的受关注程度、热度变化等情况,为业务决策提供参考依据,比如是否加大该类别商品的推广力度等。
+ *
+ * @return 当前对象的点击量,返回类型为 Long,返回的值就是该对象中存储的点击量的具体数值。
+ */
public Long getClickCount() {
return clickCount;
+ // 返回点击量的值,即将当前对象的 clickCount 成员变量的值返回给调用者。
}
+ /**
+ * 设置点击量。
+ * 通过调用此方法,外部代码可以更新当前 Top10Category 对象所代表的商品类别的点击量数据,
+ * 例如在统计数据更新、纠正错误数据等业务场景下,需要修改点击量的具体数值时,就可以使用这个方法进行赋值操作。
+ *
+ * @param clickCount 点击量,参数类型为 Long,传入的就是要设置给当前对象的新的点击量值。
+ */
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
+ // 设置点击量的值,将传入的 clickCount 参数赋值给当前对象的 clickCount 成员变量。
}
+ /**
+ * 获取订单量。
+ * 调用此方法能获取当前 Top10Category 对象所代表的商品类别成功下单的总次数,
+ * 它是衡量该类别商品商业转化效果的重要指标之一,业务人员可以根据这个数据评估该类别商品的销售潜力、市场需求等情况。
+ *
+ * @return 当前对象的订单量,返回类型为 Long,返回的是存储在该对象中的订单量的具体数值。
+ */
public Long getOrderCount() {
return orderCount;
+ // 返回订单量的值,也就是将当前对象的 orderCount 成员变量的值返回给调用者。
}
+ /**
+ * 设置订单量。
+ * 外部代码可以利用此方法对当前 Top10Category 对象所代表的商品类别的订单量数据进行更新操作,
+ * 例如在订单数据同步、补录或者调整等业务场景下,需要改变订单量的具体数值时,可通过该方法来完成赋值。
+ *
+ * @param orderCount 订单量,参数类型为 Long,传入的是要设置给当前对象的新的订单量值。
+ */
public void setOrderCount(Long orderCount) {
this.orderCount = orderCount;
+ // 设置订单量的值,将传入的 orderCount 参数赋值给当前对象的 orderCount 成员变量。
}
+ /**
+ * 获取支付量。
+ * 此方法用于获取当前 Top10Category 对象所代表的商品类别成功支付的总次数,
+ * 支付量是反映该类别商品实际交易完成情况的关键数据,对于分析商品的盈利能力、用户购买意愿等方面有着重要作用。
+ *
+ * @return 当前对象的支付量,返回类型为 Long,返回的值就是该对象中存储的支付量的具体数值。
+ */
public Long getPayCount() {
return payCount;
+ // 返回支付量的值,即将当前对象的 payCount 成员变量的值返回给调用者。
}
+ /**
+ * 设置支付量。
+ * 调用该方法可让外部代码更新当前 Top10Category 对象所代表的商品类别的支付量数据,
+ * 比如在支付数据核对、退款等业务场景影响支付量统计结果,需要对支付量数值进行修正时,就可以使用这个方法来赋值。
+ *
+ * @param payCount 支付量,参数类型为 Long,传入的是要设置给当前对象的新的支付量值。
+ */
public void setPayCount(Long payCount) {
this.payCount = payCount;
+ // 设置支付量的值,将传入的 payCount 参数赋值给当前对象的 payCount 成员变量。
}
}
diff --git a/src/main/java/cn/edu/hust/domain/Top10CategorySession.java b/src/main/java/cn/edu/hust/domain/Top10CategorySession.java
index 3e00f82..5009cdb 100644
--- a/src/main/java/cn/edu/hust/domain/Top10CategorySession.java
+++ b/src/main/java/cn/edu/hust/domain/Top10CategorySession.java
@@ -1,52 +1,104 @@
-package cn.edu.hust.domain;
+package cn.edu.hust.domain; // 定义类所在的包,通常用于组织类和管理模块。
-import java.io.Serializable;
+import java.io.Serializable; // 引入 Serializable 接口,表示该类可以被序列化。
-public class Top10CategorySession implements Serializable{
- private Long taskId;
- private Long categoryId;
- private String sessionId;
- private Long clickCount;
+/**
+ * Top10CategorySession 类表示某一任务下某商品类别在用户会话中的点击量统计。
+ * 该类结合了任务、商品类别以及用户会话的信息,通常用于分析某一任务下的商品类别在不同用户会话中的互动情况。
+ *
+ * 属性:taskId, categoryId, sessionId, clickCount
+ */
+public class Top10CategorySession implements Serializable { // 实现 Serializable 接口,使对象可以被序列化
+ private Long taskId; // 任务 ID,唯一标识一个任务,通常与某个数据分析任务相关。
+ private Long categoryId; // 商品类别 ID,表示某个商品类别的唯一标识符。
+ private String sessionId; // 会话 ID,表示用户与平台交互的会话的唯一标识符。
+ private Long clickCount; // 点击量,表示某个商品类别在指定会话中的点击次数。
+
+ /**
+ * 默认构造方法。
+ * 用于创建 Top10CategorySession 类的实例时,初始化所有成员变量为默认值。
+ */
public Top10CategorySession() {
}
+ /**
+ * 通过该构造方法,快速地为 Top10CategorySession 对象设置所有字段的值。
+ * @param taskId 任务 ID
+ * @param categoryId 商品类别 ID
+ * @param sessionId 会话 ID
+ * @param clickCount 点击量
+ */
public void set(Long taskId, Long categoryId, String sessionId, Long clickCount) {
- this.taskId = taskId;
- this.categoryId = categoryId;
- this.sessionId = sessionId;
- this.clickCount = clickCount;
+ this.taskId = taskId; // 设置任务 ID。
+ this.categoryId = categoryId; // 设置商品类别 ID。
+ this.sessionId = sessionId; // 设置会话 ID。
+ this.clickCount = clickCount; // 设置点击量。
}
+ // 以下是每个字段的 getter 和 setter 方法,用于获取和设置类的成员变量值。
+
+ /**
+ * 获取任务 ID。
+ * @return 当前对象的任务 ID。
+ */
public Long getTaskId() {
- return taskId;
+ return taskId; // 返回任务 ID 的值。
}
+ /**
+ * 设置任务 ID。
+ * @param taskId 任务 ID。
+ */
public void setTaskId(Long taskId) {
- this.taskId = taskId;
+ this.taskId = taskId; // 设置任务 ID 的值。
}
+ /**
+ * 获取商品类别 ID。
+ * @return 当前对象的商品类别 ID。
+ */
public Long getCategoryId() {
- return categoryId;
+ return categoryId; // 返回商品类别 ID 的值。
}
+ /**
+ * 设置商品类别 ID。
+ * @param categoryId 商品类别 ID。
+ */
public void setCategoryId(Long categoryId) {
- this.categoryId = categoryId;
+ this.categoryId = categoryId; // 设置商品类别 ID 的值。
}
+ /**
+ * 获取会话 ID。
+ * @return 当前对象的会话 ID。
+ */
public String getSessionId() {
- return sessionId;
+ return sessionId; // 返回会话 ID 的值。
}
+ /**
+ * 设置会话 ID。
+ * @param sessionId 会话 ID。
+ */
public void setSessionId(String sessionId) {
- this.sessionId = sessionId;
+ this.sessionId = sessionId; // 设置会话 ID 的值。
}
+ /**
+ * 获取点击量。
+ * @return 当前对象的点击量。
+ */
public Long getClickCount() {
- return clickCount;
+ return clickCount; // 返回点击量的值。
}
+ /**
+ * 设置点击量。
+ * @param clickCount 点击量。
+ */
public void setClickCount(Long clickCount) {
- this.clickCount = clickCount;
+ this.clickCount = clickCount; // 设置点击量的值。
}
}
diff --git a/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java b/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java
index c414e52..00d4d2d 100644
--- a/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java
+++ b/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java
@@ -3,61 +3,85 @@ package cn.edu.hust.jdbc;
import cn.edu.hust.conf.ConfigurationManager;
import cn.edu.hust.constant.Constants;
-import java.sql.*;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
+// JDBCHelper类是一个用于管理数据库连接以及执行数据库相关操作的工具类,
+// 它结合了单例模式和连接池的思想,方便在整个应用程序中统一获取数据库连接并执行SQL语句等操作。
public class JDBCHelper {
- private static JDBCHelper instance=new JDBCHelper();
- //使用阻塞队列
- private LinkedBlockingQueue queue=new LinkedBlockingQueue();
- static{
+
+ // 采用单例模式,保证整个应用程序中只有一个JDBCHelper实例存在,instance为该类的唯一实例对象。
+ private static JDBCHelper instance = new JDBCHelper();
+
+ // 使用LinkedBlockingQueue作为阻塞队列来存放数据库连接对象,实现连接池的功能。
+ // 连接池中的连接可以被多个地方获取并使用,使用完后再归还到队列中供后续使用。
+ private LinkedBlockingQueue queue = new LinkedBlockingQueue();
+
+ // 静态代码块,在类加载时执行,用于加载数据库驱动。
+ // 通过从配置管理器(ConfigurationManager)中获取数据库驱动的配置信息(Constants.JDBC_DRIVER),
+ // 调用Class.forName方法加载驱动,这样后续才能通过DriverManager建立数据库连接。
+ static {
try {
Class.forName(ConfigurationManager.getProperty(Constants.JDBC_DRIVER));
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
e.printStackTrace();
}
}
+
/**
- * 在构造函数创建数据库连接池
- * 结合单例模式,确保数据库连接池单例
+ * 私有构造函数,遵循单例模式的设计原则,防止外部直接通过构造函数创建多个实例。
+ * 在构造函数内部,创建数据库连接池,根据配置文件中获取的数据源大小(Constants.JDBC_ACTIVE),
+ * 循环创建指定数量的数据库连接,并将这些连接放入到阻塞队列(queue)中。
+ * 每个连接通过DriverManager.getConnection方法创建,使用从配置管理器获取的数据库连接URL、用户名和密码等信息。
*/
- private JDBCHelper(){
- int dataSourceSize=ConfigurationManager.getInteger(Constants.JDBC_ACTIVE);
- String url=ConfigurationManager.getProperty(Constants.JDBC_URL);
- String username=ConfigurationManager.getProperty(Constants.JDBC_USERNAME);
- String passward=ConfigurationManager.getProperty(Constants.JDBC_PSSWORD);
- try
- {
- for(int i=0;i params)
- {
- Connection connection=null;
- PreparedStatement statement=null;
- int[] res=null;
- try
- {
- connection=getConnection();
- statement=connection.prepareStatement(sql);
- //1.取消自动提交
+ public int[] excuteBatch(String sql, List