Top10CategorySession完成

main
oeljeklaus-you 7 years ago
parent 32fcafb5f0
commit 9e9e1e410d

@ -2,14 +2,12 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategoryDao.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategoryDaoImpl.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Top10Category.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategorySessionDao.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategorySessionDaoImpl.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Top10CategorySession.java" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" />
<change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/CategorySortKey.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/CategorySortKey.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
@ -26,166 +24,37 @@
<file leaf-file-name="UserVisitAnalyze.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="353">
<caret line="596" column="74" lean-forward="false" selection-start-line="596" selection-start-column="74" selection-end-line="596" selection-end-column="74" />
<state relative-caret-position="535">
<caret line="935" column="0" lean-forward="true" selection-start-line="935" selection-start-column="0" selection-end-line="935" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#21213#21235#0" expanded="true" />
<element signature="e#23066#23081#0" expanded="true" />
<element signature="e#28680#28697#0" expanded="true" />
<element signature="e#29261#29593#0" expanded="true" />
<element signature="e#29592#29593#0" expanded="true" />
<element signature="e#29711#31113#0" expanded="true" />
<element signature="e#30017#30037#0" expanded="true" />
<element signature="e#31112#31113#0" expanded="true" />
<element signature="e#31862#32728#0" expanded="true" />
<element signature="e#32727#32728#0" expanded="true" />
<element signature="e#32999#33014#0" expanded="true" />
<element signature="e#34526#35330#0" expanded="true" />
<element signature="e#35329#35330#0" expanded="true" />
<element signature="e#35417#36234#0" expanded="true" />
<element signature="e#36233#36234#0" expanded="true" />
<element signature="e#36319#37134#0" expanded="true" />
<element signature="e#37133#37134#0" expanded="true" />
<element signature="e#37347#37731#0" expanded="true" />
<element signature="e#37730#37731#0" expanded="true" />
<element signature="e#37828#38532#0" expanded="true" />
<element signature="e#38090#38110#0" expanded="true" />
<element signature="e#38531#38532#0" expanded="true" />
<element signature="e#38630#38821#0" expanded="true" />
<element signature="e#38820#38821#0" expanded="true" />
<element signature="e#39052#39435#0" expanded="true" />
<element signature="e#39434#39435#0" expanded="true" />
<element signature="e#39536#40246#0" expanded="true" />
<element signature="e#39798#39818#0" expanded="true" />
<element signature="e#40245#40246#0" expanded="true" />
<element signature="e#40348#40539#0" expanded="true" />
<element signature="e#40538#40539#0" expanded="true" />
<element signature="e#40773#41077#0" expanded="true" />
<element signature="e#41076#41077#0" expanded="true" />
<element signature="e#41174#41480#0" expanded="true" />
<element signature="e#41479#41480#0" expanded="true" />
<element signature="e#41582#41773#0" expanded="true" />
<element signature="e#41772#41773#0" expanded="true" />
<element signature="e#45463#45830#0" expanded="true" />
<element signature="e#45751#45773#0" expanded="true" />
<element signature="e#45829#45830#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionAggrStat.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionAggrStat.java">
<file leaf-file-name="MockData.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="443">
<caret line="114" column="27" lean-forward="false" selection-start-line="114" selection-start-column="27" selection-end-line="114" selection-end-column="27" />
<state relative-caret-position="1615">
<caret line="100" column="18" lean-forward="false" selection-start-line="100" selection-start-column="18" selection-end-line="100" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionAggrStatDaoImpl.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="346">
<caret line="40" column="60" lean-forward="false" selection-start-line="40" selection-start-column="60" selection-end-line="40" selection-end-column="60" />
<folding>
<element signature="e#1531#1541#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionAggrStatAccumulator.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="491">
<caret line="41" column="46" lean-forward="true" selection-start-line="41" selection-start-column="46" selection-end-line="41" selection-end-column="46" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionAggrStatDao.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="9" column="42" lean-forward="false" selection-start-line="9" selection-start-column="42" selection-end-line="9" selection-end-column="42" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JDBCHelper.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="169" column="0" lean-forward="false" selection-start-line="169" selection-start-column="0" selection-end-line="169" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DaoFactory.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="31" column="92" lean-forward="false" selection-start-line="31" selection-start-column="92" selection-end-line="31" selection-end-column="92" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Top10Category.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Top10Category.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="2" column="27" lean-forward="false" selection-start-line="2" selection-start-column="27" selection-end-line="2" selection-end-column="27" />
<folding>
<element signature="e#549#550#0" expanded="true" />
<element signature="e#578#579#0" expanded="true" />
<element signature="e#620#621#0" expanded="true" />
<element signature="e#656#657#0" expanded="true" />
<element signature="e#691#692#0" expanded="true" />
<element signature="e#724#725#0" expanded="true" />
<element signature="e#774#775#0" expanded="true" />
<element signature="e#818#819#0" expanded="true" />
<element signature="e#853#854#0" expanded="true" />
<element signature="e#886#887#0" expanded="true" />
<element signature="e#936#937#0" expanded="true" />
<element signature="e#980#981#0" expanded="true" />
<element signature="e#1015#1016#0" expanded="true" />
<element signature="e#1048#1049#0" expanded="true" />
<element signature="e#1098#1099#0" expanded="true" />
<element signature="e#1142#1143#0" expanded="true" />
<element signature="e#1175#1176#0" expanded="true" />
<element signature="e#1206#1207#0" expanded="true" />
<element signature="e#1252#1253#0" expanded="true" />
<element signature="e#1292#1293#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Top10CategoryDao.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategoryDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="58" lean-forward="false" selection-start-line="8" selection-start-column="58" selection-end-line="8" selection-end-column="58" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Top10CategoryDaoImpl.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategoryDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="27" column="76" lean-forward="false" selection-start-line="27" selection-start-column="76" selection-end-line="27" selection-end-column="76" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#919#929#0" expanded="true" />
</folding>
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="FIRST">
<first_editor relative-caret-position="512">
<caret line="347" column="23" lean-forward="false" selection-start-line="347" selection-start-column="23" selection-end-line="347" selection-end-column="23" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
@ -229,7 +98,6 @@
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ParamUtils.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionAggrStat.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" />
@ -250,11 +118,15 @@
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/CategorySort.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Top10Category.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategoryDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/CategorySortKey.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategoryDaoImpl.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Top10CategorySession.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategorySessionDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategorySessionDaoImpl.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
</list>
</option>
@ -326,8 +198,8 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="Scratches" />
<pane id="AndroidView" />
<pane id="ProjectPane">
<subPane>
<expand>
@ -361,44 +233,6 @@
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="dao" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="dao" type="462c0819:PsiDirectoryNode" />
<item name="factory" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="dao" type="462c0819:PsiDirectoryNode" />
<item name="impl" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="domain" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
@ -436,21 +270,12 @@
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="dao" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scratches" />
<pane id="AndroidView" />
<pane id="Scope" />
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@ -721,7 +546,10 @@
<workItem from="1529590333052" duration="2564000" />
<workItem from="1529630336674" duration="15098000" />
<workItem from="1529666057370" duration="13151000" />
<workItem from="1529717692529" duration="29785000" />
<workItem from="1529717692529" duration="30310000" />
<workItem from="1529837434323" duration="208000" />
<workItem from="1529845795654" duration="7752000" />
<workItem from="1529887211212" duration="424000" />
</task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<created>1529592741848</created>
@ -773,7 +601,7 @@
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="61632000" />
<option name="totallyTimeSpent" value="70541000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
@ -781,7 +609,6 @@
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Java Enterprise" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@ -789,11 +616,11 @@
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32904884" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32648125" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32648125" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18311875" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18955651" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
@ -805,6 +632,7 @@
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
@ -882,32 +710,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/src.zip!/java/util/concurrent/LinkedBlockingQueue.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="433" column="13" lean-forward="false" selection-start-line="433" selection-start-column="13" selection-end-line="433" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/demo/Singleton.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="19" lean-forward="false" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/jdbc/JDBCHelperTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="434">
<caret line="28" column="4" lean-forward="false" selection-start-line="28" selection-start-column="4" selection-end-line="28" selection-end-column="4" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#919#1311#0" expanded="false" />
<element signature="e#1310#1311#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/json/FastJsonTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="133">
@ -919,7 +721,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="912">
<caret line="52" column="9" lean-forward="true" selection-start-line="52" selection-start-column="9" selection-end-line="52" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
@ -927,40 +728,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="8" column="28" lean-forward="false" selection-start-line="8" selection-start-column="19" selection-end-line="8" selection-end-column="28" />
<folding>
<element signature="e#847#848#0" expanded="false" />
<element signature="e#876#877#0" expanded="false" />
<element signature="e#918#919#0" expanded="false" />
<element signature="e#954#955#0" expanded="false" />
<element signature="e#989#990#0" expanded="false" />
<element signature="e#1020#1021#0" expanded="false" />
<element signature="e#1068#1069#0" expanded="false" />
<element signature="e#1108#1109#0" expanded="false" />
<element signature="e#1145#1146#0" expanded="false" />
<element signature="e#1178#1179#0" expanded="false" />
<element signature="e#1230#1231#0" expanded="false" />
<element signature="e#1274#1275#0" expanded="false" />
<element signature="e#1310#1311#0" expanded="false" />
<element signature="e#1342#1343#0" expanded="false" />
<element signature="e#1392#1393#0" expanded="false" />
<element signature="e#1434#1435#0" expanded="false" />
<element signature="e#1471#1472#0" expanded="false" />
<element signature="e#1504#1505#0" expanded="false" />
<element signature="e#1556#1557#0" expanded="false" />
<element signature="e#1600#1601#0" expanded="false" />
<element signature="e#1635#1636#0" expanded="false" />
<element signature="e#1666#1667#0" expanded="false" />
<element signature="e#1714#1715#0" expanded="false" />
<element signature="e#1754#1755#0" expanded="false" />
<element signature="e#1791#1792#0" expanded="false" />
<element signature="e#1824#1825#0" expanded="false" />
<element signature="e#1876#1877#0" expanded="false" />
<element signature="e#1920#1921#0" expanded="false" />
<element signature="e#1956#1957#0" expanded="false" />
<element signature="e#1988#1989#0" expanded="false" />
<element signature="e#2038#2039#0" expanded="false" />
<element signature="e#2080#2081#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -968,7 +735,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="10" column="49" lean-forward="false" selection-start-line="10" selection-start-column="49" selection-end-line="10" selection-end-column="49" />
<folding />
</state>
</provider>
</entry>
@ -983,7 +749,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="27" column="55" lean-forward="false" selection-start-line="27" selection-start-column="55" selection-end-line="27" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
@ -1014,21 +779,10 @@
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="FIRST">
<first_editor relative-caret-position="661">
<caret line="331" column="90" lean-forward="false" selection-start-line="331" selection-start-column="90" selection-end-line="331" selection-end-column="90" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/src.zip!/java/lang/Long.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="802" column="0" lean-forward="false" selection-start-line="802" selection-start-column="0" selection-end-line="802" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1036,11 +790,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="69" column="0" lean-forward="false" selection-start-line="69" selection-start-column="0" selection-end-line="69" selection-end-column="0" />
<folding>
<element signature="e#1931#1932#0" expanded="true" />
<element signature="e#2816#2817#0" expanded="true" />
<element signature="e#2851#2852#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1048,10 +797,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="325">
<caret line="170" column="0" lean-forward="false" selection-start-line="170" selection-start-column="0" selection-end-line="170" selection-end-column="0" />
<folding>
<element signature="e#4943#4944#0" expanded="true" />
<element signature="e#4982#4983#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1059,18 +804,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="62" column="0" lean-forward="false" selection-start-line="62" selection-start-column="0" selection-end-line="62" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="52">
<caret line="79" column="31" lean-forward="true" selection-start-line="79" selection-start-column="31" selection-end-line="79" selection-end-column="31" />
<folding>
<element signature="e#486#642#0" expanded="false" />
<element signature="e#641#642#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1088,7 +821,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="12" column="12" lean-forward="true" selection-start-line="12" selection-start-column="12" selection-end-line="12" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
@ -1096,9 +828,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="18" lean-forward="false" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="20" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1106,9 +835,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="133">
<caret line="7" column="47" lean-forward="false" selection-start-line="7" selection-start-column="47" selection-end-line="7" selection-end-column="47" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1116,9 +842,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="17" column="34" lean-forward="false" selection-start-line="17" selection-start-column="34" selection-end-line="17" selection-end-column="34" />
<folding>
<element signature="e#511#521#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1126,56 +849,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="361">
<caret line="19" column="5" lean-forward="true" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" />
<folding>
<element signature="e#1305#1306#0" expanded="true" />
<element signature="e#1334#1335#0" expanded="true" />
<element signature="e#1376#1377#0" expanded="true" />
<element signature="e#1412#1413#0" expanded="true" />
<element signature="e#1443#1444#0" expanded="true" />
<element signature="e#1472#1473#0" expanded="true" />
<element signature="e#1514#1515#0" expanded="true" />
<element signature="e#1550#1551#0" expanded="true" />
<element signature="e#1585#1586#0" expanded="true" />
<element signature="e#1616#1617#0" expanded="true" />
<element signature="e#1664#1665#0" expanded="true" />
<element signature="e#1704#1705#0" expanded="true" />
<element signature="e#1735#1736#0" expanded="true" />
<element signature="e#1764#1765#0" expanded="true" />
<element signature="e#1806#1807#0" expanded="true" />
<element signature="e#1842#1843#0" expanded="true" />
<element signature="e#1879#1880#0" expanded="true" />
<element signature="e#1912#1913#0" expanded="true" />
<element signature="e#1964#1965#0" expanded="true" />
<element signature="e#2008#2009#0" expanded="true" />
<element signature="e#2048#2049#0" expanded="true" />
<element signature="e#2084#2085#0" expanded="true" />
<element signature="e#2142#2143#0" expanded="true" />
<element signature="e#2192#2193#0" expanded="true" />
<element signature="e#2232#2233#0" expanded="true" />
<element signature="e#2270#2271#0" expanded="true" />
<element signature="e#2330#2331#0" expanded="true" />
<element signature="e#2384#2385#0" expanded="true" />
<element signature="e#2423#2424#0" expanded="true" />
<element signature="e#2460#2461#0" expanded="true" />
<element signature="e#2518#2519#0" expanded="true" />
<element signature="e#2570#2571#0" expanded="true" />
<element signature="e#2613#2614#0" expanded="true" />
<element signature="e#2652#2653#0" expanded="true" />
<element signature="e#2716#2717#0" expanded="true" />
<element signature="e#2772#2773#0" expanded="true" />
<element signature="e#2814#2815#0" expanded="true" />
<element signature="e#2852#2853#0" expanded="true" />
<element signature="e#2914#2915#0" expanded="true" />
<element signature="e#2968#2969#0" expanded="true" />
<element signature="e#3009#3010#0" expanded="true" />
<element signature="e#3046#3047#0" expanded="true" />
<element signature="e#3106#3107#0" expanded="true" />
<element signature="e#3158#3159#0" expanded="true" />
<element signature="e#3198#3199#0" expanded="true" />
<element signature="e#3234#3235#0" expanded="true" />
<element signature="e#3292#3293#0" expanded="true" />
<element signature="e#3342#3343#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1183,7 +856,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="346" column="0" lean-forward="false" selection-start-line="346" selection-start-column="0" selection-end-line="346" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1191,7 +863,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="303">
<caret line="312" column="0" lean-forward="false" selection-start-line="312" selection-start-column="0" selection-end-line="312" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1199,7 +870,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="284">
<caret line="316" column="0" lean-forward="false" selection-start-line="316" selection-start-column="0" selection-end-line="316" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1207,7 +877,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="228" column="0" lean-forward="false" selection-start-line="228" selection-start-column="0" selection-end-line="228" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1215,10 +884,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="151">
<caret line="104" column="0" lean-forward="false" selection-start-line="104" selection-start-column="0" selection-end-line="104" selection-end-column="0" />
<folding>
<element signature="e#5869#6059#0" expanded="true" />
<element signature="e#6058#6059#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1226,7 +891,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="405" column="0" lean-forward="false" selection-start-line="405" selection-start-column="0" selection-end-line="405" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1234,7 +898,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="179" column="0" lean-forward="false" selection-start-line="179" selection-start-column="0" selection-end-line="179" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1242,9 +905,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="20" lean-forward="true" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="26" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1252,28 +912,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="11" lean-forward="false" selection-start-line="11" selection-start-column="11" selection-end-line="11" selection-end-column="11" />
<folding>
<element signature="e#680#681#0" expanded="true" />
<element signature="e#709#710#0" expanded="true" />
<element signature="e#751#752#0" expanded="true" />
<element signature="e#787#788#0" expanded="true" />
<element signature="e#823#824#0" expanded="true" />
<element signature="e#855#856#0" expanded="true" />
<element signature="e#905#906#0" expanded="true" />
<element signature="e#947#948#0" expanded="true" />
<element signature="e#983#984#0" expanded="true" />
<element signature="e#1015#1016#0" expanded="true" />
<element signature="e#1065#1066#0" expanded="true" />
<element signature="e#1107#1108#0" expanded="true" />
<element signature="e#1148#1149#0" expanded="true" />
<element signature="e#1185#1186#0" expanded="true" />
<element signature="e#1245#1246#0" expanded="true" />
<element signature="e#1297#1298#0" expanded="true" />
<element signature="e#1342#1343#0" expanded="true" />
<element signature="e#1383#1384#0" expanded="true" />
<element signature="e#1451#1452#0" expanded="true" />
<element signature="e#1511#1512#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1281,9 +919,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="9" column="10" lean-forward="false" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1291,7 +926,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="76">
<caret line="4" column="14" lean-forward="false" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
@ -1299,10 +933,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="23" lean-forward="false" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="31" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#359#381#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1310,10 +940,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#1162#1172#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1325,29 +951,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="916">
<caret line="80" column="12" lean-forward="false" selection-start-line="80" selection-start-column="12" selection-end-line="80" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="31" column="92" lean-forward="false" selection-start-line="31" selection-start-column="92" selection-end-line="31" selection-end-column="92" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategoryDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="58" lean-forward="false" selection-start-line="8" selection-start-column="58" selection-end-line="8" selection-end-column="58" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1355,28 +962,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="2" column="27" lean-forward="false" selection-start-line="2" selection-start-column="27" selection-end-line="2" selection-end-column="27" />
<folding>
<element signature="e#549#550#0" expanded="true" />
<element signature="e#578#579#0" expanded="true" />
<element signature="e#620#621#0" expanded="true" />
<element signature="e#656#657#0" expanded="true" />
<element signature="e#691#692#0" expanded="true" />
<element signature="e#724#725#0" expanded="true" />
<element signature="e#774#775#0" expanded="true" />
<element signature="e#818#819#0" expanded="true" />
<element signature="e#853#854#0" expanded="true" />
<element signature="e#886#887#0" expanded="true" />
<element signature="e#936#937#0" expanded="true" />
<element signature="e#980#981#0" expanded="true" />
<element signature="e#1015#1016#0" expanded="true" />
<element signature="e#1048#1049#0" expanded="true" />
<element signature="e#1098#1099#0" expanded="true" />
<element signature="e#1142#1143#0" expanded="true" />
<element signature="e#1175#1176#0" expanded="true" />
<element signature="e#1206#1207#0" expanded="true" />
<element signature="e#1252#1253#0" expanded="true" />
<element signature="e#1292#1293#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1384,20 +969,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="19">
<caret line="2" column="0" lean-forward="true" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<folding>
<element signature="e#3332#3333#0" expanded="true" />
<element signature="e#3365#3366#0" expanded="true" />
<element signature="e#3415#3416#0" expanded="true" />
<element signature="e#3459#3460#0" expanded="true" />
<element signature="e#3494#3495#0" expanded="true" />
<element signature="e#3527#3528#0" expanded="true" />
<element signature="e#3577#3578#0" expanded="true" />
<element signature="e#3621#3622#0" expanded="true" />
<element signature="e#3654#3655#0" expanded="true" />
<element signature="e#3685#3686#0" expanded="true" />
<element signature="e#3731#3732#0" expanded="true" />
<element signature="e#3771#3772#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1405,18 +976,13 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="169" column="0" lean-forward="false" selection-start-line="169" selection-start-column="0" selection-end-line="169" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategoryDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<state relative-caret-position="478">
<caret line="27" column="76" lean-forward="false" selection-start-line="27" selection-start-column="76" selection-end-line="27" selection-end-column="76" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#919#929#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1424,79 +990,96 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="443">
<caret line="114" column="27" lean-forward="false" selection-start-line="114" selection-start-column="27" selection-end-line="114" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="9" column="42" lean-forward="false" selection-start-line="9" selection-start-column="42" selection-end-line="9" selection-end-column="42" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="592">
<caret line="40" column="60" lean-forward="false" selection-start-line="40" selection-start-column="60" selection-end-line="40" selection-end-column="60" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="491">
<state relative-caret-position="588">
<caret line="41" column="46" lean-forward="true" selection-start-line="41" selection-start-column="46" selection-end-line="41" selection-end-column="46" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="9" column="42" lean-forward="false" selection-start-line="9" selection-start-column="42" selection-end-line="9" selection-end-column="42" />
<state relative-caret-position="266">
<caret line="90" column="25" lean-forward="false" selection-start-line="90" selection-start-column="25" selection-end-line="90" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="346">
<caret line="40" column="60" lean-forward="false" selection-start-line="40" selection-start-column="60" selection-end-line="40" selection-end-column="60" />
<folding>
<element signature="e#1531#1541#0" expanded="true" />
</folding>
<state relative-caret-position="1615">
<caret line="100" column="18" lean-forward="false" selection-start-line="100" selection-start-column="18" selection-end-line="100" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/Top10CategorySessionDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="133">
<caret line="7" column="47" lean-forward="false" selection-start-line="7" selection-start-column="47" selection-end-line="7" selection-end-column="47" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategorySessionDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="399">
<caret line="21" column="60" lean-forward="false" selection-start-line="21" selection-start-column="60" selection-end-line="21" selection-end-column="60" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="32" column="4" lean-forward="false" selection-start-line="32" selection-start-column="4" selection-end-line="32" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Top10CategorySession.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="4" column="57" lean-forward="false" selection-start-line="4" selection-start-column="57" selection-end-line="4" selection-end-column="57" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="FIRST">
<first_editor relative-caret-position="512">
<caret line="347" column="23" lean-forward="false" selection-start-line="347" selection-start-column="23" selection-end-line="347" selection-end-column="23" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="353">
<caret line="596" column="74" lean-forward="false" selection-start-line="596" selection-start-column="74" selection-end-line="596" selection-end-column="74" />
<state relative-caret-position="535">
<caret line="935" column="0" lean-forward="true" selection-start-line="935" selection-start-column="0" selection-end-line="935" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#21213#21235#0" expanded="true" />
<element signature="e#23066#23081#0" expanded="true" />
<element signature="e#28680#28697#0" expanded="true" />
<element signature="e#29261#29593#0" expanded="true" />
<element signature="e#29592#29593#0" expanded="true" />
<element signature="e#29711#31113#0" expanded="true" />
<element signature="e#30017#30037#0" expanded="true" />
<element signature="e#31112#31113#0" expanded="true" />
<element signature="e#31862#32728#0" expanded="true" />
<element signature="e#32727#32728#0" expanded="true" />
<element signature="e#32999#33014#0" expanded="true" />
<element signature="e#34526#35330#0" expanded="true" />
<element signature="e#35329#35330#0" expanded="true" />
<element signature="e#35417#36234#0" expanded="true" />
<element signature="e#36233#36234#0" expanded="true" />
<element signature="e#36319#37134#0" expanded="true" />
<element signature="e#37133#37134#0" expanded="true" />
<element signature="e#37347#37731#0" expanded="true" />
<element signature="e#37730#37731#0" expanded="true" />
<element signature="e#37828#38532#0" expanded="true" />
<element signature="e#38090#38110#0" expanded="true" />
<element signature="e#38531#38532#0" expanded="true" />
<element signature="e#38630#38821#0" expanded="true" />
<element signature="e#38820#38821#0" expanded="true" />
<element signature="e#39052#39435#0" expanded="true" />
<element signature="e#39434#39435#0" expanded="true" />
<element signature="e#39536#40246#0" expanded="true" />
<element signature="e#39798#39818#0" expanded="true" />
<element signature="e#40245#40246#0" expanded="true" />
<element signature="e#40348#40539#0" expanded="true" />
<element signature="e#40538#40539#0" expanded="true" />
<element signature="e#40773#41077#0" expanded="true" />
<element signature="e#41076#41077#0" expanded="true" />
<element signature="e#41174#41480#0" expanded="true" />
<element signature="e#41479#41480#0" expanded="true" />
<element signature="e#41582#41773#0" expanded="true" />
<element signature="e#41772#41773#0" expanded="true" />
<element signature="e#45463#45830#0" expanded="true" />
<element signature="e#45751#45773#0" expanded="true" />
<element signature="e#45829#45830#0" expanded="true" />
</folding>
</state>
</provider>

