Compare commits

...

83 Commits

Author SHA1 Message Date
qian 8d63d30369 Merge branch 'develop' of https://bdgit.educoder.net/pil3aoekg/javac into develop
9 months ago
qian af5354dae8 保存本地修改,准备拉取远程更新
9 months ago
qian 2b6a660cc7 合并远程 Qian 分支更新,解决.idea/workspace.xml 文件冲突
9 months ago
qian 358d5becc5 16
9 months ago
qian 9bd80125bc 111111
9 months ago
qian b13ef62ee8 785
9 months ago
qian 31c66075e8 569
9 months ago
qian 3aa5424d65 888
9 months ago
qian 28b59f6965 11
9 months ago
劝酒千百 c951589681 1.环境搭建完成
9 months ago
劝酒千百 09f5e350e6 Merge remote-tracking branch 'origin/hxy' into develop
9 months ago
qian 9b70c3adbd 11
9 months ago
劝酒千百 c195839819 1.环境搭建完成
9 months ago
劝酒千百 8b13541a8a Merge remote-tracking branch 'origin/Qian' into develop
9 months ago
qian 226f6bbe7d ..
9 months ago
qian 35581ef4ac ..
9 months ago
劝酒千百 6ef8a03ee1 Merge branch 'zxr' into develop
9 months ago
劝酒千百 5076a9a840 Merge remote-tracking branch 'origin/zxn' into develop
9 months ago
pil3aoekg a1693bff2a add sessionaggr
9 months ago
qian 16923a5033 ..
9 months ago
qian ce450ed046 12
9 months ago
qian 2fb5570bac 12
9 months ago
qian 4ab99f27a0 12
9 months ago
劝酒千百 2a02dd1836 1.环境搭建完成
9 months ago
qian 7105fc9e29 12
9 months ago
qian 4c7cb3b32e 11
9 months ago
qian a8c1e787eb 11.
9 months ago
劝酒千百 d45e415174 1.环境搭建完成
9 months ago
劝酒千百 6af3585137 1.环境搭建完成
9 months ago
劝酒千百 a2f187e99a 1.环境搭建完成
9 months ago
劝酒千百 e2745fe65c 1.环境搭建完成
9 months ago
劝酒千百 a757942f5c 1.环境搭建完成
9 months ago
劝酒千百 5ab5d8ad74 1.环境搭建完成
9 months ago
劝酒千百 7ef91d76cf 1.环境搭建完成
9 months ago
周小娜 2ea9c89fcc 编写2
9 months ago
周小娜 fc715ccc75 编写2
9 months ago
yy 7ea5a6f052 1.环境搭建完成
9 months ago
yy f288be9029 1.环境搭建完成
9 months ago
劝酒千百 6d5aa2e4cb 1.环境搭建完成11
9 months ago
yy 3a6af1a9d0 1.环境搭建完成
9 months ago
yy 9ec53da8b8 1.环境搭建完成
9 months ago
yy 87a0ab6828 1.环境搭建完成
9 months ago
劝酒千百 4b5f96ad3a 1.环境搭建完成
9 months ago
劝酒千百 826a9ec222 1.环境搭建完成
9 months ago
yy 4443f56f7c 1.环境搭建完成
9 months ago
yy 5a280d2543 1.环境搭建完成
9 months ago
yy 547ecad4dd 1.环境搭建完成
9 months ago
劝酒千百 735e337cac 1.环境搭建完成11
9 months ago
周小娜 9a7ec4138e 编写1
9 months ago
qian 28a2dd4db3 .
9 months ago
qian 8b5f68a209 10
9 months ago
qian aabe86c168 10
9 months ago
qian 5c5fef706d 9.
9 months ago
qian 48e69c8296 9.
9 months ago
qian 393edd351f 9.
9 months ago
劝酒千百 a33178593c 1.环境搭建完成11
9 months ago
qian 2ed02f39d3 8
9 months ago
qian a68800729f 8.
9 months ago
qian 2aca1cbc73 7.
9 months ago
qian 79b9d7d05c 6.
9 months ago
qian 3dc45bb824 5.
9 months ago
qian ea8eb529c7 5.
9 months ago
劝酒千百 4089d89827 1.环境搭建完成1
9 months ago
qian ee5a5920b7 4.
9 months ago
yy c04555504a 1.环境搭建完成
9 months ago
qian a389817de8 3.
9 months ago
yy afa30ef4bd 1.环境搭建完成
9 months ago
qian bef94df4ac 2.
9 months ago
劝酒千百 0af0f9bd61 1.环境搭建完成11
9 months ago
yy 0966dc92b6 1.环境搭建完成
9 months ago
周小娜 5c011ce1b0 编写
9 months ago
yy 908dad413b 1.环境搭建完成
9 months ago
yy 731d7ba4c1 1.环境搭建完成
9 months ago
劝酒千百 b357bb9ef6 1.环境搭建完成
9 months ago
劝酒千百 9046037b81 1.环境搭建完成
9 months ago
劝酒千百 f6d8d34c15 1.环境搭建完成
9 months ago
qian 1d573a7c89 1.
9 months ago
劝酒千百 428c873613 1.环境搭建完成
9 months ago
劝酒千百 66286d90e7 1.环境搭建完成
9 months ago
劝酒千百 793988e477 1.环境搭建完成
9 months ago
qian 698fd8b14e 1
9 months ago
周小娜 584f1db48f 1.环境搭建完成
9 months ago
劝酒千百 102d667253 1.环境搭建完成
9 months ago

@ -0,0 +1 @@
UserActionAnalyzePlatform

@ -10,7 +10,7 @@
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="UserActionAnalyzePlatform" target="1.6" />
<module name="UserActionAnalyzePlatform" target="7" />
</bytecodeTargetLevel>
</component>
</project>

@ -2,5 +2,7 @@
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

