当前位置: 首页 > news >正文

网站建设基本流程规范青岛市建设监理网站

网站建设基本流程规范,青岛市建设监理网站,中铁建设集团有限公司什么级别,漳州房产网高性能IP数据库格式详解每秒解析1000多万ip qqzeng-ip-ultimate.dat 3.0版编码#xff1a;UTF8 字节序#xff1a;Little-Endian 返回规范字段#xff08;如#xff1a;亚洲|中国|香港|九龙|油尖旺|新世界电讯|810200|Hong Kong|HK|114.17495|22.327115#xff09; -…高性能IP数据库格式详解每秒解析1000多万ip  qqzeng-ip-ultimate.dat 3.0版编码UTF8     字节序Little-Endian 返回规范字段如亚洲|中国|香港|九龙|油尖旺|新世界电讯|810200|Hong Kong|HK|114.17495|22.327115 ------------------------ 文件结构  ------------------------- // 文件头 4字节 [IP段数量] // 前缀区 8字节(4-4) 256*8 [索引区start第几个][索引区end第几个] // 索引区 8字节(4-3-1) ip段行数x8 [结束IP数字][地区流位置][流长度] // 内容区 长度无限制 [地区信息][地区信息]……唯一不重复 ------------------------ 文件结构 --------------------------- 优势压缩形式将数据存储在内存中通过减少将相同数据读取到内存的次数来减少I/O.          较高的压缩率通过使用更小的内存中空间提高查询性能。          前缀区为作为缩小查询范围,索引区和内容区长度一样,          解析出来一次性加载到数组中,查询性能提高3-5倍 压缩原版txt为38.5M,生成dat结构为3.68M 。          和上一版本2.0不同的是索引区去掉了[开始IP数字]4字节,节省多1-2M。          3.0版本只适用[全球版]条件为ip段区间连续且覆盖所有IPV4。          2.0版本适用[全球版][国内版][国外版] 性能每秒解析1000多万ip  创建qqzeng-ip 于 2018-04-08   性能测试   ( CPU i7-7700K DDR2400 16G win10 X64 ) 查询【3.0】内存优化版 3414万ip-3.318秒 每秒1028.93309222423万次查询【3.0】内存优化版 4439万ip-4.199秒 每秒1057.1564658252万次查询【3.0】内存优化版 4056万ip-3.821秒 每秒1061.50222454855万次查询【3.0】内存优化版 1781万ip-1.68秒 每秒1060.11904761905万次查询【3.0】内存优化版 3862万ip-3.66秒 每秒1055.1912568306万次查询【3.0】内存优化版 3479万ip-3.31秒 每秒1051.05740181269万次查询【3.0】内存优化版 2892万ip-2.713秒 每秒1065.97862145227万次查询【3.0】内存优化版 3484万ip-3.263秒 每秒1067.72908366534万次查询【3.0】内存优化版 2699万ip-2.548秒 每秒1059.26216640502万次查询【3.0】内存优化版 88万ip-0.087秒 每秒1011.49425287356万次查询【3.0】内存优化版 161万ip-0.153秒 每秒1052.28758169935万次查询【3.0】内存优化版 91万ip-0.088秒 每秒1034.09090909091万次查询【3.0】内存优化版 42万ip-0.041秒 每秒1024.39024390244万次查询【3.0】内存优化版 159万ip-0.152秒 每秒1046.05263157895万次查询【3.0】内存优化版 88万ip-0.084秒 每秒1047.61904761905万次查询【3.0】内存优化版 123万ip-0.118秒 每秒1042.37288135593万次查询【3.0】内存优化版 106万ip-0.101秒 每秒1049.50495049505万次查询【3.0】内存优化版 61万ip-0.059秒 每秒1033.89830508475万次查询【3.0】内存优化版 177万ip-0.169秒 每秒1047.33727810651万次查询【3.0】内存优化版 106万ip-0.101秒 每秒1049.50495049505万次 查询【3.0】普通优化版 1464万ip-3.408秒 每秒429.577464788732万次查询【3.0】普通优化版 352万ip-0.803秒 每秒438.356164383562万次查询【3.0】普通优化版 1357万ip-3.042秒 每秒446.088099934254万次查询【3.0】普通优化版 184万ip-0.43秒 每秒427.906976744186万次查询【3.0】普通优化版 752万ip-1.697秒 每秒443.134944018857万次查询【3.0】普通优化版 1795万ip-4.032秒 每秒445.188492063492万次查询【3.0】普通优化版 1823万ip-4.076秒 每秒447.252208047105万次查询【3.0】普通优化版 723万ip-1.622秒 每秒445.745992601726万次查询【3.0】普通优化版 136万ip-0.319秒 每秒426.332288401254万次查询【3.0】普通优化版 334万ip-0.756秒 每秒441.798941798942万次查询【3.0】普通优化版 636万ip-1.435秒 每秒443.205574912892万次查询【3.0】普通优化版 701万ip-1.578秒 每秒444.233206590621万次查询【3.0】普通优化版 1807万ip-4.07秒 每秒443.980343980344万次查询【3.0】普通优化版 489万ip-1.105秒 每秒442.533936651584万次     随机生成 IP RNGCryptoServiceProvider rngCsp new RNGCryptoServiceProvider();byte[] bytes new byte[4];rngCsp.GetBytes(bytes);uint value ReadBigEndian32(bytes[0], bytes[1], bytes[2], bytes[3]);     开发参考 解析dat以及查询) public class IPSearch3Fast{private static readonly LazyIPSearch3Fast lazy new LazyIPSearch3Fast(() new IPSearch3Fast());public static IPSearch3Fast Instance { get { return lazy.Value; } }private IPSearch3Fast(){LoadDat();Watch();}private string datPath Path.Combine(AppDomain.CurrentDomain.BaseDirectory, qqzeng-ip-ultimate.dat);private DateTime lastRead DateTime.MinValue;private long[,] prefmap new long[256, 2];private uint[] endArr;private string[] addrArr;private byte[] data;/// summary/// 初始化二进制 qqzeng-ip-ultimate.dat 数据/// /summaryprivate void LoadDat(){data File.ReadAllBytes(datPath);for (int k 0; k 256; k){int i k * 8 4;int prefix k;long startIndex ReadLittleEndian32(data[i], data[i 1], data[i 2], data[i 3]);long endIndex ReadLittleEndian32(data[i 4], data[i 5], data[i 6], data[i 7]);prefmap[k, 0] startIndex; prefmap[k, 1] endIndex;}uint RecordSize ReadLittleEndian32(data[0], data[1], data[2], data[3]);endArr new uint[RecordSize];addrArr new string[RecordSize];for (int i 0; i RecordSize; i){long p 2052 (i * 8);uint endipnum ReadLittleEndian32(data[p], data[1 p], data[2 p], data[3 p]);int offset data[4 p] ((data[5 p]) 8) ((data[6 p]) 16);int length data[7 p];endArr[i] endipnum;addrArr[i] Encoding.UTF8.GetString(data, offset, length);}}private void Watch(){FileInfo fi new FileInfo(datPath);FileSystemWatcher watcher new FileSystemWatcher(fi.DirectoryName){IncludeSubdirectories false,NotifyFilter NotifyFilters.LastWrite,Filter qqzeng-ip-ultimate.dat,};watcher.Changed (s, e) {var lastWriteTime File.GetLastWriteTime(datPath);if (lastWriteTime lastRead){ //延时 解决 正由另一进程使用,因此该进程无法访问此文件Thread.Sleep(1000);LoadDat();lastRead lastWriteTime;}};watcher.EnableRaisingEvents true;}/// summary/// ip快速查询方法/// /summary/// param nameip1.1.1.1/param/// returns/returnspublic string Find(string ip){long val IpToInt(ip, out long pref);long low prefmap[pref, 0], high prefmap[pref, 1];long cur low high ? low : BinarySearch(low, high, val);return addrArr[cur];}// 二分逼近 O(logN)private long BinarySearch(long low, long high, long k){long M 0, mid 0;while (low high){mid (low high) / 2;uint endipnum endArr[mid];if (endipnum k){M mid;if (mid 0){break; //防止溢出}high mid - 1;}elselow mid 1;}return M;}private long IpToInt(string ipString, out long prefix){//高性能int end ipString.Length;unsafe{fixed (char* name ipString){int numberBase 10;char ch;long[] parts new long[4];long currentValue 0;int dotCount 0;int current 0;for (; current end; current){ch name[current];currentValue 0;numberBase 10;if (ch 0){numberBase 8;current;if (current end){ch name[current];if (ch x || ch X){numberBase 16;current;}}}for (; current end; current){ch name[current];int digitValue;if ((numberBase 10 || numberBase 16) 0 ch ch 9){digitValue ch - 0;}else if (numberBase 8 0 ch ch 7){digitValue ch - 0;}else if (numberBase 16 a ch ch f){digitValue ch 10 - a;}else if (numberBase 16 A ch ch F){digitValue ch 10 - A;}else{break;}currentValue (currentValue * numberBase) digitValue;}if (current end name[current] .){parts[dotCount] currentValue;dotCount;continue;}break;}parts[dotCount] currentValue;prefix parts[0];return (parts[0] 24) | ((parts[1] 0xff) 16) | ((parts[2] 0xff) 8) | (parts[3] 0xff);}}//简洁的 普通 //byte[] b IPAddress.Parse(ip).GetAddressBytes();//prefix b[0]; // return ReadBigEndian32(b[0], b[1], b[2], b[3]);}private uint ReadBigEndian32(byte a, byte b, byte c, byte d){return (uint)((a 24) | (b 16) | (c 8) | d);}private uint ReadLittleEndian32(byte a, byte b, byte c, byte d){return (uint)(a | (b 8) | (c 16) | (d 24));}}/*调用例子 string result IPSearch3Fast.Instance.Find(1.2.3.4);-- result亚洲|中国|香港|九龙|油尖旺|新世界电讯|810200|Hong Kong|HK|114.17495|22.327115*/   开发代码https://github.com/zengzhan/qqzeng-ip  转载于:https://www.cnblogs.com/zengxiangzhan/p/8816243.html
http://www.zqtcl.cn/news/549049/