@ -325,7 +325,30 @@ task_param最最重要用来使用JSON的格式来封装用户提交的
完成了数据调研、需求分析、技术方案设计、数据设计以后,正式进入编码实现和功能测试阶段。最后才是性能调优阶段。
## 编码以及实现思路
### 数据筛选与聚合
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过执行任务的参数时间(筛选范围的开始时间和结束时间)筛选出符合要求的数据。
聚合实现的思路是:根据时间筛选后的actionClick的数据映射成为Pair<SessionId,Row>的形式Row表示每一次点击行为。
然后根据SessionId进行分组对于分组后的数据根据SessionId粒度进行聚合封装有价值的数据(搜索词,点击品类等)
在SessionId粒度聚合后查询出所有的用户将用户映射成为Pair<Long,Row>对于上诉两个RDD进行Join将点击信息和用户信息封装成String的数据格式
按照SessionId为Key需求信息为Value返回。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在进行聚合后,根据执行任务的相关参数进行进一步的筛选操作,比如在根据用户性别,职业,城市,
搜索词点击的品类id进行筛选。
### 统计各个范围内的Session和步长占比
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现自定义Accumulator,在自定义Accumulator中实现各个范围内的操作这里是一个统一的操作。
在上面的根据需求进行筛选的时候我们可以利用上述的过程进行代码重构计算每一个Session的访问时长在判断完符合条件后可以利用自定义的Accumulator
进行各个范围的SessionId还有就是各个范围的步长通过得到每个范围的数量后计算出来占比然后插入到数据库。
### 随机抽取100个session
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;利用上面Session粒度的聚合代码进行代码重构计算出每一个Session的开始时间和结束时间。
将过滤后的RDD映射成为Pair形式Key为Date_Hour,Value为需求信息然后将这个Pair按照日期和时间划分也就是
Map<String,Map<String,Long>> dateHourCount,日期作为Key时间和数量作为Map计算总的Session个数然后每一天平摊100个在根据每天的数量
计算每一个小时的个数然后调用一个随机的函数获得随机索引然后再遍历过滤需求如果找到随机索引对应的信息那么将信息保存在一个List里面批量插入
之后将得到的SessionId按照join过滤后的数据然后分区进行批量插入(这也是性能优化之一)。
### 获取热门品类Top10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;想将按照需求过滤后的数据和按照时间过滤后的数据进行Join操作得到完整的数据也就是每一次点击的
行为还有用户的特征然后获取点击、下单和支付的品类Id注意这里需要去重然后分别计算点击、下单和支付品类的各个Id和次数将上一次得到的品类id和这三步
相LeftOuterJoin最后的得到一个RDD这个RDD进行map后放入我们自定义的二次排序类然后将数据后批量插入到数据库。
### 获取
## 用户访问Session的比较高端技术
### 自定义Accumulator