@ -1,53 +1,108 @@
<component name="InspectionProjectProfileManager">
<!-- “component”元素在此处作为一个整体的配置组件容器其“name”属性值为“InspectionProjectProfileManager”推测它在特定的开发环境可能是某种集成开发工具中与代码检查、项目配置管理相关的模块里用于管理项目相关的检查配置文件Inspection Project Profile起到组织和协调各种检查工具相关设置的作用 -->
<profile version="1.0">
<!-- “profile”元素代表一个具体的配置文件版本或者配置项集合这里版本号为“1.0”,说明其对应的配置内容遵循这个特定版本的规范,内部包含了一系列具体的检查工具相关的配置信息 -->
<option name="myName" value="Project Default" />
<!-- “option”元素通过“name”和“value”属性来设置一个通用的选项这里将名为“myName”的选项值设定为“Project Default”具体含义可能因使用该配置的环境不同而有所差异也许是用于标识这个配置文件是项目默认的配置之类的用途 -->
<inspection_tool class="AbstractBeanReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- “inspection_tool”元素用于配置一个具体的代码检查工具相关设置。
- “class”属性指定了该检查工具对应的具体类名此处是“AbstractBeanReferencesInspection”意味着它是一个用于检查抽象 bean 引用相关问题的工具(具体功能需结合对应开发环境中该类的实现来确定)。
- “enabled”属性设置为“true”表示该检查工具处于启用状态会在相应的代码检查流程中发挥作用。
- “level”属性值为“WARNING”说明当该检查工具发现问题时会以警告级别的提示来反馈给开发人员用于提醒开发人员关注相关代码问题。
- “enabled_by_default”属性为“true”表示该工具在默认情况下就是启用的无需额外手动开启在创建项目或者应用这个配置文件时就会自动生效 -->
<inspection_tool class="ContextComponentScanInconsistencyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 与上面类似这也是一个“inspection_tool”元素用于配置名为“ContextComponentScanInconsistencyInspection”的检查工具相关设置用于检查上下文组件扫描不一致性相关的代码问题同样处于启用状态以警告级别提示问题默认也是启用的 -->
<inspection_tool class="ContextJavaBeanUnresolvedMethodsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置名为“ContextJavaBeanUnresolvedMethodsInspection”的检查工具用于检查上下文 JavaBean 中未解决方法相关的代码情况,启用状态、警告级别提示以及默认启用 -->
<inspection_tool class="DuplicatedBeanNamesInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查重复 bean 名称相关问题的检查工具,相关属性设置同样是启用、警告级别提示、默认启用 -->
<inspection_tool class="FlowRequiredBeanTypeInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置“FlowRequiredBeanTypeInspection”检查工具用于检查流相关的所需 bean 类型方面的代码问题,具备常规的启用等属性设置 -->
<inspection_tool class="InjectionValueTypeInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查注入值类型相关问题的检查工具,启用且以警告级别反馈问题、默认启用 -->
<inspection_tool class="JdkProxiedBeanTypeInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 JDK 代理 bean 类型相关问题的工具,其启用、提示级别以及默认启用等设置如前文所述 -->
<inspection_tool class="KotlinSpringComponentScan" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Kotlin 语言中 Spring 组件扫描相关问题的检查工具,各属性设置符合常规启用并以警告提示、默认启用的模式 -->
<inspection_tool class="RequiredBeanTypeInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查所需 bean 类型相关代码问题的检查工具,相关属性保持启用等常规设置 -->
<inspection_tool class="SpringAopErrorsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring AOP 相关错误的检查工具,启用并以警告级别提示发现的问题,默认启用 -->
<inspection_tool class="SpringBatchModel" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring Batch 模型相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringBeanAutowiringInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring bean 自动装配相关问题的检查工具,同样处于启用状态、以警告提示问题、默认启用 -->
<inspection_tool class="SpringBeanConstructorArgInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring bean 构造函数参数相关问题的检查工具,具备常规的启用等属性设置 -->
<inspection_tool class="SpringBeanDepedencyCheckInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring bean 依赖检查相关问题的检查工具,相关属性保持启用等常规设置 -->
<inspection_tool class="SpringBeanInstantiationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring bean 实例化相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringBeanLookupMethodInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring bean 查找方法相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringBootAdditionalConfig" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring Boot 额外配置相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringCacheableComponentsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 可缓存组件相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringComponentScan" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring 组件扫描相关问题的检查工具,启用且以警告提示问题、默认启用 -->
<inspection_tool class="SpringContextConfigurationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 上下文配置相关问题的检查工具,相关属性保持启用等常规设置 -->
<inspection_tool class="SpringFacetProgrammaticInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring 方面Facet可能涉及 Spring 不同功能模块或特性相关概念)编程相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringFactoryMethodInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 工厂方法相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringHandlersSchemasHighlighting" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 处理器模式Handlers Schemas高亮显示相关问题的检查工具启用且以警告提示问题、默认启用 -->
<inspection_tool class="SpringIncorrectResourceTypeInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring 不正确资源类型相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringInjectionValueConsistencyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 注入值一致性相关问题的检查工具,相关属性保持启用等常规设置 -->
<inspection_tool class="SpringIntegrationModel" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring 集成模型相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringJavaAutowiringInspection" enabled="true" level="INFORMATION" enabled_by_default="true" />
<!-- 配置用于检查 Spring Java 自动装配相关问题的检查工具不过这里“level”属性值为“INFORMATION”表示当发现相关问题时会以信息级别的提示反馈给开发人员相较于“WARNING”级别重要性稍低一些同样默认启用 -->
<inspection_tool class="SpringJavaConfigInconsistencyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring Java 配置不一致性相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringKotlinAutowiring" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring 与 Kotlin 自动装配相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringLookupInjectionInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 查找注入相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringMVCInitBinder" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring MVC 初始化绑定器InitBinder相关问题的检查工具启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringMessageDispatcherWebXmlInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring 消息分发器Message Dispatcher在 web.xml 相关配置方面问题的检查工具,启用且以警告提示问题、默认启用 -->
<inspection_tool class="SpringModelInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 模型相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringOsgiElementsInconsistencyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring OSGi 元素不一致性相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringOsgiListenerInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring OSGi 监听器相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringOsgiServiceCommonInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring OSGi 服务通用相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringRequiredAnnotationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 所需注解相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringRequiredPropertyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring 所需属性相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringScopesInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring 作用域Scopes相关问题的检查工具启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringSecurityAnnotationBeanPointersResolveInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring Security 注解中 bean 指针解析相关问题的检查工具,启用且以警告提示问题、默认启用 -->
<inspection_tool class="SpringSecurityModelInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring Security 模型相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringTransactionalComponentInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置检查 Spring 事务组件相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="SpringWebServicesConfigurationsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Spring Web 服务配置相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="SpringWebSocketConfigurationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Spring WebSocket 配置相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="UtilSchemaInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查工具Util模式Schema相关问题的检查工具启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="WebflowConfigModelInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置针对 Webflow 配置模型相关问题的检查工具,各属性配置符合整体启用且以警告反馈、默认启用的情况 -->
<inspection_tool class="WebflowModelInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Webflow 模型相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
<inspection_tool class="WebflowSetupInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<!-- 配置用于检查 Webflow 设置相关问题的检查工具,启用并以警告级别提示问题、默认启用 -->
</profile>
</component>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- component元素此处名为"libraryTable",可能代表一个用于管理库相关信息的组件,也许在某个开发工具、项目构建系统等环境中,用于存放和组织各种库的配置详情 -->
<library name="Maven: antlr:antlr:2.7.7">
<!-- library元素表示一个具体的库name属性给出了库的标识信息这里采用了类似"Maven"坐标的格式表明这是通过Maven管理的一个名为"antlr"的库其版本号为2.7.7,用于在项目中唯一确定该库 -->
<CLASSES>
<!-- CLASSES元素用于定义该库中与类相关的资源信息比如类文件所在的位置等 -->
<root url="jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7.jar!/" />
<!-- root元素通过url属性指定了类文件所在的具体位置这里使用了一种类似资源定位的语法表明类文件在对应的Maven仓库$MAVEN_REPOSITORY$是一个可能代表Maven仓库路径的变量下的特定jar包antlr-2.7.7.jar最后的"!"表示是对该jar包内部资源的引用 -->
</CLASSES>
<JAVADOC>
<!-- JAVADOC元素用于配置该库相关的Java文档Javadoc的位置信息方便开发人员查看该库中类、方法等的文档注释说明 -->
<root url="jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-javadoc.jar!/" />
<!-- 同样通过root元素的url属性指定了Javadoc所在的具体jar包路径在项目构建或者开发环境配置中可依据此路径找到并关联对应的Java文档资源 -->
</JAVADOC>
<SOURCES>
<!-- SOURCES元素用于指定该库源代码的位置信息这对于开发人员查看、调试库的源代码或者进行二次开发等情况很有帮助 -->
<root url="jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-sources.jar!/" />
<!-- 以类似的资源定位语法通过url属性指出源代码所在的特定jar包路径使得在需要访问源代码时能够准确找到相应资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处可理解为一个大的容器组件其“name”属性值为“libraryTable”很可能用于对一系列库library相关的配置信息进行统一管理和组织也许在特定的开发工具、项目构建系统等场景下发挥作用 -->
<library name="Maven: asm:asm:3.1">
<!-- “library”元素代表一个具体的库配置项“name”属性采用了类似Maven坐标的格式来唯一标识这个库表明它是通过Maven进行管理的库的“groupId”为“asm”“artifactId”也为“asm”版本号是“3.1”,这样能准确地在众多依赖库中确定这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素主要用于定义该库中涉及类文件相关的资源所在位置等信息方便在项目运行、编译等阶段能正确找到对应的类文件 -->
<root url="jar://$MAVEN_REPOSITORY$/asm/asm/3.1/asm-3.1.jar!/" />
<!-- “root”元素通过“url”属性来指定类文件具体的存储位置这里采用了一种资源定位的表述方式意味着类文件存放在由变量“$MAVEN_REPOSITORY$”所代表的Maven仓库路径下具体目录为“asm/asm/3.1/”中的“asm-3.1.jar”这个jar包内最后的“!”表示是对该jar包内部资源的引用 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素的作用是配置该库对应的Java文档Javadoc所在的位置信息开发人员在开发过程中可以依据此信息去查看库中各类、方法等的详细文档注释便于理解和使用该库 -->
<root url="jar://$MAVEN_REPOSITORY$/asm/asm/3.1/asm-3.1-javadoc.jar!/" />
<!-- 同样是通过“root”元素的“url”属性来明确Java文档所在的具体位置也就是在Maven仓库相应路径下的“asm-3.1-javadoc.jar”这个专门存放Java文档的jar包内 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素用于指定该库源代码所在的位置信息这对于开发人员深入研究库的实现原理、进行调试或者基于该库做二次开发等操作时非常有用 -->
<root url="jar://$MAVEN_REPOSITORY$/asm/asm/3.1/asm-3.1-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性指出源代码存放在Maven仓库对应路径下的“asm-3.1-sources.jar”这个jar包内方便在需要时准确获取源代码资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处作为一个整体的配置组件“name”属性值为“libraryTable”推测其功能是用于集中管理多个库library相关的各类资源配置信息常见于项目开发环境或者依赖管理系统中起到统一组织和协调的作用 -->
<library name="Maven: com.101tec:zkclient:0.3">
<!-- “library”元素代表着一个具体的库配置项“name”属性采用了类似 Maven 坐标的格式来明确标识该库。其中“com.101tec”是该库所属的组织或机构的唯一标识groupId“zkclient”是项目名称artifactId“0.3”则是其具体的版本号,通过这样的坐标形式能精准地在 Maven 仓库等依赖管理体系中定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素主要负责定义该库中类文件相关资源的存放位置信息这对于项目在编译、运行等阶段能够准确地找到并加载所需的类是至关重要的 -->
<root url="jar://$MAVEN_REPOSITORY$/com/101tec/zkclient/0.3/zkclient-0.3.jar!/" />
<!-- “root”元素借助“url”属性来指明类文件具体所处的位置。这里运用了一种资源定位的方式意味着类文件被存储在由变量“$MAVEN_REPOSITORY$”所代表的 Maven 仓库路径下具体是“com/101tec/zkclient/0.3/”这个目录中的“zkclient-0.3.jar”这个 JAR 包内,最后的“!”符号表示是对该 JAR 包内部资源的引用 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素的作用是配置该库对应的 Java 文档Javadoc所在的位置信息方便开发人员在使用该库的过程中随时查阅各类、各方法等的详细文档注释有助于更好地理解和运用库中的功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/101tec/zkclient/0.3/zkclient-0.3-javadoc.jar!/" />
<!-- 同样通过“root”元素的“url”属性来确切地指定 Java 文档所在的具体位置,也就是在 Maven 仓库相应路径下的“zkclient-0.3-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素专门用于指定该库源代码所在的位置信息这对于开发人员想要深入探究库的实现原理、进行代码调试或者基于该库开展二次开发等操作时是必不可少的参考信息 -->
<root url="jar://$MAVEN_REPOSITORY$/com/101tec/zkclient/0.3/zkclient-0.3-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性清晰地指出源代码存放在 Maven 仓库对应路径下的“zkclient-0.3-sources.jar”这个 JAR 包内,以便在有需要的时候能够准确地获取到源代码资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处充当一个用于管理库相关配置的容器组件其“name”属性被赋值为“libraryTable”大概率是在某个开发环境、项目构建系统或者依赖管理工具中用来统一组织和存放多个库library的各类配置信息方便集中管理和查找操作 -->
<library name="Maven: com.alibaba:fastjson:1.1.41">
<!-- “library”元素代表一个具体的库配置实体“name”属性采用了典型的 Maven 坐标格式来唯一标识该库。其中“com.alibaba”是该库所属的组织或机构的唯一标识groupId表明是由阿里巴巴组织开发的“fastjson”是项目名称artifactId也就是这个库的具体名称“1.1.41”则为该库对应的版本号,通过这三个部分组合而成的坐标,能精准地在 Maven 仓库及相关依赖管理体系里定位到这个特定的库 -->
<CLASSES>
<!-- “CLASSES”元素的主要职责是定义该库中类文件资源的存放位置相关信息这对于项目在编译、运行等阶段顺利找到并加载对应的类是极为关键的是确保项目能正常使用该库功能的基础 -->
<root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.1.41/fastjson-1.1.41.jar!/" />
<!-- “root”元素通过“url”属性来明确指出类文件具体所在的位置。这里运用的是一种常见的资源定位表述方式意味着类文件存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体的目录路径为“com/alibaba/fastjson/1.1.41/”而具体的文件就是该目录下的“fastjson-1.1.41.jar”这个 JAR 包内,最后的“!”符号表示是对该 JAR 包内部资源的引用,也就是要获取的类文件就在这个 JAR 包之中 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素的功能是配置该库对应的 Java 文档Javadoc的存放位置信息开发人员在使用该库时借助此信息可以方便地查阅库中各类、各方法等详细的文档注释进而更好地理解和运用库所提供的功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.1.41/fastjson-1.1.41-javadoc.jar!/" />
<!-- 同样是依靠“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,即位于 Maven 仓库相应路径下的“fastjson-1.1.41-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,方便开发人员按需查看文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素主要用于指定该库源代码所在的位置信息这对于开发人员深入探究库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常重要的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.1.41/fastjson-1.1.41-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性清晰地表明源代码存放在 Maven 仓库对应路径下的“fastjson-1.1.41-sources.jar”这个 JAR 包内,使得开发人员在需要查看或修改源代码时能够准确获取到相应资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处作为一个用于集中管理库相关配置信息的容器组件其“name”为“libraryTable”很可能在特定的项目开发环境、构建系统或者依赖管理工具中发挥作用用来对多个不同的库library配置进行统一的组织和管理方便查找、维护等操作 -->
<library name="Maven: com.clearspring.analytics:stream:2.7.0">
<!-- “library”元素代表了一个具体的库配置项目“name”属性采用的是标准的 Maven 坐标格式来对该库进行唯一标识。其中“com.clearspring.analytics”是该库所属的组织或者机构的标识groupId说明了该库是由 clearspring.analytics 这个主体开发的“stream”是项目名称artifactId也就是这个库具体的称呼“2.7.0”则是该库的版本号,通过这三部分构成的坐标,能够在 Maven 仓库以及相关的依赖管理体系中精准地定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素主要负责定义该库中类文件资源的具体存放位置相关信息这对于项目在编译、运行等阶段准确地找到并加载相应的类文件起着关键作用是保证项目可以正常使用该库所提供功能的基础条件 -->
<root url="jar://$MAVEN_REPOSITORY$/com/clearspring/analytics/stream/2.7.0/stream-2.7.0.jar!/" />
<!-- “root”元素借助“url”属性来清晰地指明类文件所在的具体位置。这里采用的是一种常见的资源定位表示方式意味着类文件被存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体的目录是“com/clearspring/analytics/stream/2.7.0/”对应的文件就是该目录中的“stream-2.7.0.jar”这个 JAR 包,最后的“!”符号表示是对该 JAR 包内部资源的引用,也就是要使用的类文件就在这个 JAR 包里面 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素的作用是配置该库对应的 Java 文档Javadoc存放的位置信息开发人员在使用该库的过程中可以依据此信息方便地查阅库中各类、各方法等详细的文档注释进而更好地理解和运用该库所提供的各项功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/clearspring/analytics/stream/2.7.0/stream-2.7.0-javadoc.jar!/" />
<!-- 同样是通过“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,也就是位于 Maven 仓库相应路径下的“stream-2.7.0-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,便于开发人员按需查看相应的文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素的主要用途是指定该库源代码所在的位置信息这对于开发人员想要深入了解库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常重要的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/clearspring/analytics/stream/2.7.0/stream-2.7.0-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性清楚地表明源代码存放在 Maven 仓库对应路径下的“stream-2.7.0-sources.jar”这个 JAR 包内,方便开发人员在需要的时候能够准确获取到相应的源代码资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处作为一个整体的配置容器其“name”属性值是“libraryTable”通常用于在某个开发环境、项目构建系统或者依赖管理工具中对多个库library相关的配置信息进行统一组织与管理方便开发人员查找、维护以及在项目中准确运用这些库资源 -->
<library name="Maven: com.esotericsoftware.kryo:kryo:2.21">
<!-- “library”元素代表一个具体的库配置项“name”属性采用了标准的 Maven 坐标格式来明确标识该库。其中“com.esotericsoftware.kryo”是该库所属的组织或机构的唯一标识groupId表明由“com.esotericsoftware.kryo”这个主体开发“kryo”是项目名称artifactId也就是这个库的具体称呼“2.21”则为该库对应的版本号,通过这三部分构成的 Maven 坐标,能在 Maven 仓库以及相关依赖管理体系里精准地定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素的核心作用是定义该库中类文件资源所在的具体位置信息这对于项目在编译、运行等阶段准确地找到并加载对应的类文件是至关重要的是确保项目能够正常使用该库所提供功能的基础所在 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/kryo/kryo/2.21/kryo-2.21.jar!/" />
<!-- “root”元素借助“url”属性清晰地指明了类文件的具体存放位置。这里运用的是一种常规的资源定位表示方式意味着类文件存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体的目录路径为“com/esotericsoftware/kryo/kryo/2.21/”对应的文件就是该目录中的“kryo-2.21.jar”这个 JAR 包,最后的“!”符号表示是对该 JAR 包内部资源的引用,即项目所需的类文件就在这个 JAR 包里面 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素负责配置该库对应的 Java 文档Javadoc的存放位置信息开发人员在使用该库的过程中可以依据此信息方便地查阅库中各类、各方法等详细的文档注释从而更好地理解和运用该库所提供的各项功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/kryo/kryo/2.21/kryo-2.21-javadoc.jar!/" />
<!-- 同样是通过“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,也就是位于 Maven 仓库相应路径下的“kryo-2.21-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,便于开发人员按需查看文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素主要用于指定该库源代码所在的位置信息这对于开发人员想要深入探究库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常关键的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/kryo/kryo/2.21/kryo-2.21-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性明确地表明源代码存放在 Maven 仓库对应路径下的“kryo-2.21-sources.jar”这个 JAR 包内,方便开发人员在需要查看或修改源代码时能够准确获取到相应资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处充当一个用于管理库相关配置信息的容器组件其“name”属性被设定为“libraryTable”大概率是在特定的开发环境、项目构建系统或者依赖管理工具中发挥作用主要用于对多个不同的库library配置进行统一组织和管理便于开发人员集中查找、维护等操作 -->
<library name="Maven: com.esotericsoftware.minlog:minlog:1.2">
<!-- “library”元素代表着一个具体的库配置实体“name”属性采用了标准的 Maven 坐标格式来唯一标识该库。其中“com.esotericsoftware.minlog”是该库所属的组织或者机构的标识groupId说明该库是由“com.esotericsoftware.minlog”这个主体开发的“minlog”是项目名称artifactId也就是这个库具体的称呼“1.2”则是该库对应的版本号,通过这三部分构成的 Maven 坐标,能够在 Maven 仓库以及相关的依赖管理体系中精准地定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素主要负责定义该库中类文件资源的具体存放位置相关信息这对于项目在编译、运行等阶段准确地找到并加载相应的类文件起着关键作用是保证项目可以正常使用该库所提供功能的基础条件 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2.jar!/" />
<!-- “root”元素借助“url”属性来清晰地指明类文件所在的具体位置。这里采用的是一种常见的资源定位表示方式意味着类文件被存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体的目录是“com/esotericsoftware/minlog/minlog/1.2/”对应的文件就是该目录中的“minlog-1.2.jar”这个 JAR 包,最后的“!”符号表示是对该 JAR 包内部资源的引用,也就是要使用的类文件就在这个 JAR 包里面 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素的作用是配置该库对应的 Java 文档Javadoc存放的位置信息开发人员在使用该库的过程中可以依据此信息方便地查阅库中各类、各方法等详细的文档注释进而更好地理解和运用该库所提供的各项功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2-javadoc.jar!/" />
<!-- 同样是通过“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,也就是位于 Maven 仓库相应路径下的“minlog-1.2-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,便于开发人员按需查看相应的文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素的主要用途是指定该库源代码所在的位置信息这对于开发人员想要深入了解库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常重要的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性清楚地表明源代码存放在 Maven 仓库对应路径下的“minlog-1.2-sources.jar”这个 JAR 包内,方便开发人员在需要的时候能够准确获取到相应的源代码资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处作为一个用于集中管理库相关配置信息的容器组件其“name”设定为“libraryTable”通常在项目开发环境、构建系统或者依赖管理工具中发挥作用用于对多个不同库library的各类配置信息进行统一的组织与管理方便开发人员后续查找、使用以及维护这些库相关的资源 -->
<library name="Maven: com.esotericsoftware.reflectasm:reflectasm:shaded:1.07">
<!-- “library”元素代表一个具体的库配置项目“name”属性采用了特定格式的 Maven 坐标来唯一标识该库。其中“com.esotericsoftware.reflectasm”是该库所属的组织或机构的标识groupId表明由“com.esotericsoftware.reflectasm”这个主体开发“reflectasm”是项目名称artifactId即该库的具体名称“shaded”可能是一种特殊的标识也许代表该库经过了某种混淆、打包等处理方式具体含义需结合该库的特性确定“1.07”是该库的版本号,通过这几部分共同构成的 Maven 坐标,能在 Maven 仓库以及相关依赖管理体系中精准地定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素的核心职责是定义该库中类文件资源的具体存放位置相关信息这对于项目在编译、运行等阶段准确地找到并加载相应的类文件起着关键作用是保障项目能够正常使用该库所提供功能的基础前提 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07-shaded.jar!/" />
<!-- “root”元素借助“url”属性清晰地指明类文件所在的具体位置。这里采用的是一种常规的资源定位表示方式意味着类文件存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体目录为“com/esotericsoftware/reflectasm/reflectasm/1.07/”对应的文件就是该目录中的“reflectasm-1.07-shaded.jar”这个 JAR 包,最后的“!”符号表示是对该 JAR 包内部资源的引用,也就是项目所需的类文件就在这个 JAR 包内部 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素负责配置该库对应的 Java 文档Javadoc存放的位置信息开发人员在使用该库过程中可依据此信息方便地查阅库中各类、各方法等详细的文档注释进而更好地理解和运用该库所提供的各项功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07-javadoc.jar!/" />
<!-- 同样通过“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,也就是位于 Maven 仓库相应路径下的“reflectasm-1.07-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,方便开发人员按需查看文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素主要用于指定该库源代码所在的位置信息这对于开发人员深入探究库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常重要的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性明确地表明源代码存放在 Maven 仓库对应路径下的“reflectasm-1.07-sources.jar”这个 JAR 包内,方便开发人员在需要查看或修改源代码时能够准确获取到相应资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处充当一个用于管理库相关配置信息的容器组件其“name”属性值为“libraryTable”通常在项目开发环境、构建系统或者依赖管理工具中发挥作用用来对多个不同的库library配置进行统一组织和管理便于开发人员集中查找、维护以及使用这些库相关的各类资源 -->
<library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.4.3">
<!-- “library”元素代表着一个具体的库配置实体“name”属性采用了标准的 Maven 坐标格式来唯一标识该库。其中“com.fasterxml.jackson.core”是该库所属的组织或者机构的标识groupId表明该库是由“com.fasterxml.jackson.core”这个主体开发的“jackson-annotations”是项目名称artifactId也就是这个库具体的称呼“2.4.3”则是该库对应的版本号,通过这三部分构成的 Maven 坐标,能够在 Maven 仓库以及相关的依赖管理体系中精准地定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素主要负责定义该库中类文件资源的具体存放位置相关信息这对于项目在编译、运行等阶段准确地找到并加载相应的类文件起着关键作用是保证项目可以正常使用该库所提供功能的基础条件 -->
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.4.3/jackson-annotations-2.4.3.jar!/" />
<!-- “root”元素借助“url”属性来清晰地指明类文件所在的具体位置。这里采用的是一种常见的资源定位表示方式意味着类文件被存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体的目录是“com/fasterxml/jackson/core/jackson-annotations/2.4.3/”对应的文件就是该目录中的“jackson-annotations-2.4.3.jar”这个 JAR 包,最后的“!”符号表示是对该 JAR 包内部资源的引用,也就是要使用的类文件就在这个 JAR 包里面 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素的作用是配置该库对应的 Java 文档Javadoc存放的位置信息开发人员在使用该库的过程中可以依据此信息方便地查阅库中各类、各方法等详细的文档注释进而更好地理解和运用该库所提供的各项功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.4.3/jackson-annotations-2.4.3-javadoc.jar!/" />
<!-- 同样是通过“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,也就是位于 Maven 仓库相应路径下的“jackson-annotations-2.4.3-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,便于开发人员按需查看相应的文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素的主要用途是指定该库源代码所在的位置信息这对于开发人员想要深入了解库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常重要的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.4.3/jackson-annotations-2.4.3-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性清楚地表明源代码存放在 Maven 仓库对应路径下的“jackson-annotations-2.4.3-sources.jar”这个 JAR 包内,方便开发人员在需要的时候能够准确获取到相应的源代码资源 -->
</SOURCES>
</library>
</component>