相关文章:

  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名
  • 搭建网站的过程透明主题wordpress
  • 丰台网站建设公司电话深圳微信商城网站设计公司
  • 做淘宝要用的网站吗上海微信网站
  • 佛山高端网站制作公司wordpress 发送邮件插件
  • 类似站酷的设计类网站网站建设需要待摊吗
  • 用php做视频网站在学做网站还不知道买什么好
  • wordpress培训类网站网站建设 好
  • 网站开发需要2个月吗网站建设案例精粹
  • 网站建设项目职责营销型网站建设五大内容
  • 建设工程监理招标网站W做网站
  • 网站建设与维护教学课件网站上线前做环境部署
  • 信誉好的网站建设做网站成为首富的外国人
  • 常州网站制作市场湖北省荆门市城乡建设网站
  • 泉州网站制作运营商专业北京软件公司招聘信息查询
  • 车床加工东莞网站建设网站建设教学改进
  • 深圳专业做网站建设西安网站建设有限公司
  • wordpress 一键建站wordpress子主题style
  • 昆明设计网站怎么做网络广告
  • 2018什么做网站深圳企业网站设
  • 北京旅游外贸网站建设博客集成wordpress
  • 中国最好的建设网站哪些网站教你做系统
  • 自己做网站别人怎么看见网站建设办公
  • 凡科做网站视频网站哪家好
  • 查询网站是否正规营销策略国内外文献综述
  • 做网页用的网站wordpress用户角色权限管理