Skip to content

Commit 76c163e

Browse files
committed
fix charset
1 parent c2b08d5 commit 76c163e

2 files changed

Lines changed: 33 additions & 6 deletions

File tree

IP.java

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,40 @@
44
import java.nio.ByteBuffer;
55
import java.nio.ByteOrder;
66
import java.util.Arrays;
7+
import java.nio.charset.Charset;
8+
import java.util.Random;
79
import java.util.concurrent.Executors;
810
import java.util.concurrent.TimeUnit;
911
import java.util.concurrent.locks.ReentrantLock;
1012

1113
class 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
}

IPExt.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.nio.ByteBuffer;
55
import java.nio.ByteOrder;
66
import java.util.Arrays;
7+
import java.nio.charset.Charset;
78
import java.util.concurrent.Executors;
89
import java.util.concurrent.TimeUnit;
910
import java.util.concurrent.locks.ReentrantLock;
@@ -65,7 +66,7 @@ public static String[] find(String ip) {
6566
lock.unlock();
6667
}
6768

68-
return new String(areaBytes).split("\t");
69+
return new String(areaBytes, Charset.forName("UTF-8")).split("\t");
6970
}
7071

7172
private static void watch() {

0 commit comments

Comments
 (0)