@ -0,0 +1,9 @@
package cn.edu.hust.dao;
import cn.edu.hust.domain.Top10CategorySession;
import java.util.List;
public interface Top10CategorySessionDao {
void batchInsert(List<Top10CategorySession> top10CategorySessionList);
}

@ -30,4 +30,6 @@ public class DaoFactory {
}
public static Top10CategoryDao getTop10CategoryDao(){ return new Top10CategoryDaoImpl();}
public static Top10CategorySessionDao getTop10CategorySessionDao(){ return new Top10CategorySessionDaoImpl();}
}

@ -0,0 +1,24 @@
package cn.edu.hust.dao.impl;
import cn.edu.hust.dao.Top10CategorySessionDao;
import cn.edu.hust.domain.Top10CategorySession;
import cn.edu.hust.jdbc.JDBCHelper;
import java.util.ArrayList;
import java.util.List;
public class Top10CategorySessionDaoImpl implements Top10CategorySessionDao
{
@Override
public void batchInsert(List<Top10CategorySession> top10CategorySessionList) {
String sql="insert into top10_category_session values(?,?,?,?)";
List<Object[]> paramList=new ArrayList<Object[]>();
for(Top10CategorySession top10CategorySession:top10CategorySessionList)
{
Object[] param=new Object[]{top10CategorySession.getTaskId(),top10CategorySession.getCategoryId(),
top10CategorySession.getSessionId(),top10CategorySession.getClickCount()};
paramList.add(param);
}
JDBCHelper.getInstance().excuteBatch(sql,paramList);
}
}