@ -1,13 +1,21 @@
<component name="libraryTable">
<!-- “component”元素在此处作为一个用于集中管理库相关配置信息的容器组件其名称“name”被设定为“libraryTable”通常会在项目开发的相关环境比如项目构建系统、依赖管理工具等场景中发挥作用主要负责对多个不同的库library配置信息进行统一组织与管理方便开发人员后续去查找、维护以及使用这些库对应的各类资源 -->
<library name="Maven: com.fasterxml.jackson.core:jackson-core:2.4.3">
<!-- “library”元素代表着一个具体的库配置项目“name”属性采用的是标准的 Maven 坐标格式来对该库进行唯一标识。其中“com.fasterxml.jackson.core”是这个库所属的组织或者机构的标识groupId说明该库是由“com.fasterxml.jackson.core”主体进行开发的“jackson-core”是项目名称artifactId也就是这个库具体的名称“2.4.3”则为该库对应的版本号,通过这三部分共同构成的 Maven 坐标,能让项目在 Maven 仓库以及整个依赖管理体系中精准地定位到这一特定的库 -->
<CLASSES>
<!-- “CLASSES”元素的主要职责是定义该库中类文件资源的具体存放位置相关信息这对于项目在编译、运行等阶段准确地找到并加载对应的类文件起着至关重要的作用是确保项目能够正常使用该库所提供功能的基础所在 -->
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.4.3/jackson-core-2.4.3.jar!/" />
<!-- “root”元素借助“url”属性来清晰地指明类文件所在的具体位置。这里采用的是一种常规的资源定位表示方式意味着类文件存放在由变量“$MAVEN_REPOSITORY$”所指代的 Maven 仓库路径下具体的目录路径为“com/fasterxml/jackson/core/jackson-core/2.4.3/”对应的文件就是该目录下的“jackson-core-2.4.3.jar”这个 JAR 包,最后的“!”符号表示是对该 JAR 包内部资源的引用,也就是项目需要使用的类文件就在这个 JAR 包内部 -->
</CLASSES>
<JAVADOC>
<!-- “JAVADOC”元素负责配置该库对应的 Java 文档Javadoc存放的位置信息开发人员在使用该库的过程中可以依据此信息方便地查阅库中各类、各方法等详细的文档注释进而更好地理解和运用该库所提供的各项功能 -->
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.4.3/jackson-core-2.4.3-javadoc.jar!/" />
<!-- 同样是通过“root”元素的“url”属性来准确指定 Java 文档所在的具体位置,也就是位于 Maven 仓库相应路径下的“jackson-core-2.4.3-javadoc.jar”这个专门用来存放 Java 文档的 JAR 包内部,方便开发人员按需查看文档内容 -->
</JAVADOC>
<SOURCES>
<!-- “SOURCES”元素主要用于指定该库源代码所在的位置信息这对于开发人员深入探究库的内部实现原理、进行代码调试或者基于该库开展二次开发等工作时是非常重要的参考依据 -->
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.4.3/jackson-core-2.4.3-sources.jar!/" />
<!-- 按照类似的资源定位语法通过“url”属性明确地表明源代码存放在 Maven 仓库对应路径下的“jackson-core-2.4.3-sources.jar”这个 JAR 包内,方便开发人员在需要查看或修改源代码时能够准确获取到相应资源 -->
</SOURCES>
</library>
</component>

