添加readme.md说明文件
This commit is contained in:
parent
97e0bb8374
commit
0755357474
|
|
@ -0,0 +1,60 @@
|
||||||
|
golang 实现ip地址查询
|
||||||
|
|
||||||
|
获取
|
||||||
|
|
||||||
|
```
|
||||||
|
go get github.com/mohong122/ip2region/binding/golang
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
使用
|
||||||
|
|
||||||
|
```golang
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/mohong122/ip2region/binding/golang"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("err")
|
||||||
|
region, err := ip2region.New("ip2region.db")
|
||||||
|
defer region.Close()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ip, err := region.MemorySearch("127.0.0.1")
|
||||||
|
fmt.Println(ip, err)
|
||||||
|
ip, err = region.BinarySearch("127.0.0.1")
|
||||||
|
fmt.Println(ip, err)
|
||||||
|
ip, err = region.BtreeSearch("127.0.0.1")
|
||||||
|
fmt.Println(ip, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
返回对象
|
||||||
|
```golang
|
||||||
|
type IpInfo struct {
|
||||||
|
CityId int64
|
||||||
|
Country string
|
||||||
|
Region string
|
||||||
|
Province string
|
||||||
|
City string
|
||||||
|
ISP string
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
性能
|
||||||
|
|
||||||
|
|名称|次数|平均耗时|
|
||||||
|
|---|---|------|
|
||||||
|
BenchmarkBtreeSearch-4| 200000 | 7715 ns/op
|
||||||
|
BenchmarkMemorySearch-4| 2000000 | 840 ns/op
|
||||||
|
BenchmarkBinarySearch-4| 30000 | 42680 ns/op
|
||||||
|
|
||||||
|
|
@ -110,7 +110,7 @@ func (this *Ip2Region) MemorySearch(ipStr string) (ipInfo IpInfo, err error) {
|
||||||
var dataPtr, l int64;
|
var dataPtr, l int64;
|
||||||
for (l <= h) {
|
for (l <= h) {
|
||||||
|
|
||||||
m := l + h >> 1
|
m := (l + h) >> 1
|
||||||
p := this.firstIndexPtr + m * INDEX_BLOCK_LENGTH
|
p := this.firstIndexPtr + m * INDEX_BLOCK_LENGTH
|
||||||
sip := getLong(this.dbBinStr, p)
|
sip := getLong(this.dbBinStr, p)
|
||||||
if ip < sip {
|
if ip < sip {
|
||||||
|
|
|
||||||
|
|
@ -4,25 +4,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetLong(t *testing.T) {
|
|
||||||
//region, err := New("../../../data/ip2region.db ")
|
|
||||||
//if err != nil {
|
|
||||||
// t.Error(err)
|
|
||||||
//}
|
|
||||||
//region.BtreeSearch("222.46.20.201")
|
|
||||||
//region.MemorySearch("222.46.20.201")
|
|
||||||
|
|
||||||
//getLong([]byte("abcd"), 0)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkBtreeSearch(B *testing.B) {
|
func BenchmarkBtreeSearch(B *testing.B) {
|
||||||
region, err := New("../../data/ip2region.db ")
|
region, err := New("../../data/ip2region.db ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
B.Error(err)
|
B.Error(err)
|
||||||
}
|
}
|
||||||
for i:=0;i<B.N;i++{
|
for i:=0;i<B.N;i++{
|
||||||
region.BtreeSearch("222.46.20.201")
|
region.BtreeSearch("127.0.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -33,7 +21,7 @@ func BenchmarkMemorySearch(B *testing.B) {
|
||||||
B.Error(err)
|
B.Error(err)
|
||||||
}
|
}
|
||||||
for i:=0;i<B.N;i++{
|
for i:=0;i<B.N;i++{
|
||||||
region.MemorySearch("251.1.12.1")
|
region.MemorySearch("127.0.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -44,7 +32,7 @@ func BenchmarkBinarySearch(B *testing.B) {
|
||||||
B.Error(err)
|
B.Error(err)
|
||||||
}
|
}
|
||||||
for i:=0;i<B.N;i++{
|
for i:=0;i<B.N;i++{
|
||||||
region.BinarySearch("222.46.20.201")
|
region.BinarySearch("127.0.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue