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.java
2.3.2 AbsWriteIntoOracle.java
向數據庫插入數據的抽象類,子類為InsertIntoTableExtends.java
2.3.3 AbsProperty.java
設置字段拆分標准的抽象類,子類為PropertyIspExtends.java,PropertyProvinceExtends.java
2.3.4 ITrucateString.java
格式化單條記錄的接口,實現類為TruncateStringImpl.java