@ -1,12 +1,27 @@
<!-- 定义一个名为"libraryTable"的组件,通常用于配置相关库信息 -->
<component name="libraryTable">
<!-- 配置一个Maven库库的坐标为"org.apache.commons:commons-math3:3.4.1"通过这个坐标能在Maven仓库中定位该库 -->
<library name="Maven: org.apache.commons:commons-math3:3.4.1">
<!-- 用于指定该库编译后的类文件所在位置相关配置 -->
<CLASSES>
<!--
url属性定义了类文件所在的JAR包路径使用了"$MAVEN_REPOSITORY$"占位符实际使用时会替换为真实的Maven仓库路径
此处指向的是"commons-math3-3.4.1.jar"这个JAR包内部最后的"!/"表示访问JAR包内部结构
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.4.1/commons-math3-3.4.1.jar!/" />
</CLASSES>
<!-- 用于指定该库对应的Java文档所在位置相关配置 -->
<JAVADOC>
<!--
url属性定义了Java文档所在的JAR包路径此处对应的是"commons-math3-3.4.1-javadoc.jar",方便查看库中各类、方法等的文档注释说明
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.4.1/commons-math3-3.4.1-javadoc.jar!/" />
</JAVADOC>
<!-- 用于指定该库源代码所在位置相关配置 -->
<SOURCES>
<!--
url属性定义了源代码所在的JAR包路径对应的是"commons-math3-3.4.1-sources.jar",便于查看具体代码实现以及调试等操作
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.4.1/commons-math3-3.4.1-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,27 @@
<!-- component元素用于定义一个配置组件此处名为"libraryTable",可能是用于集中管理多个库相关配置信息的容器 -->
<component name="libraryTable">
<!-- library元素用来配置一个具体的Maven库下面的name属性指定了该库在Maven仓库中的唯一标识坐标 -->
<library name="Maven: org.apache.curator:curator-client:2.1.0-incubating">
<!-- CLASSES元素用于指定该库编译后的类文件相关配置 -->
<CLASSES>
<!--
root元素的url属性定义了类文件所在的具体位置以"jar://"开头的格式表示这是一个指向JAR包内部的路径。
"$MAVEN_REPOSITORY$"是一个占位符实际会替换为真实的Maven仓库路径后续指向的是curator-client-2.1.0-incubating.jar这个JAR包最后的"!/"表示可访问该JAR包内部结构来获取类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.1.0-incubating/curator-client-2.1.0-incubating.jar!/" />
</CLASSES>
<!-- JAVADOC元素用于配置该库对应的Java文档相关信息 -->
<JAVADOC>
<!--
root元素的url属性定义了Java文档所在的JAR包路径此处指向curator-client-2.1.0-incubating-javadoc.jar这个JAR包方便开发人员查看该库各类、方法等的详细文档说明。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.1.0-incubating/curator-client-2.1.0-incubating-javadoc.jar!/" />
</JAVADOC>
<!-- SOURCES元素用于指定该库源代码所在的相关配置 -->
<SOURCES>
<!--
root元素的url属性定义了源代码所在的JAR包路径指向curator-client-2.1.0-incubating-sources.jar这个JAR包便于开发时查看代码实现逻辑、进行调试等操作。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.1.0-incubating/curator-client-2.1.0-incubating-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,27 @@
<!-- 这里的<component>标签定义了一个名为"libraryTable"的组件,它通常用于集中管理各类库的相关配置信息 -->
<component name="libraryTable">
<!-- <library>标签用于配置一个具体的Maven库name属性指定了该库在Maven仓库中的唯一标识坐标 -->
<library name="Maven: org.apache.curator:curator-framework:2.4.0">
<!-- <CLASSES>元素的作用是指定该Maven库编译后的类文件相关的配置信息 -->
<CLASSES>
<!--
<root>标签下的url属性定义了类文件所在的具体位置。其采用了以"jar://"开头的格式表明这是指向JAR包内部的路径。
"$MAVEN_REPOSITORY$"是一个占位符在实际应用中会被替换为真实的Maven仓库路径后续指向的是curator-framework-2.4.0.jar这个JAR包最后的"!/"表示可以访问该JAR包内部结构来获取类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-framework/2.4.0/curator-framework-2.4.0.jar!/" />
</CLASSES>
<!-- <JAVADOC>元素用于配置该Maven库对应的Java文档相关的配置信息 -->
<JAVADOC>
<!--
<root>标签下的url属性定义了Java文档所在的JAR包路径此处指向的是curator-framework-2.4.0-javadoc.jar这个JAR包方便开发人员查看该库中各类、方法等的详细文档说明。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-framework/2.4.0/curator-framework-2.4.0-javadoc.jar!/" />
</JAVADOC>
<!-- <SOURCES>元素用于指定该Maven库源代码所在的相关配置信息 -->
<SOURCES>
<!--
<root>标签下的url属性定义了源代码所在的JAR包路径此处指向的是curator-framework-2.4.0-sources.jar这个JAR包便于开发时查看代码实现逻辑、进行调试等操作。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-framework/2.4.0/curator-framework-2.4.0-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,43 @@
<!--
<component>元素用于定义一个配置组件此处它的name属性值为"libraryTable"
通常可理解为是一个用来集中收纳、管理多个库相关配置信息的容器组件。
-->
<component name="libraryTable">
<!--
<library>元素用于配置具体的Maven库信息其name属性指定了该库在Maven仓库中的唯一标识坐标
这里配置的是org.apache.curator项目下的curator-recipes库版本号为2.4.0。
-->
<library name="Maven: org.apache.curator:curator-recipes:2.4.0">
<!--
<CLASSES>元素负责指定该Maven库经过编译后生成的类文件相关配置情况。
-->
<CLASSES>
<!--
<root>元素的url属性详细定义了类文件所在的具体位置。
它采用“jar://”开头的格式表示这是指向JAR包内部的路径描述方式。
其中“$MAVEN_REPOSITORY$”是一个占位符在实际应用场景中会被替换成真实的Maven仓库的路径地址。
后续所指向的是curator-recipes-2.4.0.jar这个具体的JAR包最后的“!/" 是用于表明可以访问该JAR包内部的结构进而获取到相应的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-recipes/2.4.0/curator-recipes-2.4.0.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的作用是配置该Maven库对应的Java文档相关的配置信息方便开发人员查阅各类、方法等的详细文档注释内容。
-->
<JAVADOC>
<!--
<root>元素的url属性明确了Java文档所在的JAR包路径这里指向的是curator-recipes-2.4.0-javadoc.jar这个JAR包
通过该配置开发工具可以方便地关联并展示对应的Java文档。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-recipes/2.4.0/curator-recipes-2.4.0-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素用于指定该Maven库源代码所在的相关配置信息便于开发过程中查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的url属性定义了源代码所在的JAR包路径此处对应的是curator-recipes-2.4.0-sources.jar这个JAR包
开发人员可依据此配置找到并查看该库的源代码内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-recipes/2.4.0/curator-recipes-2.4.0-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,47 @@
<!--
<component>元素在此处用于定义一个名为"libraryTable"的组件,它往往充当一个容器,
用来集中管理各类库的相关配置信息,方便在整个项目配置体系中进行统一组织和查找。
-->
<component name="libraryTable">
<!--
<library>元素的作用是配置一个具体的Maven库其name属性给出了该库在Maven仓库中的唯一标识坐标。
这里配置的是org.apache.derby项目下名为"derby"的库版本号为10.10.2.0。
-->
<library name="Maven: org.apache.derby:derby:10.10.2.0">
<!--
<CLASSES>元素主要用于指定该Maven库经过编译后所生成的类文件相关配置信息
告知系统去哪里找到这些类文件以便在项目运行等阶段进行加载使用。
-->
<CLASSES>
<!--
<root>元素的url属性详细定义了类文件所在的具体位置。它以“jar://”开头,
代表这是一种指向JAR包内部的路径表示形式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际运行环境中会被替换为真实的Maven仓库的具体路径。
后续指向的是“derby-10.10.2.0.jar”这个JAR包最后的“!/" 表示可以访问该JAR包内部结构
从而获取到对应的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/derby/derby/10.10.2.0/derby-10.10.2.0.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素负责配置该Maven库对应的Java文档相关的配置信息
开发人员借助此配置能够方便地查看库中各类、方法等元素的详细文档注释内容,辅助开发工作。
-->
<JAVADOC>
<!--
<root>元素的url属性明确了Java文档所在的JAR包路径这里对应的是“derby-10.10.2.0-javadoc.jar”这个JAR包
使得开发工具可以准确关联并展示相应的Java文档。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/derby/derby/10.10.2.0/derby-10.10.2.0-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素用于指定该Maven库源代码所在的相关配置信息
在开发过程中,开发人员可依据此配置找到源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的url属性定义了源代码所在的JAR包路径此处对应的是“derby-10.10.2.0-sources.jar”这个JAR包
方便开发人员按需获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/derby/derby/10.10.2.0/derby-10.10.2.0-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,48 @@
<!--
<component>元素在此处定义了一个名为"libraryTable"的组件,它通常扮演着集中管理库相关配置信息的角色,
就像是一个收纳盒,把各个库的配置有条理地放在一起,便于在项目整体配置架构中进行查找和管理。
-->
<component name="libraryTable">
<!--
<library>元素用于配置一个具体的Maven库其name属性明确了该库在Maven仓库中的唯一标识坐标。
这里配置的是org.apache.directory.api项目下名为"api-asn1-api"的库版本号为1.0.0-M20
其中“M20”可能表示该版本处于某种里程碑或者特定的迭代阶段不同项目对版本号后缀有不同定义
-->
<library name="Maven: org.apache.directory.api:api-asn1-api:1.0.0-M20">
<!--
<CLASSES>元素的主要职责是指定该Maven库编译后生成的类文件相关配置信息
让项目在运行、构建等环节能够知晓去哪里获取这些类文件来进行相应的操作,比如加载类等。
-->
<CLASSES>
<!--
<root>元素的url属性详细说明了类文件所在的具体位置。其以“jar://”开头,
这是一种指向JAR包内部的路径表示方式。“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中会被替换成真实的Maven仓库路径。
后续指向的是“api-asn1-api-1.0.0-M20.jar”这个JAR包最后的“!/" 表示可以访问该JAR包内部结构
进而获取到里面的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素用于配置该Maven库对应的Java文档相关配置信息
开发人员通过这样的配置,能方便地查阅库中各类、方法等元素的详细文档注释,有助于理解和使用该库。
-->
<JAVADOC>
<!--
<root>元素的url属性清晰地指出了Java文档所在的JAR包路径这里对应的是“api-asn1-api-1.0.0-M20-javadoc.jar”这个JAR包
便于开发工具依据此路径关联并展示相应的Java文档。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素负责指定该Maven库源代码所在的相关配置信息
在开发过程中,开发人员可以根据此配置找到对应的源代码,用于查看代码的具体实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的url属性定义了源代码所在的JAR包路径此处对应的是“api-asn1-api-1.0.0-M20-sources.jar”这个JAR包
方便开发人员按需获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,48 @@
<!--
<component>元素在这里被定义,其名为"libraryTable",它一般作为一个集中管理各类库配置信息的容器存在,
能让整个项目在处理多个库的相关配置时更加有条理,方便查找与维护各个库对应的配置详情。
-->
<component name="libraryTable">
<!--
<library>元素用于配置具体的一个Maven库它的name属性指定了该库在Maven仓库中的唯一标识坐标。
此处配置的是org.apache.directory.api项目下名为"api-util"的库版本号是1.0.0-M20
“M20”通常意味着这个版本处于特定的开发阶段可能是第20个里程碑版本之类的具体依项目自身定义而定
-->
<library name="Maven: org.apache.directory.api:api-util:1.0.0-M20">
<!--
<CLASSES>元素的核心作用是明确该Maven库编译后生成的类文件相关配置信息
使得项目在诸如运行、构建等不同阶段可以准确知晓去哪里获取这些类文件,从而顺利进行后续操作。
-->
<CLASSES>
<!--
<root>元素的url属性详细地定义了类文件所在的具体位置。它以“jar://”开头,
这是一种用于指向JAR包内部的路径表示形式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中这个占位符会被替换成真实的Maven仓库的实际路径。
紧接着指向的是“api-util-1.0.0-M20.jar”这个具体的JAR包最后的“!/" 表示可以访问该JAR包内部的结构
以获取到里面包含的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的功能在于配置该Maven库对应的Java文档相关配置信息
方便开发人员在开发过程中能够便捷地查阅库中各类、各方法等元素所附带的详细文档注释,辅助进行代码编写等工作。
-->
<JAVADOC>
<!--
<root>元素的url属性清晰地指出了Java文档所在的JAR包路径在这里对应的是“api-util-1.0.0-M20-javadoc.jar”这个JAR包
开发工具能够依据此路径来准确关联并展示相应的Java文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素主要负责指定该Maven库源代码所在的相关配置信息
在开发环节中,开发人员借助此配置就可以找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的url属性定义了源代码所在的JAR包路径此处对应的是“api-util-1.0.0-M20-sources.jar”这个JAR包
方便开发人员根据需求去获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20-sources.jar!/" />
</SOURCES>
</library>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.apache.directory.server:apacheds-i18n:2.0.0-M15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,49 @@
<!--
<component>元素在此处定义了一个名为“libraryTable”的组件它的作用类似一个容器
用于集中管理各个库的相关配置信息,使得项目中众多库的配置能够被有序组织起来,便于查找与维护。
-->
<component name="libraryTable">
<library name="Maven: org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15">
<!--
<library>元素用来配置一个具体的 Maven 库其name属性指定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是org.apache.directory.server项目下名为“apacheds-i18n”的库版本号为2.0.0-M15
其中“M15”通常表示该版本处于特定的开发阶段比如可能是第 15 个里程碑版本(具体含义依项目自身的版本管理策略而定)。
-->
<library name="Maven: org.apache.directory.server:apacheds-i18n:2.0.0-M15">
<!--
<CLASSES>元素主要负责指定该 Maven 库编译后生成的类文件相关配置信息,
以便项目在运行、构建等过程中能够清楚地知道去哪里获取这些类文件来进行后续操作,例如类的加载等。
-->
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15.jar!/" />
<!--
<root>元素的url属性详细地定义了类文件所在的具体位置。它以“jar://”开头,
这是一种用于指向 JAR 包内部的路径表示形式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中,会被替换为真实的 Maven 仓库的实际路径。
后续指向的是“apacheds-i18n-2.0.0-M15.jar”这个 JAR 包,最后的“!/" 表示可以访问该 JAR 包内部的结构,
从而获取到里面包含的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的作用是配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员通过该配置就能方便地查阅库中各类、各方法等元素附带的详细文档注释,有助于更好地理解和使用这个库。
-->
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15-javadoc.jar!/" />
<!--
<root>元素的url属性明确指出了 Java 文档所在的 JAR 包路径此处对应的是“apacheds-i18n-2.0.0-M15-javadoc.jar”这个 JAR 包,
开发工具可依据此路径来关联并展示相应的 Java 文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素主要用于指定该 Maven 库源代码所在的相关配置信息,
在开发过程中,开发人员借助此配置就能找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15-sources.jar!/" />
<!--
<root>元素的url属性定义了源代码所在的 JAR 包路径此处对应的是“apacheds-i18n-2.0.0-M15-sources.jar”这个 JAR 包,
方便开发人员根据需求获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,12 +1,47 @@
<!--
<component>元素定义了一个名为“libraryTable”的组件它在整个配置体系里通常充当一个容器角色
目的是集中收纳和管理众多库的相关配置信息,使得项目中各个库的配置有条理地整合在一起,方便后续查找与维护操作。
-->
<component name="libraryTable">
<!--
<library>元素用于配置一个具体的 Maven 库其“name”属性指定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是 org.apache.hadoop 项目下名为“hadoop-annotations”的库版本号为 2.6.4。
-->
<library name="Maven: org.apache.hadoop:hadoop-annotations:2.6.4">
<!--
<CLASSES>元素的主要作用是明确该 Maven 库编译后所生成的类文件相关配置信息,
这样在项目运行、构建或者开发过程中,相关系统就能知晓从何处获取这些类文件,进而进行类的加载等操作。
-->
<CLASSES>
<!--
<root>元素的“url”属性详细定义了类文件所在的具体位置。其以“jar://”开头,
这是一种表示指向 JAR 包内部的路径格式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景下,会被替换为真实的 Maven 仓库的实际路径。
后续指向的是“hadoop-annotations-2.6.4.jar”这个具体的 JAR 包,最后的“!/" 表示能够访问该 JAR 包内部的结构,
从而获取到里面的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-annotations/2.6.4/hadoop-annotations-2.6.4.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素负责配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员依靠此配置,就能方便地查阅库中各类、各方法等元素附带的详细文档注释,有助于更好地理解和使用这个库。
-->
<JAVADOC>
<!--
<root>元素的“url”属性清晰地指出了 Java 文档所在的 JAR 包路径此处对应的是“hadoop-annotations-2.6.4-javadoc.jar”这个 JAR 包,
开发工具可依据此路径来关联并展示相应的 Java 文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-annotations/2.6.4/hadoop-annotations-2.6.4-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素重点用于指定该 Maven 库源代码所在的相关配置信息,
在开发阶段,开发人员借助此配置就能找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的“url”属性定义了源代码所在的 JAR 包路径此处对应的是“hadoop-annotations-2.6.4-sources.jar”这个 JAR 包,
方便开发人员按需获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-annotations/2.6.4/hadoop-annotations-2.6.4-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,47 @@
<!--
<component>元素在此处用于定义一个名为“libraryTable”的组件它一般充当一个容器
用来集中管理项目中各个库的相关配置信息,便于对众多库配置进行统一组织与管理,方便后续查找与维护。
-->
<component name="libraryTable">
<!--
<library>元素的功能是配置一个具体的 Maven 库其“name”属性指定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是 org.apache.hadoop 项目下名为“hadoop-auth”的库版本号是 2.6.4。
-->
<library name="Maven: org.apache.hadoop:hadoop-auth:2.6.4">
<!--
<CLASSES>元素主要负责指定该 Maven 库编译后所生成的类文件相关配置信息,
以便项目在诸如构建、运行等阶段能够清楚地知道去哪里获取这些类文件,从而顺利进行后续的类加载等操作。
-->
<CLASSES>
<!--
<root>元素的“url”属性详细地定义了类文件所在的具体位置。它以“jar://”开头,
这是一种用于指向 JAR 包内部的路径表示形式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中,该占位符会被替换为真实的 Maven 仓库的实际路径。
后续指向的是“hadoop-auth-2.6.4.jar”这个 JAR 包,最后的“!/" 表示可以访问该 JAR 包内部的结构,
进而获取到里面包含的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-auth/2.6.4/hadoop-auth-2.6.4.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的作用在于配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员通过这个配置就能便捷地查阅库中各类、各方法等附带的详细文档注释,有助于更好地理解和使用该库。
-->
<JAVADOC>
<!--
<root>元素的“url”属性明确指出了 Java 文档所在的 JAR 包路径此处对应的是“hadoop-auth-2.6.4-javadoc.jar”这个 JAR 包,
开发工具可以依据此路径来关联并展示相应的 Java 文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-auth/2.6.4/hadoop-auth-2.6.4-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素重点用于指定该 Maven 库源代码所在的相关配置信息,
在开发过程中,开发人员借助此配置就能够找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的“url”属性定义了源代码所在的 JAR 包路径此处对应的是“hadoop-auth-2.6.4-sources.jar”这个 JAR 包,
方便开发人员根据自身需求获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-auth/2.6.4/hadoop-auth-2.6.4-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,47 @@
<!--
<component>元素在此处定义了一个名为“libraryTable”的组件它通常扮演着一个配置信息容器的角色
目的是将项目中诸多库的相关配置进行统一的收纳和管理,使得这些配置能够有条理地整合在一起,便于后续的查找与维护操作。
-->
<component name="libraryTable">
<!--
<library>元素用于配置一个具体的 Maven 库其“name”属性指定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是 org.apache.hadoop 项目下名为“hadoop-client”的库版本号为 2.6.4。
-->
<library name="Maven: org.apache.hadoop:hadoop-client:2.6.4">
<!--
<CLASSES>元素的核心作用是指定该 Maven 库编译后生成的类文件相关配置信息,
这样在项目运行、构建或者进行开发相关操作时,系统就能明确知晓去哪里获取这些类文件,进而完成类的加载等必要操作。
-->
<CLASSES>
<!--
<root>元素的“url”属性详细地定义了类文件所在的具体位置。其以“jar://”开头,
这是一种表示指向 JAR 包内部的路径格式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中,会被替换为真实的 Maven 仓库的实际路径。
后续指向的是“hadoop-client-2.6.4.jar”这个具体的 JAR 包,最后的“!/" 表示可以访问该 JAR 包内部的结构,
从而获取到里面包含的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-client/2.6.4/hadoop-client-2.6.4.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素负责配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员借助此配置,就可以方便地查阅库中各类、各方法等元素附带的详细文档注释,有助于更好地理解和使用这个库。
-->
<JAVADOC>
<!--
<root>元素的“url”属性清晰地指出了 Java 文档所在的 JAR 包路径此处对应的是“hadoop-client-2.6.4-javadoc.jar”这个 JAR 包,
开发工具可依据此路径来关联并展示相应的 Java 文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-client/2.6.4/hadoop-client-2.6.4-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素重点用于指定该 Maven 库源代码所在的相关配置信息,
在开发过程中,开发人员依靠此配置就能找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的“url”属性定义了源代码所在的 JAR 包路径此处对应的是“hadoop-client-2.6.4-sources.jar”这个 JAR 包,
方便开发人员按需获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-client/2.6.4/hadoop-client-2.6.4-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,47 @@
<!--
<component>元素在此处定义了一个名为“libraryTable”的组件它通常作为一个配置信息的容器存在
主要作用是将项目中各个不同的库相关配置进行统一管理,便于有条理地整合和查找各库的具体配置内容。
-->
<component name="libraryTable">
<!--
<library>元素用于配置一个具体的 Maven 库其“name”属性明确指定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是 org.apache.hadoop 项目下名为“hadoop-common”的库版本号是 2.6.4。
-->
<library name="Maven: org.apache.hadoop:hadoop-common:2.6.4">
<!--
<CLASSES>元素重点负责指定该 Maven 库编译后所生成的类文件相关配置信息,
这样在项目后续进行构建、运行或者开发等操作时,相关系统就能清楚地知晓从哪里获取这些类文件,进而完成诸如类加载之类的必要操作。
-->
<CLASSES>
<!--
<root>元素的“url”属性详细地定义了类文件所在的具体位置。其以“jar://”开头,
这是一种表示指向 JAR 包内部的路径格式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中,该占位符会被替换为真实的 Maven 仓库的实际路径。
后续指向的是“hadoop-common-2.6.4.jar”这个具体的 JAR 包,最后的“!/" 表示可以访问该 JAR 包内部的结构,
从而获取到里面包含的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-common/2.6.4/hadoop-common-2.6.4.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的作用在于配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员借助此配置,就可以方便地查阅库中各类、各方法等元素附带的详细文档注释,有助于更好地理解和使用这个库。
-->
<JAVADOC>
<!--
<root>元素的“url”属性清晰地指出了 Java 文档所在的 JAR 包路径此处对应的是“hadoop-common-2.6.4-javadoc.jar”这个 JAR 包,
开发工具可依据此路径来关联并展示相应的 Java 文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-common/2.6.4/hadoop-common-2.6.4-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素主要用于指定该 Maven 库源代码所在的相关配置信息,
在开发过程中,开发人员依靠此配置就能找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的“url”属性定义了源代码所在的 JAR 包路径此处对应的是“hadoop-common-2.6.4-sources.jar”这个 JAR 包,
方便开发人员按需获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-common/2.6.4/hadoop-common-2.6.4-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,46 @@
<!--
<component>元素用于定义一个名为“libraryTable”的配置组件它起到一个容器的作用
可用来对项目中诸多不同库的相关配置信息进行集中收纳与管理,便于后续清晰、有条理地查找和维护各库配置详情。
-->
<component name="libraryTable">
<!--
<library>元素在此处用于配置一个具体的 Maven 库其“name”属性给定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是来自 org.apache.hadoop 项目下的“hadoop-hdfs”库版本号明确为 2.6.4,通过这个坐标能精准定位该库资源。
-->
<library name="Maven: org.apache.hadoop:hadoop-hdfs:2.6.4">
<!--
<CLASSES>元素的主要职责在于指定该 Maven 库经过编译后所生成的类文件相关配置信息,
如此一来,在项目后续的构建、运行以及开发等环节中,系统就能依据此配置知晓去哪里获取这些类文件,进而完成类加载等操作。
-->
<CLASSES>
<!--
<root>元素的“url”属性详细地界定了类文件所在的具体位置。它以“jar://”开头,这是一种用于指示指向 JAR 包内部的路径表示形式。
其中“$MAVEN_REPOSITORY$”属于占位符,在实际运用场景里,会被替换成真实的 Maven 仓库所对应的实际路径。
而后续所指向的就是“hadoop-hdfs-2.6.4.jar”这个特定的 JAR 包,最后的“!/" 标记表示可以访问该 JAR 包内部的结构,
以便从中获取到相应的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-hdfs/2.6.4/hadoop-hdfs-2.6.4.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的功能是配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员借助此配置,能够便捷地查阅库内各类、各方法等元素所附带的详细文档注释内容,有助于更好地理解并运用这个库。
-->
<JAVADOC>
<!--
<root>元素的“url”属性清晰地指明了 Java 文档所在的 JAR 包路径此处对应的是“hadoop-hdfs-2.6.4-javadoc.jar”这个 JAR 包,
开发工具可以依照此路径去关联并展示相应的 Java 文档详情。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-hdfs/2.6.4/hadoop-hdfs-2.6.4-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素着重用于指定该 Maven 库源代码所在的相关配置信息,
在开发过程中,开发人员依靠这一配置就能顺利找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等相关操作。
-->
<SOURCES>
<!--
<root>元素的“url”属性定义了源代码所在的 JAR 包路径此处对应的是“hadoop-hdfs-2.6.4-sources.jar”这个 JAR 包,
方便开发人员按自身需求获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-hdfs/2.6.4/hadoop-hdfs-2.6.4-sources.jar!/" />
</SOURCES>
</library>

@ -1,12 +1,48 @@
<!--
<component>元素在此处定义了一个名为“libraryTable”的组件它一般作为一个配置信息的容器存在
主要用于集中管理项目中各个库的相关配置信息,使得众多库的配置能够有序整合,方便后续查找、维护以及在项目构建等过程中使用。
-->
<component name="libraryTable">
<!--
<library>元素的作用是配置一个具体的 Maven 库其“name”属性指定了该库在 Maven 仓库中的唯一标识坐标。
这里配置的是 org.apache.hadoop 项目下名为“hadoop-mapreduce-client-app”的库版本号为 2.6.4
通过这个坐标Maven 工具等可以准确地定位到该库及其相关资源。
-->
<library name="Maven: org.apache.hadoop:hadoop-mapreduce-client-app:2.6.4">
<!--
<CLASSES>元素重点负责指定该 Maven 库编译后生成的类文件相关配置信息,
这样在项目运行、构建或者开发等环节,系统就能清楚知道从何处获取这些类文件,以进行后续诸如类加载之类的必要操作。
-->
<CLASSES>
<!--
<root>元素的“url”属性详细地定义了类文件所在的具体位置。其以“jar://”开头,
这是一种表示指向 JAR 包内部的路径格式。其中“$MAVEN_REPOSITORY$”是一个占位符,
在实际应用场景中,该占位符会被替换为真实的 Maven 仓库的实际路径。
后续指向的是“hadoop-mapreduce-client-app-2.6.4.jar”这个具体的 JAR 包,最后的“!/" 表示可以访问该 JAR 包内部的结构,
从而获取到里面包含的类文件。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-mapreduce-client-app/2.6.4/hadoop-mapreduce-client-app-2.6.4.jar!/" />
</CLASSES>
<!--
<JAVADOC>元素的作用在于配置该 Maven 库对应的 Java 文档相关配置信息,
开发人员借助此配置,就可以方便地查阅库中各类、各方法等附带的详细文档注释,有助于更好地理解和使用这个库。
-->
<JAVADOC>
<!--
<root>元素的“url”属性清晰地指出了 Java 文档所在的 JAR 包路径此处对应的是“hadoop-mapreduce-client-app-2.6.4-javadoc.jar”这个 JAR 包,
开发工具可依据此路径来关联并展示相应的 Java 文档内容。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-mapreduce-client-app/2.6.4/hadoop-mapreduce-client-app-2.6.4-javadoc.jar!/" />
</JAVADOC>
<!--
<SOURCES>元素主要用于指定该 Maven 库源代码所在的相关配置信息,
在开发过程中,开发人员依靠此配置就能找到对应的源代码,进而查看具体的代码实现逻辑、进行调试等操作。
-->
<SOURCES>
<!--
<root>元素的“url”属性定义了源代码所在的 JAR 包路径此处对应的是“hadoop-mapreduce-client-app-2.6.4-sources.jar”这个 JAR 包,
方便开发人员按需获取源代码资源。
-->
<root url="jar://$MAVEN_REPOSITORY$/org/apache/hadoop/hadoop-mapreduce-client-app/2.6.4/hadoop-mapreduce-client-app-2.6.4-sources.jar!/" />
</SOURCES>
</library>

