JDBC
- JDBC驱动
接口:是一种能力,是一种标准,是
Everything 文件搜索
简介
背景
意义
- 解决Windows命令行下文件搜索问题
- 基于Java开发的工具可以在Windows和Linux平台无差异使用
实现流程
- 交互式
- 文件遍历,并存入到数据库
- 文件检索
技术
- java(文件操作) 
- Database(插入式H2数据库或者MySQL数据库) - 关于H2优势: - 非常快,开源,JDBC API
- 内存数据库,支持嵌入式和服务器模式
- 基于浏览器的Console应用
- 占地面积小:大小约1.5MB的jar文件大小
 
- JDBC 
- Lombok(IDEA安装Lombok插件) 
- java多线程 
- 文件系统监控(Apache Commons IO) 
目标:搭建项目
- 创建Maven项目 
- 配置pom 
- 创建包(按照功能分类) - cmd:Everything应用程序的命令行交互程序 
- config:Everything应用程序的配置相关类 
- core:Everything应用程序的具体业务实现 - common - 将file对象转化为thing对象 
- dao - 数据源的获取与连接,以及业务的CRUD(增删改查) 
- index - 索引加拦截,文件路径遍历 
- interceptor - 拦截器的具体实现 
- model - 基本的模型类抽象 
- search - 检索的实现,实现统一调度器 
 
 
- 创建入口程序 
- 简单的公共代码开发 
- git管理 - Github创建仓库
- 本地仓库中git init
- 本地项目中创建 .gitignore添加不加入版本管理的目录和文件
- git add . -> git commit -m message
- git remote add origin http://xxx
- git push origin master
 - 代码更新之后,只需要4,6 
ctrl+shift+alt+l
README.md
基本的模型类抽象
- 文件类型(png jpeg doc exe msi jar zip rar ppt txt sh)
- 索引File的属性之后的信息 Thing
- 检索的参数(条件) Condition
设计数据库的表
- 创建数据库(my_everything)
- 设计数据库的表(Thing类创建的对象的属性)
数据库编程:(DAO)数据访问对象
- 创建数据源(DataSource)
- 执行数据库脚本(初始化数据库)- Druid数据源,为监控而生的数据库连接池
 
检索:
- 数据库的初始化工作 
- 数据库的访问工作(使用DataSource) 
- 实现检索业务(查询) - final的初始化:直接赋值,构造方初始化法,构造块三种方法 
索引
- 数据库的初始化工作 
- 数据库的访问工作(使用DataSource) 
- 实现检索业务(插入) - 预编译命令设置参数 
- ①如何遍历文件系统中所有文件,②需要对一些特点的文件或目录进行排除,③并且将文件对象转化为Thing对象,调用数据库访问的插入操作 - 索引 - 通过配置类来处理那些文件需要扫描,那些不需要扫描 - C:\(路径) ->[做排除工作] File(Collection) -> Thing(Collection) -> FileIndexDao
 
shift f6 修改文件名称
1.检索 2.索引的遍历 3.重构
统一调度器(创建线程,分发任务)
- 构建索引(依赖index功能,业务FileScan)
- 检索数据(依赖search功能,业务FileSearch)
- 扩展
命令行客户端
- 欢迎
- 帮助
- 退出
- 索引
- 检索
发现问题
- 代码问题(资源未关闭,异常处理,输出信息不完整) 
- 用户不友好 
- 索引之后的问题,如果被删除,但是仍然可以被检索(功能缺陷) 
- 检索的结果数量限制,排序策略,给用户提供可配置的机会 
- 索引的目录和文件以及排除的目录和文件,给用户提供可配置的机会 
- 文件系统的监控,文件系统中文件的新增,删除 
解决问题
- Review(检查代码) 
- 大家根据情况完善 
- 删除文件的清理工作 
- 5 问题 java -jar my-everything-1.0.0jar - 目的:通过执行程序的时候,传入参数,让配置信息可以变换
- 解析
 - java -jar my-everything-1.0.0.jar - –maxReturn=40 - –deptOrderByAsc=false - –includePath=D:\;E:\workspace - –excludePath=E:\workspace\java4code 
6. 文件系统监控
- 文件(目录)新增,删除 
- 监控操作系统的文件系统中文件的变化 - 解决方案: - JDK提供的文件监控(WatchService)
 - FileSystem WatchService(只能监听一级目录,无法监听更深层次目录) - Apache Commons IO 开源库 - IO工具
- Input Output
- Filter
- Comparator
- File mointer
 - 1 
 2
 3- FileAlterationListener //接受文件系统通知,处理业务,是自己要 实现的一个接口 
 FileAlterationMoniter //负责调度,启动,停止监听器,添加通知 者,依赖Observe
 FileAlterationObserve //如果文件发生变化,发送一个通知告诉 listener去执行处理,需要依赖需 listener对象
 
如何判断文件发生改变?
- 重新执行index
- 遍历文件系统(自己规定间隔时间)
StringBuilder与StringBuffer
- 方法在栈区储存,独立
- 放在属性上使用时牵扯到线程安全,StringBufffer
broncho