纯真IP地址库结构详细解析

一周以来,一直在做 IP地址库的解析。从调研到编码到优化,大概花了有七八天的时间。感觉很好玩。总结一下整个做的过程。

1、关于IP 地址库的解析方式

目前主要的解析方式有两种:通过API,或通过IP数据库。

API方式很简单,目前国内大厂不少提供API接口,只要发送请求的IP,就能获得相应的地理位置。像BAT等等公司都提供IP查询接口。这种解析方式的好处在于,编码简单,一个请求获得数据,然后解析一下就好了(通常只是个json数据),而且不用维护数据库,对本地没有负担。但是缺点也挺明显的,首先是慢,发送网络请求一秒钟发不了几条,其次是有限制,比如百度限制每秒钟 250条请求,防止并发量太大造成网络阻塞,再次要受制于人,什么都要听人家的,万一今天地址换了,明天接口数据格式改了,后天要收费了……哦卖糕的。

IP数据库方式相对来讲复杂一点,需要有完善的数据库,还要建立相应的查询服务。优缺点则跟API方式正好相反:优点是查询快,不受网络和网站的限制,缺点是编码相对复杂,而且要一直维护数据库。数据库国内最著名的是纯真网络,ipip,国外更加著名的GeoIP等等。

我们在权衡利弊之后,决定采取数据库方式。听说GeoIP对国外ip 数据很完善,但是对于国内的ip还是不太全的。因此,我们初步选用纯真IP数据库来解析。

2、存储
下载下来纯真数据库的过程就不介绍了,我也没有闲心去解析dat,就直接解压成txt来做了。数据一共不到45万条。

先普及个常识,那就是IP地址实际上是一个unsigned int值。在群里询问做法的时候我发现很多人居然都不知道这一点。我们看到的IP地址,是4个0~255之间的数,而实际上在计算机中IP地址的表示是32位二进制。 01010101.10101010.00110011.11001100酱婶的。32位二进制,当然就是一个unsigned int的取值范围。IP解析也是一样,把IP转化成int 进行存储和查询,是最节省空间、最效率的方法。

书归正文,解压出来的IP地址库是这样的:

(纯真IP数据库,可以到http://www.cz88.net去下载。这个是公开的。我相信我要不 Continue reading "纯真IP地址库结构详细解析"

虚拟主机使用Navicat for MySQL导入大于20M的超大MySQL数据库

很多朋友的网站在换空间的过程中,会遇到这样的问题,购买了虚拟主机,上传网站程序后,接下来就是导入数据库文件到新的数据库。
在这个环节上,不但数据库导出导入的格式要求很严,而且很多朋友的网站数据库大于最大导入量往往没有办法正常传输,因为很多数据库的导入是有大小限制的,比如我买的万网M3限制为两兆。

我的数据库是40M的,改怎么办呢?网上寻觅了半天,全是转载的方法不适用。后来打电话给万网,客服告诉我下载个Navicat for MySQL,用它来导入。

安装后运行navicat,界面如下图:

然后连接到数据库,如下图,点击“文件”下方的“链接”。
分别输入链接名、主机名或ip、用户名 Continue reading "虚拟主机使用Navicat for MySQL导入大于20M的超大MySQL数据库"

WordPress更换数据库换前缀详解

昨天帮一朋友迁移 WordPress,本来是很简单的事,但客户新服务器本身运行一个 WordPress,而且数据库只有一个,那么这个迁移过来的 WordPress 用的数据库表需要改『前缀』。实现两个WordPress共用一个数据库。

用 WordPress 的朋友都知道 WordPress 默认的数据表前缀是『wp_』:(注:这是默认的数据表,如果安装了其他插件有可能生成其他 wp_ 开头的数据表)

wp_commentmeta
wp_comments
wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users

第一步:那么第一件事就是把所以 Continue reading "WordPress更换数据库换前缀详解"

把.frm/.myd/.myi转换为.sql数据库

网上介绍的frm,myd,myi转换方式需要安装原版的MySQL数据库,操作起来还有局限性,这里换一个思路,来轻松解决frm,myd,myi的转换成sql文件的问题

PHPnow 组件 最新版本包含:

Apache-2.0.63 / 2.2.16
PHP-5.2.14
MySQL-5.0.90 / 5.1.50
Zend Optimizer-3.3.3
phpMyAdmin-3.3.7
eAccelerator-0.9.6-1 *

安装要求:

如果装有同类软件,请先停止或卸载,否则会占端口!请关闭迅雷,或修改迅雷的 BT 端口!
解压:解压到任意目录;(不能含有中文!例如 "桌面")
安装:运行 Setup.cmd 根据向导 Continue reading "把.frm/.myd/.myi转换为.sql数据库"

小米论坛的800W数据库 百度网盘下载

小米官方论坛数据于5月13号遭受泄露,被泄露数据量为8281387(约800万条)。经过数据分析和比对,Pop发现此次泄露的数据均为2012年8月前注册的论坛账号信息。

这次泄露的数据采用独立Salt单向哈希值加密,但是简单的密码仍然可能被迅速破解。

泄露数据为xiaomi.rar里面含有(xiaomi_com.frm、xiaomi_com.MYD、xiaomi_com.MYI)这三个文件

File: xiaomi_com.frm
Size: 8690 bytes
Modified: 2014年5月13日, 15:49:40
MD5: 1D31E3C7DE6E094C2C6E6AB7576BD6BF
SHA1: 38948C4DC50DD2F919F88EDCFA8DB59FD3A206E3
CRC32: 8B7B1E55

File: xiaomi_com.MYD Continue reading "小米论坛的800W数据库 百度网盘下载"

SQL2008数据库的备份与还原

当学籍系统、综合素质评价系统有数据更新时,管理员一定要及时的做好数据库的备份工作,以防止意外情况的发生。正确、及时的进行数据库备份能减少数据丢失后恢复数据库的工作量。所以为了避免数据在灾难后无法恢复,必须对数据库进行备份。

一、SQL数据库的备份:

1、依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 数据库:Dsideal_school_db既是我们需要备份的学籍数据库

2、选择要备份的数据库“Dsideal_school_db”,点击鼠 Continue reading "SQL2008数据库的备份与还原"

三星归属地数据文件HomeLocationDB.bin和HomeLocationVersion.bin分析

三星国行的手机都是可以显示来电归属地的,自带的就是要比其他软件的节省资源,但是归属地数据就不是最新,虽然每周可以更新,但是更新出来的数据有问题,没有系统原始的准确。

归属地数据文件原始版本是存放在以下路径:

system\etc\ Continue reading "三星归属地数据文件HomeLocationDB.bin和HomeLocationVersion.bin分析"

手机号码归属地最新数据库2013年9月(附带采集更新程序)

昨天发现数据库的手机号归属地判断不准确,数据库该更新了,百度了下好像没有什么共享好的。
以前是去淘宝上买的数据库,每次更新还得加钱,干脆自己做个算了,共享给大家。

使用说明:
1.单独号段的更新,请在手机号段里输入开始号段和结束号段,也可以在选择号段里选择,这样就不用填写了。
2.所有号段的更新,该功能将更新所有号段,执行时间较长。
3.清空按钮将清空数据库,请谨慎操作。
4.统计按钮显示数据库总数据及各个号段的数据总数,执行时间长,请稍微等待一会。
5.手机号码框里输入手机号码可以对数据库进行查询已校验数据。
采集过程中想把旧数据覆盖掉请勾选覆盖旧数据
采集过程中想跳过归属地为空的数据请勾选跳过空数据
采集过程请勿再点击其他按钮

更新说明:
2013.3.4 修正showji.com接口获取数据失败的问题
2013.3.25 加入184号段,并更新184号段信息2844个
2013.4.15 修正部分地区邮编和区号获取出错的问题
2013.8.15 修改网易接口失效为360接口,修正跳过方式为先判断再获取网络数据。

数据导出:
1.下载并安装office2003 5in1
http://pan.baidu.com/share/link?shareid=2943813224&uk=1294197440
或者使用Access独立安装包
http://www.cr173.com/soft/11655.html
http://www.7edown.com/soft/down/soft_16283.html
2.双击打开data.mdb,在Dm_Mobile表右键点导出,选择你想要的格式即可

数据信息:
程序所带ACCESS数据库为2013年9月12日更新,数据来源IP138+百度,数据总数【283789】条

电信133 -> 9648 电信153 -> 9818 电信180 -> 9575 电信189 -> 9981
电信181 -> 7173 移动134 -> 9694 移动135 -> 10000 移动136 -> 10000
移动137 -> 9976 移动138 -> 9994 移动139 -> 9998 移动150 -> 10000
移动151 -> 10000 移动152 -> 10000 移动157 -> 7086 移动158 -> 10000
移动159 -> 10000 移动182 -> 9960 移动183 -> 9975 移动184 -> 4038
移动187 -> 9980 移动188 -> 9546 联通130 -> 9879 联通131 -> 10000
联通132 -> 9804 联通155 -> 10000 联通156 -> 9731 联通185 -> 6154
联通186 -> 9638 数据卡145 -> 5786 数据卡147 -> 6355

手机号码归属地最新数据库(附带采集更新程序) 2013年9月更新 下载地址:
http://duanmu.org/upload/mobile.rar
http://pan.baidu.com/s/13irL8

原文地址:
http://duanmu.org/log/mobile/

SQL大数据库导入利器脚本:BigDump

建站过程中,尝尝会遇到一个问题。SQL数据库很大,例如某些论坛,某些资讯类站点,数据库动辄几百M,甚至上G容量,当然上G的数据库,不可能是使用虚拟主机了。VPS或者独服,可以将数据库打包对传自然方便,但有些仍在用虚拟主机,一旦遇到服务器搬迁,导入导出数据库是一件尤为痛苦的事情。phpmyadmin导入受上传速度影响,很可能导致脚本超时,导入失败。如果将SQL分割,分布导入,又太麻烦。

原则上,我们还可以用linux的定时任务,交由服务器自动导入,但并不是每个虚拟主机都是Linux系统。那么,只能考虑使用程序导入,找过很多PHP导入程序,都不妥善。偶然找到一个,用了感觉效果很好,特别推荐。

脚本名称:BigDump
下载地 Continue reading "SQL大数据库导入利器脚本:BigDump"

将access导入SQL server

熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在 Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:

一、SQL SERVER 和ACCESS的数据导入导出

常规的数据导入导出:
使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:
  ○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation
  ○2Services(数据转换服务),然后选择 czdImport Data(导入数据)。
  ○3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
  ○4在Choose a Destination(选择目标)对话 Continue reading "将access导入SQL server"