@ -1,123 +1,155 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是XML文件的声明部分指定了XML的版本为1.0以及使用的字符编码为UTF-8用于告知解析器如何正确解析该文件 -->
<project version="4">
<!-- project元素是整个XML文档的根元素version属性可能表示该项目配置文件的版本号用于区分不同格式或阶段的项目配置 -->
<component name="Palette2">
<!-- component元素用于定义项目中的各个组件这里的Palette2组件可能与某种工具面板Palette相关的配置有关也许用于存放可在界面设计等场景中使用的各类组件相关设置 -->
<group name="Swing">
<!-- group元素用于对相关的子元素进行分组此处名为"Swing"的组大概率是将一系列与Swing框架相关的UI组件归为一组方便管理和使用 -->
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<!-- item元素表示一个具体的组件项class属性指定了该组件对应的类名此处是用于水平间隔的HSpacer类tooltip-text属性定义了鼠标悬停时显示的提示文本icon属性指定了该组件在相关界面中显示的图标路径removable属性为false表示不可移除auto-create-binding属性为false表示不会自动创建绑定can-attach-label属性为false表示不能附加标签 -->
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
<!-- default-constraints元素用于定义该组件的默认布局约束vsize-policy和hsize-policy属性可能分别控制垂直和水平方向的尺寸策略具体数值对应的策略需参考相关框架文档anchor属性可能用于确定组件在容器中的锚点位置fill属性可能与组件填充容器空间的方式相关 -->
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
<!-- 这里同样是一个间隔组件不过是垂直间隔VSpacer类其各属性含义与上述水平间隔组件类似只是尺寸策略等参数值不同以适应垂直方向的布局需求 -->
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
<!-- 表示一个Swing中的JPanel组件JPanel通常用于作为其他组件的容器其默认约束定义了在垂直和水平方向的尺寸策略以及锚点和填充方式等布局相关参数 -->
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
<!-- JScrollPane组件用于提供滚动功能比如当内容超出显示区域时可滚动查看这里定义了它的默认布局约束如尺寸策略等参数 -->
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
<!-- JButton是常见的按钮组件default-constraints定义了其默认布局相关参数initial-values元素内的property元素用于设置组件的初始属性值此处设置了按钮显示的文本为"Button" -->
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
<!-- JRadioButton是单选按钮组件同样定义了默认布局约束并通过initial-values设置了显示文本为"RadioButton" -->
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
<!-- JCheckBox是复选框组件布局约束及初始文本设置的方式与其他按钮类组件类似 -->
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
<!-- JLabel是用于显示文本或图像的标签组件这里设置了其默认布局约束以及初始显示的文本内容 -->
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
<!-- JTextField是文本输入框组件default-constraints定义布局相关参数preferred-size元素指定了组件的首选尺寸这里宽度为150像素高度为自适应-1表示由布局管理器根据内容等情况自动确定 -->
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
<!-- JPasswordField是用于输入密码的文本框组件布局相关设置与普通文本框类似用于控制其在界面中的显示和布局情况 -->
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
<!-- JFormattedTextField是格式化文本输入框组件可按照特定格式输入内容同样有着相应的布局参数设置 -->
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
<!-- JTextArea是多行文本输入区域组件这里定义了其默认布局约束以及首选尺寸使其在界面中以合适的大小和位置显示 -->
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
<!-- JTextPane是更复杂的文本编辑组件支持富文本等功能也有着对应的布局参数配置 -->
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
<!-- JEditorPane同样可用于显示和编辑文本内容特别是支持HTML等格式文本其布局相关设置控制在界面中的呈现方式 -->
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
<!-- JComboBox是下拉列表组件default-constraints元素定义了它在垂直和水平方向的尺寸策略等布局参数 -->
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
<!-- JTable是表格组件用于展示多行多列的数据这里配置了其默认布局约束和首选尺寸 -->
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
<!-- JList是列表组件用于展示一组数据项其布局参数定义了在界面中的显示方式和尺寸策略等 -->
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
<!-- JTree是树形结构组件常用于展示具有层级关系的数据通过布局参数设置来确定在界面中的显示效果 -->
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
<!-- JTabbedPane是选项卡面板组件可通过切换不同的选项卡来显示不同的内容这里定义了其默认的布局约束和首选尺寸 -->
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
<!-- JSplitPane是分割面板组件可将界面分割成不同的区域其布局参数配置决定了在界面中的显示样式和尺寸等 -->
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
<!-- JSpinner是微调器组件用于通过按钮等方式调整数值等内容布局参数控制其在界面中的布局情况 -->
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
<!-- JSlider是滑块组件常用于调整数值范围等操作其布局相关设置决定在界面中的显示和交互方式 -->
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
<!-- JSeparator是分隔线组件用于在界面中进行视觉上的分隔布局参数控制其显示样式和位置等 -->
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
<!-- JProgressBar是进度条组件用于展示任务的进度情况布局参数设置影响其在界面中的显示效果 -->
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
<!-- JToolBar是工具栏组件可放置各种工具按钮等元素这里定义了其默认布局约束和首选尺寸宽度自适应高度为20像素 -->
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
<!-- JToolBar$Separator可能是工具栏中的分隔符组件用于区分不同的工具按钮组等有着相应的布局参数设置 -->
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
<!-- JScrollBar是滚动条组件用于为可滚动的内容提供滚动交互功能布局参数确定其在界面中的显示和行为方式 -->
</item>
</group>
</component>

@ -1,58 +1,222 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="ALL" />
</component>
<component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
<change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__antlr_antlr_2_7_7.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__asm_asm_3_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_101tec_zkclient_0_3.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_fastjson_1_1_41.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_clearspring_analytics_stream_2_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_esotericsoftware_kryo_kryo_2_21.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_esotericsoftware_minlog_minlog_1_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_esotericsoftware_reflectasm_reflectasm_shaded_1_07.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_4_3.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_4_3.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_4_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_4_3.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_scala_2_10_2_4_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_scala_2_10_2_4_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_guava_guava_14_0_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_guava_guava_14_0_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_5_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_5_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_googlecode_javaewah_JavaEWAH_0_3_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_googlecode_javaewah_JavaEWAH_0_3_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_jolbox_bonecp_0_8_0_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_jolbox_bonecp_0_8_0_RELEASE.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_ning_compress_lzf_1_0_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_ning_compress_lzf_1_0_3.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_9.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_9.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_9.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_9.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_9.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_9.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_thoughtworks_paranamer_paranamer_2_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_thoughtworks_paranamer_paranamer_2_6.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_twitter_chill_2_10_0_5_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_twitter_chill_2_10_0_5_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_twitter_chill_java_0_5_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_twitter_chill_java_0_5_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_twitter_parquet_hadoop_bundle_1_6_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_twitter_parquet_hadoop_bundle_1_6_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_10_2_3_11.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_10_2_3_11.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_akka_akka_remote_2_10_2_3_11.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_akka_akka_remote_2_10_2_3_11.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_akka_akka_slf4j_2_10_2_3_11.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_akka_akka_slf4j_2_10_2_3_11.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_config_1_2_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_typesafe_config_1_2_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_yammer_metrics_metrics_core_2_2_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_yammer_metrics_metrics_core_2_2_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_7_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_beanutils_commons_beanutils_core_1_8_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_beanutils_commons_beanutils_core_1_8_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_cli_commons_cli_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_cli_commons_cli_1_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_configuration_commons_configuration_1_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_configuration_commons_configuration_1_6.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_dbcp_commons_dbcp_1_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_dbcp_commons_dbcp_1_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_digester_commons_digester_1_8.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_digester_commons_digester_1_8.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_io_commons_io_2_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_io_commons_io_2_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_net_commons_net_2_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_net_commons_net_2_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_pool_commons_pool_1_5_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_pool_commons_pool_1_5_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_core_3_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_core_3_1_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_graphite_3_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_graphite_3_1_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_json_3_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_json_3_1_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_jvm_3_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_dropwizard_metrics_metrics_jvm_3_1_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_3_8_0_Final.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_3_8_0_Final.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_all_4_0_29_Final.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_all_4_0_29_Final.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_activation_1_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_activation_1_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_jdo_jdo_api_3_0_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_jdo_jdo_api_3_0_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_transaction_jta_1_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_transaction_jta_1_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_2_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_2_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javolution_javolution_5_5_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javolution_javolution_5_5_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__jline_jline_2_12.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__jline_jline_2_12.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__joda_time_joda_time_2_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__joda_time_joda_time_2_5.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__junit_junit_4_12.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__log4j_apache_log4j_extras_1_2_17.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__log4j_apache_log4j_extras_1_2_17.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__log4j_log4j_1_2_17.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__log4j_log4j_1_2_17.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_6.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_hydromatic_eigenbase_properties_1_1_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_hydromatic_eigenbase_properties_1_1_5.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_java_dev_jets3t_jets3t_0_7_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_java_dev_jets3t_jets3t_0_7_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_jpountz_lz4_lz4_1_3_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_jpountz_lz4_lz4_1_3_0.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_razorvine_pyrolite_4_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_razorvine_pyrolite_4_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_opencsv_opencsv_2_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_opencsv_opencsv_2_3.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_py4j_py4j_0_8_2_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_py4j_py4j_0_8_2_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_ST4_4_0_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_ST4_4_0_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_1_7_7.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_1_7_7.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_ipc_1_7_7.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_ipc_1_7_7.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_ipc_tests_1_7_7.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_ipc_tests_1_7_7.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_mapred_hadoop2_1_7_7.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_avro_avro_mapred_hadoop2_1_7_7.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_calcite_calcite_avatica_1_2_0_incubating.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_calcite_calcite_avatica_1_2_0_incubating.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_calcite_calcite_core_1_2_0_incubating.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_calcite_calcite_core_1_2_0_incubating.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_calcite_calcite_linq4j_1_2_0_incubating.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_calcite_calcite_linq4j_1_2_0_incubating.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_compress_1_4_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_compress_1_4_1.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_3_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_3_2.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_math3_3_4_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_curator_curator_client_2_1_0_incubating.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_curator_curator_recipes_2_4_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_derby_derby_10_10_2_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_directory_api_api_asn1_api_1_0_0_M20.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_directory_api_api_util_1_0_0_M20.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_directory_server_apacheds_kerberos_codec_2_0_0_M15.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_annotations_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_auth_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_client_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_common_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_hdfs_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_mapreduce_client_app_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_mapreduce_client_common_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_mapreduce_client_core_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_mapreduce_client_jobclient_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_mapreduce_client_shuffle_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_yarn_api_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_yarn_client_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_yarn_common_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_hadoop_hadoop_yarn_server_common_2_6_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_3_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_3_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_ivy_ivy_2_4_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_kafka_kafka_2_10_0_8_2_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_kafka_kafka_clients_0_8_2_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_mesos_mesos_shaded_protobuf_0_21_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_column_1_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_common_1_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_encoding_1_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_format_2_3_0_incubating.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_generator_1_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_hadoop_1_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_parquet_parquet_jackson_1_7_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_catalyst_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_core_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_hive_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_launcher_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_network_common_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_network_shuffle_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_sql_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_streaming_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_streaming_kafka_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_unsafe_2_10_1_5_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_thrift_libfb303_0_9_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_thrift_libthrift_0_9_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_zookeeper_zookeeper_3_4_5.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_groovy_groovy_all_2_1_6.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_jackson_jackson_core_asl_1_9_13.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_jackson_jackson_jaxrs_1_9_13.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_jackson_jackson_mapper_asl_1_9_13.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_jackson_jackson_xc_1_9_13.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_janino_commons_compiler_2_7_6.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_janino_janino_2_7_8.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_datanucleus_datanucleus_api_jdo_3_2_6.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_datanucleus_datanucleus_core_3_2_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_datanucleus_datanucleus_rdbms_3_2_9.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_eclipse_jetty_orbit_javax_servlet_3_0_0_v201112011016.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_fusesource_leveldbjni_leveldbjni_all_1_8.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_htrace_htrace_core_3_0_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_iq80_snappy_snappy_0_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jodd_jodd_core_3_5_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_json4s_json4s_ast_2_10_3_2_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_json4s_json4s_core_2_10_3_2_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_json4s_json4s_jackson_2_10_3_2_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_json_json_20090211.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mortbay_jetty_jetty_util_6_1_26.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_objenesis_objenesis_1_2.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_roaringbitmap_RoaringBitmap_0_4_5.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_scala_lang_scala_compiler_2_10_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_scala_lang_scala_library_2_10_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_10_4.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_scala_lang_scalap_2_10_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_10.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_spark_project_hive_hive_exec_1_2_1_spark.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_spark_project_hive_hive_metastore_1_2_1_spark.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_spark_project_spark_unused_1_0_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_client_0_7_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_hdfs_0_7_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_local_0_7_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tukaani_xz_1_0.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_uncommons_maths_uncommons_maths_1_2_2a.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_1_7.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__oro_oro_2_0_8.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__stax_stax_api_1_0_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__xerces_xercesImpl_2_9_1.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__xml_apis_xml_apis_1_3_04.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__xmlenc_xmlenc_0_52.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/UserActionAnalyzePlatform.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionRandomExtractDaoImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionRandomExtractDaoImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/TaskDaoImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/TaskDaoImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategoryDaoImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategoryDaoImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategorySessionDaoImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/Top10CategorySessionDaoImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/demo/Singleton.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/demo/Singleton.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/NumberUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/NumberUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ParamUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ParamUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ValidUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ValidUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/conf.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/conf.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/conf/ConfigurationManagerTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/conf/ConfigurationManagerTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionDetailTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionDetailTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/TaskDaoTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/TaskDaoTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/json/FastJsonTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/json/FastJsonTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/target/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="UserVisitAnalyze.java" pinned="false" current-in-tab="false">
<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="-377">
<caret line="972" column="29" lean-forward="false" selection-start-line="972" selection-start-column="29" selection-end-line="972" selection-end-column="29" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<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="1482">
<caret line="93" column="50" lean-forward="false" selection-start-line="93" selection-start-column="50" selection-end-line="93" selection-end-column="50" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="true">
<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="703">
<caret line="448" column="0" lean-forward="false" selection-start-line="448" selection-start-column="0" selection-end-line="448" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
@ -69,6 +233,11 @@
</findStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="main" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GradleLocalSettings">
@ -142,11 +311,6 @@
<option name="pluginUpdatePolicy" value="UPDATE" />
</MavenGeneralSettings>
</option>
<option name="importingSettings">
<MavenImportingSettings>
<option name="importAutomatically" value="true" />
</MavenImportingSettings>
</option>
</component>
<component name="MavenRunner">
<option name="jreName" value="#JAVA_INTERNAL" />
@ -157,6 +321,7 @@
<option name="width" value="1440" />
<option name="height" value="873" />
</component>
<component name="ProjectId" id="2qO7KjwHuykNsd7iKBmSmBKHPRX" />
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
@ -182,7 +347,9 @@
</profile-state>
</entry>
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
@ -278,16 +445,25 @@
<pane id="AndroidView" />
</panes>
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="SearchEverywhereHistoryKey" value="wor FILE file:///Users/youyujie/Documents/UserActionAnalyzePlatform/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="node.js.path.for.package.tslint" value="project" />
<property name="node.js.selected.package.tslint" value="(autodetect)" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="MavenSettings" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="SearchEverywhereHistoryKey" value="wor&#9;FILE&#9;file:///Users/youyujie/Documents/UserActionAnalyzePlatform/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml" />
</component>
<component name="RecentsManager">
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
@ -299,18 +475,6 @@
<recent name="$PROJECT_DIR$/src/main/java/cn/edu/hust/until" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="Application.UserVisitAnalyze">
<configuration default="true" type="Applet" factoryName="Applet">
<option name="HTML_USED" value="false" />
@ -320,218 +484,136 @@
<module />
</configuration>
<configuration name="UserVisitAnalyze" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.session.UserVisitAnalyze" />
<module name="UserActionAnalyzePlatform" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.edu.hust.session.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.session.UserVisitAnalyze" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="UserActionAnalyzePlatform" />
<envs />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="" />
<envs />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="ParamUtilsTest.test2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<module name="UserActionAnalyzePlatform" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.edu.hust.utils.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.utils" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.utils.ParamUtilsTest" />
<option name="METHOD_NAME" value="test2" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="SessionAggrDao.test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<module name="UserActionAnalyzePlatform" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.edu.hust.dao.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.dao" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.dao.SessionAggrDao" />
<option name="METHOD_NAME" value="test" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="SessionDetailTest.testInsert" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<module name="UserActionAnalyzePlatform" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.edu.hust.dao.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.dao" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.dao.SessionDetailTest" />
<option name="METHOD_NAME" value="testInsert" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="SessionRandomExtractDaoTest.testBatchInsert" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<module name="UserActionAnalyzePlatform" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.edu.hust.dao.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.dao" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.dao.SessionRandomExtractDaoTest" />
<option name="METHOD_NAME" value="testBatchInsert" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<configuration default="true" type="TestNG">
<option name="TEST_OBJECT" value="CLASS" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="OUTPUT_DIRECTORY" />
<option name="ANNOTATION_TYPE" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<option name="USE_DEFAULT_REPORTERS" value="false" />
<option name="PROPERTIES_FILE" />
<envs />
<properties />
<listeners />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType">
<module name="" />
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
<option name="PROGRAM_PARAMETERS" />
<predefined_log_file id="idea.log" enabled="true" />
<predefined_log_file enabled="true" id="idea.log" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Application.UserVisitAnalyze" />
<item index="1" class="java.lang.String" itemvalue="JUnit.ParamUtilsTest.test2" />
<item index="2" class="java.lang.String" itemvalue="JUnit.SessionAggrDao.test" />
<item index="3" class="java.lang.String" itemvalue="JUnit.SessionDetailTest.testInsert" />
<item index="4" class="java.lang.String" itemvalue="JUnit.SessionRandomExtractDaoTest.testBatchInsert" />
<list>
<item itemvalue="Application.UserVisitAnalyze" />
<item itemvalue="JUnit.ParamUtilsTest.test2" />
<item itemvalue="JUnit.SessionAggrDao.test" />
<item itemvalue="JUnit.SessionDetailTest.testInsert" />
<item itemvalue="JUnit.SessionRandomExtractDaoTest.testBatchInsert" />
</list>
<recent_temporary>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Application.UserVisitAnalyze" />
<item index="1" class="java.lang.String" itemvalue="JUnit.SessionRandomExtractDaoTest.testBatchInsert" />
<item index="2" class="java.lang.String" itemvalue="JUnit.SessionDetailTest.testInsert" />
<item index="3" class="java.lang.String" itemvalue="JUnit.SessionAggrDao.test" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ParamUtilsTest.test2" />
<list>
<item itemvalue="Application.UserVisitAnalyze" />
<item itemvalue="JUnit.SessionRandomExtractDaoTest.testBatchInsert" />
<item itemvalue="JUnit.SessionDetailTest.testInsert" />
<item itemvalue="JUnit.SessionAggrDao.test" />
<item itemvalue="JUnit.ParamUtilsTest.test2" />
</list>
</recent_temporary>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration">
<configuration />
</component>
@ -551,15 +633,18 @@
<workItem from="1529845795654" duration="7752000" />
<workItem from="1529887211212" duration="6851000" />
<workItem from="1529994772485" duration="146000" />
<workItem from="1734521707999" duration="1182000" />
<workItem from="1734523500859" duration="531000" />
<workItem from="1734524054816" duration="200000" />
</task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<task id="LOCAL-00001" summary="1.环境搭建完成 2.相关的工具类编写完成 3.配置文件管理类编写完成">
<created>1529592741848</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1529592741849</updated>
</task>
<task id="LOCAL-00002" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<task id="LOCAL-00002" summary="1.环境搭建完成 2.相关的工具类编写完成 3.配置文件管理类编写完成">
<created>1529593229553</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
@ -610,7 +695,7 @@
<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="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="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="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" />
<window_info id="Capture Analysis" 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" />
@ -654,7 +739,7 @@
<window_info id="Debug" 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="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.33" sideWeight="0.5" order="8" 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="6" side_tool="false" content_ui="tabs" />
<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="6" 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="5" 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="9" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" 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="7" side_tool="false" content_ui="tabs" />
@ -669,46 +754,23 @@
</layout-to-restore>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="RECENTLY_FILTERED_USER_GROUPS">
<collection />
</option>
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
<collection />
</option>
<option name="COLUMN_ORDER">
<list>
<option value="0" />
<option value="1" />
<option value="2" />
<option value="3" />
</list>
</option>
</State>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" />
<option name="LAST_COMMIT_MESSAGE" value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="32" />
</breakpoint-manager>
<watches-manager />
<MESSAGE value="1.环境搭建完成 2.相关的工具类编写完成 3.配置文件管理类编写完成" />
<option name="LAST_COMMIT_MESSAGE" value="1.环境搭建完成 2.相关的工具类编写完成 3.配置文件管理类编写完成" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />

@ -138,6 +138,14 @@
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
</plugins>
</build>

@ -2,28 +2,52 @@ package cn.edu.hust.domain;
import java.io.Serializable;
// SessionAggrStat类定义位于cn.edu.hust.domain包下实现了Serializable接口意味着该类的对象可以被序列化方便进行存储、网络传输等操作
public class SessionAggrStat implements Serializable {
// 以下是类的成员变量声明
// 任务ID用于标识某个具体的任务类型为Long
private Long taskId;
// 会话数量用于记录相关的会话统计数量类型为Long
private Long SessionCount;
// 访问时长在1秒 - 3秒区间的相关统计数据类型为double可能用于存储该时间段内访问情况的某种聚合统计值具体含义需结合业务场景确定
private double visit_Length_1s_3s;
// 访问时长在4秒 - 6秒区间的相关统计数据类型为double
private double visit_Length_4s_6s;
// 访问时长在7秒 - 9秒区间的相关统计数据类型为double
private double visit_Length_7s_9s;
// 访问时长在10秒 - 30秒区间的相关统计数据类型为double
private double visit_Length_10s_30s;
// 访问时长在30秒 - 60秒区间的相关统计数据类型为double
private double visit_Length_30s_60s;
// 访问时长在1分钟 - 3分钟区间的相关统计数据类型为double
private double visit_Length_1m_3m;
// 访问时长在3分钟 - 10分钟区间的相关统计数据类型为double
private double visit_Length_3m_10m;
// 访问时长在10分钟 - 30分钟区间的相关统计数据类型为double
private double visit_Length_10m_30m;
// 访问时长大于30分钟的相关统计数据类型为double
private double visit_Length_30m;
// 步骤长度在1 - 3具体单位需结合业务确定可能是步长之类的概念区间的相关统计数据类型为double
private double step_Length_1_3;
// 步骤长度在4 - 6区间的相关统计数据类型为double
private double step_Length_4_6;
// 步骤长度在7 - 9区间的相关统计数据类型为double
private double step_Length_7_9;
// 步骤长度在10 - 30区间的相关统计数据类型为double
private double step_Length_10_30;
// 步骤长度在30 - 60区间的相关统计数据类型为double
private double step_Length_30_60;
// 步骤长度大于60同样单位需结合业务确定的相关统计数据类型为double
private double step_Length_60;
// 默认构造函数用于创建SessionAggrStat类的对象实例当通过无参方式创建对象时会调用此构造函数目前构造函数内没有执行额外的初始化逻辑
public SessionAggrStat() {
}
// 设置方法用于一次性设置SessionAggrStat类对象的多个属性值
// 参数依次对应各个成员变量,通过此方法可以方便地对对象的所有相关属性进行赋值操作
public void set(Long taskId, Long sessionCount, double visit_Length_1s_3s, double visit_Length_4s_6s, double visit_Length_7s_9s, double visit_Length_10s_30s, double visit_Length_30s_60s, double visit_Length_1m_3m, double visit_Length_3m_10m, double visit_Length_10m_30m, double visit_Length_30m, double step_Length_1_3, double step_Length_4_6, double step_Length_7_9, double step_Length_10_30, double step_Length_30_60, double step_Length_60) {
this.taskId = taskId;
SessionCount = sessionCount;
@ -44,139 +68,173 @@ public class SessionAggrStat implements Serializable {
this.step_Length_60 = step_Length_60;
}
// 获取任务ID的方法返回类型为Long外部代码可以通过调用此方法获取当前对象的taskId属性值
public Long getTaskId() {
return taskId;
}
// 设置任务ID的方法用于更新当前对象的taskId属性值外部代码可以通过调用此方法传入新的任务ID来修改对应属性
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
// 获取会话数量的方法返回类型为Long用于获取当前对象的SessionCount属性值
public Long getSessionCount() {
return SessionCount;
}
// 设置会话数量的方法通过传入参数来更新当前对象的SessionCount属性值
public void setSessionCount(Long sessionCount) {
SessionCount = sessionCount;
}
// 获取访问时长在1秒 - 3秒区间统计数据的方法返回类型为double用于获取visit_Length_1s_3s属性值
public double getVisit_Length_1s_3s() {
return visit_Length_1s_3s;
}
// 设置访问时长在1秒 - 3秒区间统计数据的方法通过传入参数来更新visit_Length_1s_3s属性值
public void setVisit_Length_1s_3s(double visit_Length_1s_3s) {
this.visit_Length_1s_3s = visit_Length_1s_3s;
}
// 获取访问时长在4秒 - 6秒区间统计数据的方法返回类型为double用于获取visit_Length_4s_6s属性值
public double getVisit_Length_4s_6s() {
return visit_Length_4s_6s;
}
// 设置访问时长在4秒 - 6秒区间统计数据的方法通过传入参数来更新visit_Length_4s_6s属性值
public void setVisit_Length_4s_6s(double visit_Length_4s_6s) {
this.visit_Length_4s_6s = visit_Length_4s_6s;
}
// 获取访问时长在7秒 - 9秒区间统计数据的方法返回类型为double用于获取visit_Length_7s_9s属性值
public double getVisit_Length_7s_9s() {
return visit_Length_7s_9s;
}
// 设置访问时长在7秒 - 9秒区间统计数据的方法通过传入参数来更新visit_Length_7s_9s属性值
public void setVisit_Length_7s_9s(double visit_Length_7s_9s) {
this.visit_Length_7s_9s = visit_Length_7s_9s;
}
// 获取访问时长在10秒 - 30秒区间统计数据的方法返回类型为double用于获取visit_Length_10s_30s属性值
public double getVisit_Length_10s_30s() {
return visit_Length_10s_30s;
}
// 设置访问时长在10秒 - 30秒区间统计数据的方法通过传入参数来更新visit_Length_10s_30s属性值
public void setVisit_Length_10s_30s(double visit_Length_10s_30s) {
this.visit_Length_10s_30s = visit_Length_10s_30s;
}
// 获取访问时长在30秒 - 60秒区间统计数据的方法返回类型为double用于获取visit_Length_30s_60s属性值
public double getVisit_Length_30s_60s() {
return visit_Length_30s_60s;
}
// 设置访问时长在30秒 - 60秒区间统计数据的方法通过传入参数来更新visit_Length_30s_60s属性值
public void setVisit_Length_30s_60s(double visit_Length_30s_60s) {
this.visit_Length_30s_60s = visit_Length_30s_60s;
}
// 获取访问时长在1分钟 - 3分钟区间统计数据的方法返回类型为double用于获取visit_Length_1m_3m属性值
public double getVisit_Length_1m_3m() {
return visit_Length_1m_3m;
}
// 设置访问时长在1分钟 - 3分钟区间统计数据的方法通过传入参数来更新visit_Length_1m_3m属性值
public void setVisit_Length_1m_3m(double visit_Length_1m_3m) {
this.visit_Length_1m_3m = visit_Length_1m_3m;
}
// 获取访问时长在3分钟 - 10分钟区间统计数据的方法返回类型为double用于获取visit_Length_3m_10m属性值
public double getVisit_Length_3m_10m() {
return visit_Length_3m_10m;
}
// 设置访问时长在3分钟 - 10分钟区间统计数据的方法通过传入参数来更新visit_Length_3m_10m属性值
public void setVisit_Legth_3m_10m(double visit_Legth_3m_10m) {
this.visit_Length_3m_10m = visit_Legth_3m_10m;
}
// 获取访问时长在10分钟 - 30分钟区间统计数据的方法返回类型为double用于获取visit_Length_10m_30m属性值
public double getVisit_Length_10m_30m() {
return visit_Length_10m_30m;
}
// 设置访问时长在10分钟 - 30分钟区间统计数据的方法通过传入参数来更新visit_Length_10m_30m属性值
public void setVisit_Length_10m_30m(double visit_Length_10m_30m) {
this.visit_Length_10m_30m = visit_Length_10m_30m;
}
// 获取访问时长大于30分钟统计数据的方法返回类型为double用于获取visit_Length_30m属性值
public double getVisit_Length_30m() {
return visit_Length_30m;
}
// 设置访问时长大于30分钟统计数据的方法通过传入参数来更新visit_Length_30m属性值
public void setVisit_Length_30m(double visit_Length_30m) {
this.visit_Length_30m = visit_Length_30m;
}
// 获取步骤长度在1 - 3区间统计数据的方法返回类型为double用于获取step_Length_1_3属性值
public double getStep_Length_1_3() {
return step_Length_1_3;
}
// 设置步骤长度在1 - 3区间统计数据的方法通过传入参数来更新step_Length_1_3属性值
public void setStep_Length_1_3(double step_Length_1_3) {
this.step_Length_1_3 = step_Length_1_3;
}
// 获取步骤长度在4 - 6区间统计数据的方法返回类型为double用于获取step_Length_4_6属性值
public double getStep_Length_4_6() {
return step_Length_4_6;
}
// 设置步骤长度在4 - 6区间统计数据的方法通过传入参数来更新step_Length_4_6属性值
public void setStep_Length_4_6(double step_Length_4_6) {
this.step_Length_4_6 = step_Length_4_6;
}
// 获取步骤长度在7 - 9区间统计数据的方法返回类型为double用于获取step_Length_7_9属性值
public double getStep_Length_7_9() {
return step_Length_7_9;
}
// 设置步骤长度在7 - 9区间统计数据的方法通过传入参数来更新step_Length_7_9属性值
public void setStep_Length_7_9(double step_Length_7_9) {
this.step_Length_7_9 = step_Length_7_9;
}
// 获取步骤长度在10 - 30区间统计数据的方法返回类型为double用于获取step_Length_10_30属性值
public double getStep_Length_10_30() {
return step_Length_10_30;
}
// 设置步骤长度在10 - 30区间统计数据的方法通过传入参数来更新step_Length_10_30属性值
public void setStep_Length_10_30(double step_Length_10_30) {
this.step_Length_10_30 = step_Length_10_30;
}
// 获取步骤长度在30 - 60区间统计数据的方法返回类型为double用于获取step_Length_30_60属性值
public double getStep_Length_30_60() {
return step_Length_30_60;
}
// 设置步骤长度在30 - 60区间统计数据的方法通过传入参数来更新step_Length_30_60属性值
public void setStep_Length_30_60(double step_Length_30_60) {
this.step_Length_30_60 = step_Length_30_60;
}
// 获取步骤长度大于60统计数据的方法返回类型为double用于获取step_Length_60属性值
public double getStep_Length_60() {
return step_Length_60;
}
// 设置步骤长度大于60统计数据的方法通过传入参数来更新step_Length_60属性值
public void setStep_Length_60(double step_Length_60) {
this.step_Length_60 = step_Length_60;
}
}
}

