44import java .nio .ByteBuffer ;
55import java .nio .ByteOrder ;
66import java .util .Arrays ;
7+ import java .nio .charset .Charset ;
8+ import java .util .Random ;
79import java .util .concurrent .Executors ;
810import java .util .concurrent .TimeUnit ;
911import java .util .concurrent .locks .ReentrantLock ;
1012
1113class IP {
1214
15+ public static String randomIp () {
16+ Random r = new Random ();
17+ StringBuffer str = new StringBuffer ();
18+ str .append (r .nextInt (1000000 ) % 255 );
19+ str .append ("." );
20+ str .append (r .nextInt (1000000 ) % 255 );
21+ str .append ("." );
22+ str .append (r .nextInt (1000000 ) % 255 );
23+ str .append ("." );
24+ str .append (0 );
25+
26+ return str .toString ();
27+ }
28+
1329 public static void main (String [] args ){
1430 IP .load ("H:\\ loveapp\\ codebase\\ 17mon\\ 17monipdb.dat" );
1531
16- System .out .println (Arrays .toString (IP .find ("8.8.8.8" )));
17- System .out .println (Arrays .toString (IP .find ("255.255.255.255" )));
32+ Long st = System .nanoTime ();
33+ for (int i = 0 ; i < 1000000 ; i ++)
34+ {
35+ IP .find (randomIp ());
36+ }
37+ Long et = System .nanoTime ();
38+ System .out .println ((et - st ) / 1000 / 1000 );
39+
40+ System .out .println (Arrays .toString (IP .find ("118.28.8.8" )));
1841 }
1942
2043 public static boolean enableFileWatch = false ;
@@ -52,6 +75,7 @@ public static String[] find(String ip) {
5275 }
5376
5477 byte [] areaBytes ;
78+
5579 lock .lock ();
5680 try {
5781 dataBuffer .position (offset + (int ) index_offset - 1024 );
@@ -61,7 +85,7 @@ public static String[] find(String ip) {
6185 lock .unlock ();
6286 }
6387
64- return new String (areaBytes ).split ("\t " );
88+ return new String (areaBytes , Charset . forName ( "UTF-8" ) ).split ("\t " );
6589 }
6690
6791 private static void watch () {
@@ -104,13 +128,15 @@ private static void load() {
104128 }
105129 indexBuffer .order (ByteOrder .BIG_ENDIAN );
106130 } catch (IOException ioe ) {
107-
131+ ioe . printStackTrace ();
108132 } finally {
109133 try {
110134 if (fin != null ) {
111135 fin .close ();
112136 }
113- } catch (IOException e ){}
137+ } catch (IOException e ){
138+ e .printStackTrace ();
139+ }
114140 lock .unlock ();
115141 }
116142 }
0 commit comments