@ -0,0 +1,52 @@
package cn.edu.hust.domain;
import java.io.Serializable;
public class Top10CategorySession implements Serializable{
private Long taskId;
private Long categoryId;
private String sessionId;
private Long clickCount;
public Top10CategorySession() {
}
public void set(Long taskId, Long categoryId, String sessionId, Long clickCount) {
this.taskId = taskId;
this.categoryId = categoryId;
this.sessionId = sessionId;
this.clickCount = clickCount;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public Long getCategoryId() {
return categoryId;
}
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
}

@ -68,6 +68,8 @@ public class UserVisitAnalyze {
//在进行accumulator之前需要aciton动作不然会为空
JavaPairRDD<String,String> filteredSessionRDD=filterSessionAndAggrStat(sesssionAggregateInfoRDD,jsonObject,sessionAggrStatAccumulator);
//获取符合过滤条件的全信息公共RDD
JavaPairRDD<String, Row> commonFullClickInfoRDD=getFilterFullInfoRDD(filteredSessionRDD,sessionInfoPairRDD);
//session聚合统计统计出访问时长和访问步长的各个区间所占的比例
/**
*
@ -97,15 +99,17 @@ public class UserVisitAnalyze {
//filteredSessionRDD.count();
//计算各个session占比,并写入MySQL
calculateAndPersist(sessionAggrStatAccumulator.value(),taskId);
//
getTop10Category(taskId,filteredSessionRDD,sessionInfoPairRDD);
//获取热门品类数据Top10
List<Tuple2<CategorySortKey,String>> top10CategoryIds=getTop10Category(taskId,commonFullClickInfoRDD);
//获取热门每一个品类点击Top10session
getTop10Session(context,taskId,commonFullClickInfoRDD,top10CategoryIds);
//关闭spark上下文
context.close();
}
/**
*
* @param sc
@ -381,6 +385,23 @@ public class UserVisitAnalyze {
return filteredSessionRDD;
}
/**
*
* RDD
* @param filteredSessionRDD
* @param sessionInfoPairRDD
* @return
*/
private static JavaPairRDD<String, Row> getFilterFullInfoRDD(JavaPairRDD<String, String> filteredSessionRDD, JavaPairRDD<String, Row> sessionInfoPairRDD) {
//1.获取符合条件的session范围的所有品类
return filteredSessionRDD.join(sessionInfoPairRDD).mapToPair(new PairFunction<Tuple2<String, Tuple2<String, Row>>, String, Row>() {
@Override
public Tuple2<String, Row> call(Tuple2<String, Tuple2<String, Row>> stringTuple2Tuple2) throws Exception {
return new Tuple2<String, Row>(stringTuple2Tuple2._1,stringTuple2Tuple2._2._2);
}
});
}
/**
* Sesison
* @param taskId
@ -599,22 +620,12 @@ public class UserVisitAnalyze {
/**
* top
* top10
* @param taskId
* @param filteredSessionRDD
* @param sessionInfoPairRDD
* @param sessionId2DetailRDD
*/
private static void getTop10Category(Long taskId,JavaPairRDD<String, String> filteredSessionRDD, JavaPairRDD<String, Row> sessionInfoPairRDD) {
//1.获取符合条件的session梵文的所有品类
JavaPairRDD<String,Row> sessionId2DetailRDD=filteredSessionRDD.join(sessionInfoPairRDD).mapToPair(new PairFunction<Tuple2<String, Tuple2<String, Row>>, String, Row>() {
@Override
public Tuple2<String, Row> call(Tuple2<String, Tuple2<String, Row>> stringTuple2Tuple2) throws Exception {
return new Tuple2<String, Row>(stringTuple2Tuple2._1,stringTuple2Tuple2._2._2);
}
});
private static List<Tuple2<CategorySortKey,String>> getTop10Category(Long taskId, JavaPairRDD<String, Row> sessionId2DetailRDD) {
//1.第一步已抽离出方法getFilterFullInfoRDD
//2。获取访问的品类id访问过表示点击下单支付
JavaPairRDD<Long,Long> categoryRDD=sessionId2DetailRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<String,Row>, Long, Long>() {
@Override
@ -691,8 +702,11 @@ public class UserVisitAnalyze {
}
//插入数据库
DaoFactory.getTop10CategoryDao().batchInsert(top10Categories);
return top10CategoryList;
}
/**
*
* @param categoryRDD
@ -756,6 +770,7 @@ public class UserVisitAnalyze {
return tmpRDD;
}
//后去支付品类RDD
private static JavaPairRDD<Long,Long> getPayCategoryRDD(JavaPairRDD<String, Row> sessionId2DetailRDD) {
JavaPairRDD<String,Row> payActionRDD=sessionId2DetailRDD.filter(new Function<Tuple2<String, Row>, Boolean>() {
@Override
@ -792,6 +807,7 @@ public class UserVisitAnalyze {
return payCategoryCountRDD;
}
//获取下单品类RDD
private static JavaPairRDD<Long,Long> getOrderCategoryRDD(JavaPairRDD<String, Row> sessionId2DetailRDD) {
JavaPairRDD<String,Row> orderActionRDD=sessionId2DetailRDD.filter(new Function<Tuple2<String, Row>, Boolean>() {
@Override
@ -828,6 +844,7 @@ public class UserVisitAnalyze {
return orderCategoryCountRDD;
}
//获取点击品类RDD
private static JavaPairRDD<Long,Long> getLClickCategoryRDD(JavaPairRDD<String, Row> sessionId2DetailRDD) {
JavaPairRDD<String,Row> clickActionRDD=sessionId2DetailRDD.filter(new Function<Tuple2<String, Row>, Boolean>() {
@Override
@ -855,4 +872,70 @@ public class UserVisitAnalyze {
});
return clickCategoryCountRDD;
}
//获取每一个品类的Session Top10
private static void getTop10Session(JavaSparkContext sc, Long taskId, JavaPairRDD<String, Row> commonFullClickInfoRDD, List<Tuple2<CategorySortKey, String>> top10CategoryIds) {
List<Tuple2<Long,Long>> categoryIdList=new ArrayList<Tuple2<Long, Long>>();
for(Tuple2<CategorySortKey, String> top10CategoryId:top10CategoryIds)
{
String countInfo=top10CategoryId._2;
Long categoryId=Long.valueOf(StringUtils.getFieldFromConcatString(countInfo,"\\|",Constants.FIELD_CATEGORY_ID));
categoryIdList.add(new Tuple2<Long, Long>(categoryId,categoryId));
}
//生成一份RDD
JavaPairRDD<Long,Long> top10CategoryIdsRDD=sc.parallelizePairs(categoryIdList);
//按照SessionId进行分组
JavaPairRDD<String,Iterable<Row>> gourpBySessionIdRDD=commonFullClickInfoRDD.groupByKey();
//计算每一个session对品类的点击次数
JavaPairRDD<Long,String> categorySessionCountRDD=gourpBySessionIdRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<String, Iterable<Row>>, Long, String>() {
@Override
public Iterable<Tuple2<Long, String>> call(Tuple2<String, Iterable<Row>> tuple2) throws Exception {
String sessionId=tuple2._1;
//保存每一个品类的单击次数
Map<Long,Long> categoryIdCount=new HashMap<Long, Long>();
for(Row row:tuple2._2)
{
if(row.get(6)!=null)
{
Long count=categoryIdCount.get(row.getLong(6));
if(count==null)
{
count=0L;
}
count++;
categoryIdCount.put(row.getLong(6),count);
}
}
List<Tuple2<Long,String>> categoryIdCountList=new ArrayList<Tuple2<Long,String>>();
for(Map.Entry<Long,Long> entry:categoryIdCount.entrySet())
{
//将数据拼接
String value=sessionId+","+entry.getValue();
categoryIdCountList.add(new Tuple2<Long,String>(entry.getKey(),value));
}
return categoryIdCountList;
}
});
//将top10的品类与上面计算的RDD相join 得到每一个热门品类的点击次数
JavaPairRDD<Long,String> top10CategorySessionCountRDD=top10CategoryIdsRDD.join(categorySessionCountRDD).mapToPair(new PairFunction<Tuple2<Long, Tuple2<Long, String>>, Long, String>() {
@Override
public Tuple2<Long, String> call(Tuple2<Long, Tuple2<Long, String>> tuple2) throws Exception {
return new Tuple2<Long,String>(tuple2._1,tuple2._2._2);
}
});
//根据品类分组
JavaPairRDD<Long,Iterable<String>> top10CategorySessionCountGroupRDD=top10CategorySessionCountRDD.groupByKey();
JavaPairRDD<Long,String> top10CategorySessionRDD=top10CategorySessionCountGroupRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<Long,Iterable<String>>, Long,String>() {
@Override
public Iterable<Tuple2<Long, String>> call(Tuple2<Long, Iterable<String>> tuple2) throws Exception {
List<Top10CategorySession> top10CategorySessionList=new ArrayList<Top10CategorySession>();
return null;
}
});
}
}

Loading…
Cancel
Save