@ -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;
}
}
}

@ -1,62 +1,183 @@
package cn.edu.hust.domain;
package cn.edu.hust.domain; // 定义该类所在的包包在Java中用于对类进行合理的组织分类方便在项目里管理不同功能的模块使得代码结构更加清晰有条理不同业务相关的类可以放在对应的包下。
import java.io.Serializable;
import java.io.Serializable; // 导入Serializable接口表示该类的实例可以被序列化序列化后的对象能够方便地进行存储例如保存到文件中或者在网络间进行传输以满足不同的应用场景需求。
/**
* SessionRandomExtractsession
* 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;
/**
*
*
* JavaLongnull
* 便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
* SessionRandomExtractID
* 便ID
*
* @return IDLongID
*/
public Long getTaskId() {
return taskId;
return taskId; // 返回任务ID的值即将当前对象的taskId成员变量的值返回给调用者。
}
/**
* ID
* SessionRandomExtractID
* 使
*
* @param taskId IDLongID
*/
public void setTaskId(Long taskId) {
this.taskId = taskId;
this.taskId = taskId; // 设置任务ID的值将传入的taskId参数赋值给当前对象的taskId成员变量。
}
/**
* session ID
* SessionRandomExtract访
* 便使ID
*
* @return session IDStringsession ID
*/
public String getSessionId() {
return sessionId;
return sessionId; // 返回session ID的值也就是将当前对象的sessionId成员变量的值返回给调用者。
}
/**
* session ID
* SessionRandomExtract访
* session ID
*
* @param sessionId session IDStringsession ID
*/
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
this.sessionId = sessionId; // 设置session ID的值将传入的sessionId参数赋值给当前对象的sessionId成员变量。
}
/**
* session
* SessionRandomExtract访
* 访广
*
* @return sessionStringsession
*/
public String getStartTime() {
return startTime;
return startTime; // 返回session开始时间的值即将当前对象的startTime成员变量的值返回给调用者。
}
/**
* session
* SessionRandomExtract访
* 使
*
* @param startTime sessionStringsession
*/
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 IDStringID
*/
public String getClick_category_ids() {
return click_category_ids;
return click_category_ids; // 返回点击类别ID的值也就是将当前对象的click_category_ids成员变量的值返回给调用者。
}
/**
* ID
* SessionRandomExtract访ID
* IDID
*
* @param click_category_ids IDStringID
*/
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成员变量。
}
}
}

@ -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;
/**
*
*
* JavaLongnullsetter
*/
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
* TaskID便ID
*
* @return IDLongID
*/
public Long getTaskId() {
return taskId;
return taskId; // 返回任务 ID 的值即将当前对象的taskId成员变量的值返回给调用者。
}
/**
* ID
* TaskIDID使
*
* @param taskId IDLongID
*/
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
**/

@ -1,61 +1,190 @@
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;
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 成员变量。
}
}

@ -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; // 设置点击量的值。
}
}

