数字化档案查重工具
Go to file
2025-09-28 20:59:05 +08:00
.idea 基于[提交](f853f03bac)修改的版本 2025-08-12 20:39:57 +08:00
doc feat:界面变动,逻辑优化 2025-08-20 21:45:05 +08:00
gradle/wrapper feat:初始化项目结构 2025-07-14 11:45:14 +08:00
src feat:1.调整了显示界面的UI 2.去掉了反馈区域的同步 2025-09-28 20:59:05 +08:00
.gitignore feat:初始化项目结构 2025-07-14 11:45:14 +08:00
build.gradle feat:1.以javafx SceneBuilder 17版本重新编辑了下FXML文件 2.添加线程池全局管理类(待完善:如何协作)3. 添加版本显示字段(非最终实现) 2025-08-22 20:01:55 +08:00
gradle.properties feat:1.调整了显示界面的UI 2.去掉了反馈区域的同步 2025-09-28 20:59:05 +08:00
gradlew feat:初始化项目结构 2025-07-14 11:45:14 +08:00
gradlew.bat feat:初始化项目结构 2025-07-14 11:45:14 +08:00
README.MD feat:初始化项目结构 2025-07-14 11:45:14 +08:00
settings.gradle feat:初始化项目结构 2025-07-14 11:45:14 +08:00

查重逻辑划分

1. 核心模块划分

模块名 职责 包含内容
core (核心逻辑) 处理核心查重算法 文件遍历、哈希计算、查重逻辑
io (I/O处理) 文件系统交互 文件读取、内存映射、并行I/O优化
model (数据模型) 定义数据结构 文件元数据、哈希结果、查重报告
ui (用户界面) GUI展示 JavaFX面板、控制器、事件处理
util (工具类) 公用功能 哈希工具、进度计算、日志记录

2. 模块依赖关系

graph TD
    ui --> core
    ui --> model
    core --> io
    core --> model
    core --> util
    io --> util

3. 进阶模块(可选扩展)

模块名 用途
api 提供REST接口供其他系统调用
cli 命令行界面脱离JavaFX使用
plugin 支持扩展哈希算法或存储后端

4. 目录结构示例

src/
├── main/
│   ├── java/
│   │   ├── top.r3.doc/
│   │   │   ├── core/
│   │   │   ├── io/
│   │   │   ├── model/
│   │   │   ├── ui/
│   │   │   ├── util/
│   │   │   └── Main.java (主入口)
│   └── resources/ (FXML/CSS)
└── test/ (对应模块的单元测试)

5. 关键设计原则

  1. 单一职责:每个模块只做一件事(如io模块只处理I/O
  2. 依赖倒置:高层模块(如ui)依赖抽象(接口),不依赖具体实现
  3. 可测试性核心逻辑与UI分离便于单元测试
  4. 扩展性:通过策略模式(如FileHashStrategy)支持新哈希算法

6. 优化后的查重流程

sequenceDiagram
    UI->>+Core: 启动查重(rootPath)
    Core->>+IO: 遍历文件(rootPath)
    IO-->>-Core: 返回文件列表
    loop 每个文件
        Core->>+IO: 读取文件内容
        IO-->>-Core: 返回字节数据
        Core->>+Util: 计算哈希
        Util-->>-Core: 返回哈希值
    end
    Core->>+Model: 生成查重报告
    Model-->>-UI: 显示结果