Java解析IP数据库,工程文档
2016-05-17 08:38
435 查看
1. 工程介绍
本工程doTestIP为eclipse(java EE)下创建的工程,JDK1.6实现的功能如下:1、解析二进制的IP数据库文件
2、导出经过解析后的IP记录文档,只支持txt格式
3、支持查询IP的归属地
4、支持查询某地区的IP或者IP范围
5、能将数据分解成如下格式:< IP,国家,省/市,城市,详细地址,单位地址,运营商>,并批量插入数据库。(44万条数据,优化后耗时约60s)
2. 工程结构
需要的jar包:junit-4.8.1.jar & log4j-1.2.15.jar & ojdbc14.jar
2.1 运行主类(入口)
IP地址查询的运行类为Decorator.java插入数据库的运行类为Run.java
package路径为doTestIP/src/com/showtime/main/
2.2 包结构
2.2.1 IPparse:这个包实现了解析IP数据库文件和查询IP地址的功能。
IPSeeker.java 是主要类,其余是辅助类,public List<IPEntry> getAllData(){},该方法能获取所有解析后的数据;public IPLocation getIPLocation(String ip){},该方法能根据IP查询地址;
public List<IPEntry> getIPEntriesDebug(String s) {},该方法根据地点查询IP;
public List<IPEntry> getIPEntries(String s) {},该方法根据地点查询IP,用文件映射的方式,效率更高。
2.2.2 Main:运行类
Decorator.javaIP为地址查询的运行类,Run.java为插入数据库的运行类。
2.2.3 Module:这个包实现了向文件写数据和向数据库插入数据的功能。
InputFileFirstExtends.java 实现导出文件的功能,文件内存放解析出类的数据;InputFileSecondExtends.java 实现导出文件的功能,文件内存放格式化后的数据,格式如下:< IP,国家,省/市,城市,详细地址,单位地址,运营商>;
InsertIntoTablesExtends.java 实现向数据库中IP表和Area表中插入数据的功能。
2.2.4 SplitString:该包实现将数据分解成固定格式,如:< IP,国家,省/市,城市,详细地址,单位地址,运营商>
PropertyIspExtends.java 设置运营商分割的标准PropertyProvinceExtends.java 设置省份分割的标准
TruncateStringImpl.java 实现数据格式转换
2.2.5 功能包
该包提供辅助。ConnOracleJDBC.java 提供JDBC方式连接数据库;
ConnOracelJNDI.java 提供JNDI方式连接数据库;
LogFactory.java 日志工厂
2.2.6 单元测试包
2.3 接口和抽象类
2.3.1 AbsInputFile.java
导出文件的抽象类,继承它的子类为InputFileFirstExtends.java,InputFileSecondExtends.java2.3.2 AbsWriteIntoOracle.java
向数据库插入数据的抽象类,子类为InsertIntoTableExtends.java2.3.3 AbsProperty.java
设置字段拆分标准的抽象类,子类为PropertyIspExtends.java,PropertyProvinceExtends.java2.3.4 ITrucateString.java
格式化单条记录的接口,实现类为TruncateStringImpl.java相关文章推荐
- JAVA实现图片叠加效果
- java虚拟机JVM内存不够,OutOfMemorry Error
- 从JDK源码角度看并发竞争的超时
- 从JDK源码角度看并发竞争的超时
- 完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群
- Mina框架整合 spring2.0 和spring3.0 版本的问题
- 【JAVA】排序算法(二)——冒泡排序
- java 类和对象1
- java初级阶段的总结
- Java 并发编程:volatile的使用及其原理
- Java语言中的面向对象特性(总结得不错)
- [置顶] eclipse对hibernate使用逆向工程
- Java设计模式(一) 简单工厂模式不简单
- 【SpringMVC读书笔记】第一章Spring框架
- Java设计模式(一) 简单工厂模式不简单
- java学习总结(16.05.17)对数据类型取值范围和数据溢出的理解(以byte类型为例)
- 【Java】Java内存参数配置
- Java基础第三天总结
- Android Studio 与 Eclipse 目录结构对比
- Java高并发程序设计总结