@ -1,195 +1,268 @@
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<Connection> queue=new LinkedBlockingQueue<Connection>();
static{
// 采用单例模式保证整个应用程序中只有一个JDBCHelper实例存在instance为该类的唯一实例对象。
private static JDBCHelper instance = new JDBCHelper();
// 使用LinkedBlockingQueue作为阻塞队列来存放数据库连接对象实现连接池的功能。
// 连接池中的连接可以被多个地方获取并使用,使用完后再归还到队列中供后续使用。
private LinkedBlockingQueue<Connection> queue = new LinkedBlockingQueue<Connection>();
// 静态代码块,在类加载时执行,用于加载数据库驱动。
// 通过从配置管理器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<dataSourceSize;i++)
{
Connection connection=DriverManager.getConnection(url,username,passward);
private JDBCHelper() {
// 获取配置文件中定义的数据源大小,即要创建的数据库连接数量
int dataSourceSize = ConfigurationManager.getInteger(Constants.JDBC_ACTIVE);
// 获取配置文件中定义的数据库连接URL
String url = ConfigurationManager.getProperty(Constants.JDBC_URL);
// 获取配置文件中定义的数据库用户名
String username = ConfigurationManager.getProperty(Constants.JDBC_USERNAME);
// 获取配置文件中定义的数据库密码此处变量名存在拼写错误正确应为Constants.JDBC_PASSWORD
String passward = ConfigurationManager.getProperty(Constants.JDBC_PSSWORD);
try {
// 循环创建指定数量的数据库连接
for (int i = 0; i < dataSourceSize; i++) {
// 通过DriverManager创建数据库连接传入URL、用户名和密码
Connection connection = DriverManager.getConnection(url, username, passward);
// 将创建好的连接放入阻塞队列中,供后续获取使用
queue.put(connection);
}
}
catch (Exception e)
{
} catch (Exception e) {
e.printStackTrace();
}
//
};
public static JDBCHelper getInstance()
{
// 获取JDBCHelper类的唯一实例对象的静态方法外部代码通过调用此方法获取该工具类的实例进而使用其提供的数据库操作功能。
public static JDBCHelper getInstance() {
return instance;
//
}
/**
*
* 使
* @return
* queue使
* LinkedBlockingQueuetake
* InterruptedExceptionnull
*
* @return null
*/
public Connection getConnection()
{
public Connection getConnection() {
try {
// 从阻塞队列中取出一个连接,若队列为空则阻塞等待
return queue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
//
}
/**
*
* @param sql
* @param params
* @return
* SQLINSERTUPDATEDELETE
*
* @param sql SQLINSERT INTO table_name (column1, column2) VALUES (?,?)
* @param params SQLSQL
* @return 0
*/
public int excuteUpdate(String sql,Object[] params)
{
int re=0;
Connection conn=null;
PreparedStatement statement=null;
try
{
conn=getConnection();
statement=conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
}
re=statement.executeUpdate();
return re;
}
catch (Exception e)
{
e.printStackTrace();
}
finally {
if(conn!=null)
{
try {
queue.put(conn);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
return re;
}
public int excuteUpdate(String sql, Object[] params) {
int re = 0;
//
Connection conn = null;
//
PreparedStatement statement = null;
//
try {
// 从连接池中获取一个数据库连接
conn = getConnection();
// 使用获取到的连接创建一个PreparedStatement对象用于执行带参数的SQL语句
statement = conn.prepareStatement(sql);
public static interface QueryCallBack
{
// 循环设置PreparedStatement中的参数将params数组中的值依次赋给SQL语句中的占位符
for (int i = 0; i < params.length; i++) {
statement.setObject(i + 1, params[i]);
}
// 执行更新操作,并获取受影响的行数
re = statement.executeUpdate();
return re;
} catch (Exception e) {
//
e.printStackTrace();
} finally {
// 无论是否执行成功,都需要将使用完的数据库连接归还到连接池中,
// 如果连接对象不为空尝试将其放回阻塞队列queue如果放回过程出现中断异常则打印栈追踪信息。
if (conn!= null)
//
{
try {
queue.put(conn);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//
}
return re;
//
}
// 定义一个内部接口QueryCallBack该接口中定义了一个方法process用于处理查询结果集ResultSet
// 具体的处理逻辑由实现该接口的类来定义,实现了一种回调机制,方便根据不同需求灵活处理查询结果。
public static interface QueryCallBack {
void process(ResultSet rs);
}
/**
*
* 使
* @param sql
* @param params
* @param queryCallBack
* SQLQueryCallBack
*
* @param sql SQLSELECT * FROM table_name WHERE condition
* @param params SQLSQL
* @param queryCallBack QueryCallBackResultSet
*/
public void excuteQuery(String sql,Object[] params,QueryCallBack queryCallBack)
{
Connection conn=null;
PreparedStatement statement=null;
try
{
conn=getConnection();
statement=conn.prepareStatement(sql);
public void excuteQuery(String sql, Object[] params, QueryCallBack queryCallBack) {
Connection conn = null;
//
PreparedStatement statement = null;
//
try {
// 从连接池中获取一个数据库连接
conn = getConnection();
//
// 使用获取到的连接创建一个PreparedStatement对象用于执行带参数的SQL语句
statement = conn.prepareStatement(sql);
// 循环设置PreparedStatement中的参数将params数组中的值依次赋给SQL语句中的占位符
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
statement.setObject(i + 1, params[i]);
}
ResultSet rs=statement.executeQuery();
// 执行查询操作获取结果集ResultSet
ResultSet rs = statement.executeQuery();
// 调用传入的回调接口对象的process方法将结果集传递进去由具体实现该接口的类来处理结果集数据。
queryCallBack.process(rs);
}catch (Exception e)
{
//
} catch (Exception e) {
}
finally {
if(conn!=null)
{
} finally {
// 无论是否执行成功,都需要将使用完的数据库连接归还到连接池中,
// 如果连接对象不为空尝试将其放回阻塞队列queue如果放回过程出现中断异常则打印栈追踪信息。
if (conn!= null) {
try {
queue.put(conn);
} catch (InterruptedException e) {
e.printStackTrace();
}
//
}
}
//
}
/**
* sql
* @param sql
* @param params
* @return
* SQLSQL
*
* @param sql SQL
* @param params SQLObjectSQLsql
* @return SQLnull
*/
public int[] excuteBatch(String sql,List<Object[]> params)
{
Connection connection=null;
PreparedStatement statement=null;
int[] res=null;
try
{
connection=getConnection();
statement=connection.prepareStatement(sql);
//1.取消自动提交
public int[] excuteBatch(String sql, List<Object[]> params) {
Connection connection = null;
//
PreparedStatement statement = null;
//
int[] res = null;
//
try {
// 从连接池中获取一个数据库连接
connection = getConnection();
// 使用获取到的连接创建一个PreparedStatement对象用于执行带参数的SQL语句
statement = connection.prepareStatement(sql);
// 1. 取消自动提交模式这样可以将多条SQL语句作为一个事务来统一提交或回滚提高数据一致性。
connection.setAutoCommit(false);
//2.设置参数
for (Object[] param:
params) {
// 2. 循环设置每条SQL语句的参数并将其添加到批处理中通过addBatch方法将每条语句添加到待执行的批处理队列中。
for (Object[] param : params) {
for (int i = 0; i < param.length; i++) {
statement.setObject(i+1,param[i]);
statement.setObject(i + 1, param[i]);
//
}
statement.addBatch();
//
}
//3.批量执行
res=statement.executeBatch();
//4.最后一步提交
// 3. 批量执行所有添加到批处理队列中的SQL语句返回一个整数数组表示每条语句受影响的行数。
res = statement.executeBatch();
// 4. 最后提交事务将所有批量执行的SQL语句对数据库的修改统一提交如果执行过程中出现异常则事务会回滚。
connection.commit();
//
return res;
} catch (SQLException e) {
e.printStackTrace();
}
finally {
if(connection!=null)
{
} finally {
// 无论是否执行成功,都需要将使用完的数据库连接归还到连接池中,
// 如果连接对象不为空尝试将其放回阻塞队列queue如果放回过程出现中断异常则打印栈追踪信息。
if (connection!= null) {
try {
queue.put(connection);
} catch (InterruptedException e) {
e.printStackTrace();
}
//
}
}
//
return res;
//
}
}
//
}

@ -17,39 +17,63 @@ import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructType;
/**
*
* DataFrame
* 便Spark SQL
* @author Administrator
*
*/
public class MockData {
/**
*
* @param sc
* @param sqlContext
* mockDataFrame
* JavaSparkContextSQLContextSparkSQL
* @param sc JavaSparkContextSparkRDD
* @param sqlContext SQLContextSparkSQLDataFrame
*/
public static void mock(JavaSparkContext sc,
SQLContext sqlContext) {
SQLContext sqlContext) {
// 创建一个用于存储Row对象的列表后续将用于构建DataFrame每个Row对象代表一行数据
List<Row> rows = new ArrayList<Row>();
// 定义一个字符串数组,包含了一些模拟的搜索关键词,用于模拟用户的搜索行为
String[] searchKeywords = new String[] {"火锅", "蛋糕", "重庆辣子鸡", "重庆小面",
"呷哺呷哺", "新辣道鱼火锅", "国贸大厦", "太古商场", "日本料理", "温泉"};
// 通过DateUtils工具类获取今天的日期作为模拟数据中日期相关字段的基础值
String date = DateUtils.getTodayDate();
// 定义一个字符串数组,包含了用户可能进行的操作类型,如搜索、点击、下单、支付
String[] actions = new String[]{"search", "click", "order", "pay"};
// 创建一个Random对象用于生成各种随机数来模拟不同的情况
Random random = new Random();
// 外层循环模拟100个不同的用户
for(int i = 0; i < 100; i++) {
long userid = random.nextInt(100);
// 为每个用户随机生成一个用户ID范围在0到99之间
long userid = random.nextInt(100);
// 中层循环模拟每个用户的10次会话
for(int j = 0; j < 10; j++) {
String sessionid = UUID.randomUUID().toString().replace("-", "");
// 生成一个唯一的会话ID通过UUID生成后去除其中的'-'字符
String sessionid = UUID.randomUUID().toString().replace("-", "");
// 生成一个基础的操作时间格式为今天的日期加上一个随机的小时数0到22
String baseActionTime = date + " " + random.nextInt(23);
// 内层循环模拟每次会话中的多次操作操作次数是随机的0到99次之间
for(int k = 0; k < random.nextInt(100); k++) {
long pageid = random.nextInt(10);
// 为每次操作随机生成一个页面ID范围在0到9之间
long pageid = random.nextInt(10);
// 生成完整的操作时间,在基础操作时间上补充随机的分钟和秒数,
// 通过StringUtils的fulfuill方法确保分钟和秒数是两位数格式不足两位前面补0
String actionTime = baseActionTime + ":" + StringUtils.fulfuill(String.valueOf(random.nextInt(59))) + ":" + StringUtils.fulfuill(String.valueOf(random.nextInt(59)));
// 初始化一些操作相关的字段为null后续根据具体的操作类型来赋值
String searchKeyword = null;
Long clickCategoryId = null;
Long clickProductId = null;
@ -57,33 +81,45 @@ public class MockData {
String orderProductIds = null;
String payCategoryIds = null;
String payProductIds = null;
// 随机选择一个操作类型从定义的actions数组中随机选取
String action = actions[random.nextInt(4)];
// 根据选择的操作类型,设置相应的字段值
if("search".equals(action)) {
searchKeyword = searchKeywords[random.nextInt(10)];
// 如果是搜索操作,从搜索关键词数组中随机选取一个作为搜索关键词
searchKeyword = searchKeywords[random.nextInt(10)];
} else if("click".equals(action)) {
clickCategoryId = Long.valueOf(String.valueOf(random.nextInt(100)));
clickProductId = Long.valueOf(String.valueOf(random.nextInt(100)));
// 如果是点击操作随机生成点击的分类ID和产品ID范围在0到99之间
clickCategoryId = Long.valueOf(String.valueOf(random.nextInt(100)));
clickProductId = Long.valueOf(String.valueOf(random.nextInt(100)));
} else if("order".equals(action)) {
orderCategoryIds = String.valueOf(random.nextInt(100));
// 如果是下单操作随机生成下单的分类ID和产品ID转换为字符串形式
orderCategoryIds = String.valueOf(random.nextInt(100));
orderProductIds = String.valueOf(random.nextInt(100));
} else if("pay".equals(action)) {
payCategoryIds = String.valueOf(random.nextInt(100));
// 如果是支付操作随机生成支付的分类ID和产品ID转换为字符串形式
payCategoryIds = String.valueOf(random.nextInt(100));
payProductIds = String.valueOf(random.nextInt(100));
}
Row row = RowFactory.create(date, userid, sessionid,
// 使用RowFactory创建一个Row对象将本次操作相关的所有字段值传入代表一行模拟数据
Row row = RowFactory.create(date, userid, sessionid,
pageid, actionTime, searchKeyword,
clickCategoryId, clickProductId,
orderCategoryIds, orderProductIds,
payCategoryIds, payProductIds);
// 将生成的Row对象添加到rows列表中不断积累模拟数据
rows.add(row);
}
}
}
// 将存储了Row对象的列表转换为JavaRDD<Row>使其可以在Spark的分布式环境下进行处理
JavaRDD<Row> rowsRDD = sc.parallelize(rows);
// 定义DataFrame的数据结构Schema明确每个字段的名称、数据类型以及是否可为空等信息
StructType schema = DataTypes.createStructType(Arrays.asList(
DataTypes.createStructField("date", DataTypes.StringType, true),
DataTypes.createStructField("user_id", DataTypes.LongType, true),
@ -97,36 +133,64 @@ public class MockData {
DataTypes.createStructField("order_product_ids", DataTypes.StringType, true),
DataTypes.createStructField("pay_category_ids", DataTypes.StringType, true),
DataTypes.createStructField("pay_product_ids", DataTypes.StringType, true)));
// 使用SQLContext基于rowsRDD和定义好的结构schema创建一个DataFrame对象用于后续的数据操作和分析
DataFrame df = sqlContext.createDataFrame(rowsRDD, schema);
df.registerTempTable("user_visit_action");
// 将创建好的DataFrame注册为一个临时表表名为"user_visit_action"方便后续用SQL语句进行查询等操作
df.registerTempTable("user_visit_action");
// 打印DataFrame的第一行数据用于简单查看模拟生成的数据情况
for(Row _row : df.take(1)) {
System.out.println(_row);
System.out.println(_row);
}
/**
* ==================================================================
* 访
*/
// 清空之前用于存储用户访问行为数据的rows列表准备存储用户基本信息数据
rows.clear();
// 定义一个字符串数组,包含了两种性别,用于模拟用户的性别信息
String[] sexes = new String[]{"male", "female"};
// 循环模拟生成100个用户的基本信息
for(int i = 0; i < 100; i ++) {
// 用户ID直接使用循环变量i简单递增赋值
long userid = i;
// 生成用户名,格式为"user"加上用户ID
String username = "user" + i;
// 生成姓名,格式为"name"加上用户ID
String name = "name" + i;
// 随机生成用户年龄范围在0到59岁之间
int age = random.nextInt(60);
// 生成职业信息,格式为"professional"加上一个随机数范围在0到99之间
String professional = "professional" + random.nextInt(100);
// 生成所在城市信息,格式为"city"加上一个随机数范围在0到99之间
String city = "city" + random.nextInt(100);
// 随机选择一个性别从定义的sexes数组中随机选取
String sex = sexes[random.nextInt(2)];
Row row = RowFactory.create(userid, username, name, age,
// 使用RowFactory创建一个Row对象将本次用户基本信息相关的所有字段值传入代表一行模拟数据
Row row = RowFactory.create(userid, username, name, age,
professional, city, sex);
// 将生成的Row对象添加到rows列表中积累用户基本信息数据
rows.add(row);
}
// 将存储了用户基本信息Row对象的列表再次转换为JavaRDD<Row>,以便后续操作
rowsRDD = sc.parallelize(rows);
// 定义用户基本信息DataFrame的数据结构Schema明确每个字段的名称、数据类型以及是否可为空等信息
StructType schema2 = DataTypes.createStructType(Arrays.asList(
DataTypes.createStructField("user_id", DataTypes.LongType, true),
DataTypes.createStructField("username", DataTypes.StringType, true),
@ -135,13 +199,17 @@ public class MockData {
DataTypes.createStructField("professional", DataTypes.StringType, true),
DataTypes.createStructField("city", DataTypes.StringType, true),
DataTypes.createStructField("sex", DataTypes.StringType, true)));
// 使用SQLContext基于新的rowsRDD和定义好的结构schema2创建一个用于存储用户基本信息的DataFrame对象
DataFrame df2 = sqlContext.createDataFrame(rowsRDD, schema2);
// 打印用户基本信息DataFrame的第一行数据用于简单查看模拟生成的数据情况
for(Row _row : df2.take(1)) {
System.out.println(_row);
System.out.println(_row);
}
df2.registerTempTable("user_info");
// 将用户基本信息的DataFrame注册为一个临时表表名为"user_info"方便后续用SQL语句进行关联等操作
df2.registerTempTable("user_info");
}
}
}

@ -1,119 +1,149 @@
package cn.edu.hust.session;
import scala.math.Ordered;
// CategorySortKey类实现了Ordered接口用于定义比较规则以及Serializable接口用于支持对象的序列化操作
// 该类主要用于定义分类排序相关的键,通过比较不同实例中的点击数、订单数和支付数来确定排序规则
public class CategorySortKey implements Ordered<CategorySortKey>, java.io.Serializable {
// 用于记录点击次数的成员变量
private Long clickCount;
// 用于记录订单次数的成员变量
private Long orderCount;
// 用于记录支付次数的成员变量
private Long payCount;
// 实现Ordered接口中的compare方法用于定义两个CategorySortKey实例的比较逻辑
// 根据点击数、订单数、支付数依次比较来确定两个实例的大小关系
@Override
public int compare(CategorySortKey categorySortKey) {
if(clickCount-categorySortKey.getClickCount()!=0)
{
return (int) (clickCount-categorySortKey.getClickCount());
}else if(clickCount-categorySortKey.getClickCount()==0&&orderCount-categorySortKey.getOrderCount()!=0)
{
return (int) (orderCount-categorySortKey.getOrderCount());
// 首先比较点击数,如果点击数不同,则根据点击数的差值返回比较结果
if (clickCount - categorySortKey.getClickCount()!= 0) {
return (int) (clickCount - categorySortKey.getClickCount());
}
// 如果点击数相同,接着比较订单数,若订单数不同,则根据订单数的差值返回比较结果
else if (clickCount - categorySortKey.getClickCount() == 0 && orderCount - categorySortKey.getOrderCount()!= 0) {
return (int) (orderCount - categorySortKey.getOrderCount());
}
else if(clickCount-categorySortKey.getClickCount()==0&&orderCount-categorySortKey.getOrderCount()==0&&payCount-categorySortKey.getPayCount()!=0)
return (int) (payCount-categorySortKey.getPayCount());
// 如果点击数和订单数都相同,再比较支付数,若支付数不同,则根据支付数的差值返回比较结果
else if (clickCount - categorySortKey.getClickCount() == 0 && orderCount - categorySortKey.getOrderCount() == 0 && payCount - categorySortKey.getPayCount()!= 0)
return (int) (payCount - categorySortKey.getPayCount());
// 如果点击数、订单数和支付数都相同则认为两个实例相等返回0
return 0;
}
// 实现Ordered接口中的$less方法用于判断当前实例是否小于给定的CategorySortKey实例
@Override
public boolean $less(CategorySortKey categorySortKey) {
if(clickCount<categorySortKey.getClickCount())
{
// 首先比较点击数如果当前实例的点击数小于给定实例的点击数则返回true表示当前实例小于给定实例
if (clickCount < categorySortKey.getClickCount()) {
return true;
}else if(clickCount==categorySortKey.getClickCount()&&orderCount<categorySortKey.getOrderCount())
{
}
// 如果点击数相等接着比较订单数若当前实例的订单数小于给定实例的订单数则返回true
else if (clickCount == categorySortKey.getClickCount() && orderCount < categorySortKey.getOrderCount()) {
return true;
}
else if(clickCount==categorySortKey.getClickCount()&&orderCount==categorySortKey.getOrderCount()&&payCount<categorySortKey.getPayCount())
// 如果点击数和订单数都相等再比较支付数若当前实例的支付数小于给定实例的支付数则返回true
else if (clickCount == categorySortKey.getClickCount() && orderCount == categorySortKey.getOrderCount() && payCount < categorySortKey.getPayCount())
return true;
// 如果以上比较都不满足小于的条件则返回false表示当前实例不小于给定实例
return false;
}
// 实现Ordered接口中的$greater方法用于判断当前实例是否大于给定的CategorySortKey实例
@Override
public boolean $greater(CategorySortKey categorySortKey) {
if(clickCount>categorySortKey.getClickCount())
{
// 首先比较点击数如果当前实例的点击数大于给定实例的点击数则返回true表示当前实例大于给定实例
if (clickCount > categorySortKey.getClickCount()) {
return true;
}else if(clickCount==categorySortKey.getClickCount()&&orderCount>categorySortKey.getOrderCount())
{
}
// 如果点击数相等接着比较订单数若当前实例的订单数大于给定实例的订单数则返回true
else if (clickCount == categorySortKey.getClickCount() && orderCount > categorySortKey.getOrderCount()) {
return true;
}
else if(clickCount==categorySortKey.getClickCount()&&orderCount==categorySortKey.getOrderCount()&&payCount>categorySortKey.getPayCount())
// 如果点击数和订单数都相等再比较支付数若当前实例的支付数大于给定实例的支付数则返回true
else if (clickCount == categorySortKey.getClickCount() && orderCount == categorySortKey.getOrderCount() && payCount > categorySortKey.getPayCount())
return true;
// 如果以上比较都不满足大于的条件则返回false表示当前实例不大于给定实例
return false;
}
// 实现Ordered接口中的$less$eq方法用于判断当前实例是否小于等于给定的CategorySortKey实例
@Override
public boolean $less$eq(CategorySortKey categorySortKey) {
if($less(categorySortKey))
{
// 如果当前实例小于给定实例(通过$less方法判断则返回true
if ($less(categorySortKey)) {
return true;
}
else if(clickCount==categorySortKey.getClickCount()&&orderCount==categorySortKey.getOrderCount()&&payCount==categorySortKey.getPayCount())
// 如果点击数、订单数和支付数都与给定实例相等则也返回true表示小于等于
else if (clickCount == categorySortKey.getClickCount() && orderCount == categorySortKey.getOrderCount() && payCount == categorySortKey.getPayCount())
return true;
// 其他情况返回false
return false;
}
// 实现Ordered接口中的$greater$eq方法用于判断当前实例是否大于等于给定的CategorySortKey实例
@Override
public boolean $greater$eq(CategorySortKey categorySortKey) {
if($greater(categorySortKey))
{
// 如果当前实例大于给定实例(通过$greater方法判断则返回true
if ($greater(categorySortKey)) {
return true;
}else if(clickCount==categorySortKey.getClickCount()&&orderCount==categorySortKey.getOrderCount()&&payCount==categorySortKey.getPayCount())
}
// 如果点击数、订单数和支付数都与给定实例相等则也返回true表示大于等于
else if (clickCount == categorySortKey.getClickCount() && orderCount == categorySortKey.getOrderCount() && payCount == categorySortKey.getPayCount())
return true;
// 其他情况返回false
return false;
}
// 实现Ordered接口中的compareTo方法与compare方法逻辑基本一致用于定义比较规则
// 根据点击数、订单数、支付数依次比较来确定两个实例的大小关系
@Override
public int compareTo(CategorySortKey categorySortKey) {
if(clickCount-categorySortKey.getClickCount()!=0)
{
return (int) (clickCount-categorySortKey.getClickCount());
}else if(clickCount-categorySortKey.getClickCount()==0&&orderCount-categorySortKey.getOrderCount()!=0)
{
return (int) (orderCount-categorySortKey.getOrderCount());
}
else if(clickCount-categorySortKey.getClickCount()==0&&orderCount-categorySortKey.getOrderCount()==0&&payCount-categorySortKey.getPayCount()!=0)
return (int) (payCount-categorySortKey.getPayCount());
if (clickCount - categorySortKey.getClickCount()!= 0) {
return (int) (clickCount - categorySortKey.getClickCount());
} else if (clickCount - categorySortKey.getClickCount() == 0 && orderCount - categorySortKey.getOrderCount()!= 0) {
return (int) (orderCount - categorySortKey.getOrderCount());
} else if (clickCount - categorySortKey.getClickCount() == 0 && orderCount - categorySortKey.getOrderCount() == 0 && payCount - categorySortKey.getPayCount()!= 0)
return (int) (payCount - categorySortKey.getPayCount());
return 0;
}
// 获取点击次数的方法
public Long getClickCount() {
return clickCount;
}
// 设置点击次数的方法
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
// 获取订单次数的方法
public Long getOrderCount() {
return orderCount;
}
// 设置订单次数的方法
public void setOrderCount(Long orderCount) {
this.orderCount = orderCount;
}
// 获取支付次数的方法
public Long getPayCount() {
return payCount;
}
// 设置支付次数的方法
public void setPayCount(Long payCount) {
this.payCount = payCount;
}
// 同时设置点击次数、订单次数和支付次数的方法
public void set(Long clickCount, Long orderCount, Long payCount) {
this.clickCount = clickCount;
this.orderCount = orderCount;
this.payCount = payCount;
}
}
}

@ -1,47 +1,68 @@
package cn.edu.hust.jdbc;
import org.junit.Test;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JDBCHelperTest {
@Test
public void testUpdate()
{
String sql="insert into user(username,age) values(?,?)";
Object[] params={"zhangsan",12};
JDBCHelper.getInstance().excuteUpdate(sql,params);
package cn.edu.hust.jdbc; // 包名,通常用来指定代码所属的模块或功能。
import org.junit.Test; // 导入JUnit的Test注解用于标记测试方法。
import java.sql.ResultSet; // 导入SQL的ResultSet类用于处理查询结果集。
import java.sql.SQLException; // 导入SQL异常类用于捕获和处理数据库相关的错误。
import java.util.ArrayList; // 导入ArrayList类用于创建动态数组。
import java.util.List; // 导入List接口用于定义列表类型的集合。
public class JDBCHelperTest { // 测试类包含多个测试方法用于验证JDBCHelper类的功能。
// 测试更新操作(插入数据)
@Test // 标记此方法为测试方法JUnit会自动识别并执行。
public void testUpdate() {
// SQL插入语句插入一个用户信息到user表中。
String sql = "insert into user(username, age) values(?, ?)";
// 插入的参数,表示要插入的用户名是"zhangsan"年龄是12。
Object[] params = {"zhangsan", 12};
// 使用JDBCHelper类的单例实例执行更新操作插入
JDBCHelper.getInstance().excuteUpdate(sql, params);
}
// 测试批量操作(批量插入数据)
@Test // 标记此方法为测试方法。
public void testBatch() {
// SQL插入语句插入多个用户信息到user表中。
String sql = "insert into user(username, age) values(?, ?)";
@Test
public void testBatch()
{
String sql="insert into user(username,age) values(?,?)";
List<Object[]> params=new ArrayList();
params.add(new Object[]{"lisi",23});
params.add(new Object[]{"wangwu",28});
JDBCHelper.getInstance().excuteBatch(sql,params);
// 创建一个List集合用于保存多组插入参数。
List<Object[]> params = new ArrayList<>();
// 添加第一组插入参数:用户名"lisi"年龄23。
params.add(new Object[]{"lisi", 23});
// 添加第二组插入参数:用户名"wangwu"年龄28。
params.add(new Object[]{"wangwu", 28});
// 使用JDBCHelper类的单例实例执行批量插入操作。
JDBCHelper.getInstance().excuteBatch(sql, params);
}
@Test
public void testQuery()
{
String sql="select * from user where username=?";
Object[] params={"zhangsan"};
// 测试查询操作(查询单个用户数据)
@Test // 标记此方法为测试方法。
public void testQuery() {
// SQL查询语句查询username为"zhangsan"的用户信息。
String sql = "select * from user where username=?";
// 查询条件,用户名为"zhangsan"。
Object[] params = {"zhangsan"};
// 使用JDBCHelper类的单例实例执行查询操作并传入查询回调接口。
JDBCHelper.getInstance().excuteQuery(sql, params, new JDBCHelper.QueryCallBack() {
// QueryCallBack接口的process方法负责处理查询结果。
@Override
public void process(ResultSet rs) {
try {
if(rs.next())
{
System.out.println("结果是"+rs.getInt(2));
// 如果查询结果集中有数据,取出第二列的内容(假设为年龄)。
if (rs.next()) {
System.out.println("结果是" + rs.getInt(2)); // 输出查询结果中的第二列(年龄)。
}
} catch (SQLException e) {
e.printStackTrace();
e.printStackTrace(); // 捕获SQL异常并打印堆栈信息。
}
}
});

Loading…
Cancel
Save