反向查找区域域079187874668

查看: 1719|回复: 3
阅读权限1UID633678函数0 关最后登录经验16 点在线时间6 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币12 个积分16精华0帖子日志注册时间
幼儿园小班, 积分 16, 距离下一级还需 84 积分
金币12 个积分16帖子
本帖最后由 xiangyunyao 于
16:04 编辑
如何对照基础表区域内容,根据姓名来确定状态表中人员的入职、转正、离职月份
15:34 上传
点击文件名下载附件
10.95 KB, 下载次数: 29
阅读权限20UID512605函数2 关最后登录经验9239 点在线时间588 小时VBA0 关分享记录好友技巧0 关相册主题段位3 段金币6165 个积分9244精华0帖子日志注册时间
硕士研究生, 积分 9244, 距离下一级还需 2756 积分
金币6165 个积分9244帖子
B3=IFERROR(INDEX(基础!$B$2:$M$2,1,MATCH(状态!B$1,OFFSET(基础!$B$2:$M$2,MATCH(状态!$A3,基础!$A$3:$A$102,0),),0)),&&)
15:59 上传
点击文件名下载附件
14.02 KB, 下载次数: 39
阅读权限1UID633678函数0 关最后登录经验16 点在线时间6 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币12 个积分16精华0帖子日志注册时间
幼儿园小班, 积分 16, 距离下一级还需 84 积分
金币12 个积分16帖子
太感谢了 真是神速啊!
阅读权限14UID496245函数1 关最后登录经验4694 点在线时间1072 小时VBA0 关分享记录好友技巧0 关相册主题段位3 段金币1864 个积分4694精华0帖子日志注册时间
[20140函中]E03:十五的月亮
高中2年级, 积分 4694, 距离下一级还需 6 积分
金币1864 个积分4694帖子
xiangyunyao 发表于
太感谢了 真是神速啊!
只感谢,给果果设最佳
[20140函中]E03:十五的月亮
Powered by访问本页面,您的浏览器需要支持JavaScript访问本页面,您的浏览器需要支持JavaScriptexcel 怎么查找某一区域的对象_百度知道
excel 怎么查找某一区域的对象
在EXE文件中的上头中选中:编辑,然后在编辑里选中查找,在查找中输入要找的内容就可以了。
对象是指图片、艺术字之类的
点出查找后在查找的格式中选定,要查找的格式。选中图片格式就可以
采纳率100%
其他类似问题
为您推荐:
您可能关注的推广回答者:
excel的相关知识
其他1条回答
先把区域选好,然后要菜单栏里找到,编辑——查找——输入查找的内容就可以了
对象是指图片、艺术字之类的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前访客身份:游客 [
每天进步一点点,持之以恒,坚持不懈的学习!
:我想请问import org.noo.pagination.page这是一个...
:引用来自“codinglabs”的评论 "大体想法是把ip区...
:引用来自“linjie_org”的评论在newFileUpload和...
:引用来自“linjie_org”的评论Failed to execute...
:引用来自“soyabean”的评论取消上传的功能代码好...
:Failed to execute goal on project fileupload....
:在newFileUpload和resolveMultipart 两个方法中,...
:你好,想请问你一下,计算处理器的让步式上下文切...
:"大体想法是把ip区域记录(大概40多万条),在系...
今日访问:0
昨日访问:56
本周访问:190
本月访问:805
所有访问:12822
大批量IP查询和IP区域快速查询
发表于2年前( 15:56)&&
阅读(384)&|&评论()
0人收藏此文章,
快速IP区域查询,确定来访用户所在区域
& & 相信做互联网开发的很多人都有一个需求,那就是获取用户的ip,并定位用户访问是哪个省哪个市的。从这个需求来看,首先需要有ip数据库,其次对于某些查不到的ip还能够定期更新ip数据库到最新的,最后就是能快速查询。
& & 1、ip数据库网上都有,我这里也有一个,是从淘宝数据库更新来的,稍后提供mysql版本的数据库脚本下载。
& & 2、ip更新有几个网站,我用的是淘宝提供的,通过定时任务,去查询这些没有查询到ip区域的ip信息。 & &&
& & & & &/service/getIpInfo.php?ip=, 通过解析返回的数据,获取要查询ip区域信息,然后存入数据库。
& & 3、对于快速查询,有些人说数据库建立索引不就解决了查询问题。可是当一天的数据量有千万级别记录增加的时候,这么多次的ip区域查询必定会给数据库带来很大压力,有一位数据库优化的牛人说过,最好的优化办法就是减少数据库访问。
& & &所有源码和初始化数据文件可在github上找到:/wuskyfantasy/ip.query
& & &先看看数据库区域的表设计:
CREATE&TABLE&`ip_area_dictionary`&(
&&`id`&bigint(11)&NOT&NULL&AUTO_INCREMENT&COMMENT&'主键',
&&`from`&varchar(16)&NOT&NULL&COMMENT&'起始IP',
&&`to`&varchar(16)&NOT&NULL&COMMENT&'结束IP',
&&`country`&varchar(30)&NOT&NULL&COMMENT&'国家',
&&`area`&varchar(50)&NOT&NULL&COMMENT&'区域',
&&`created_at`&timestamp&NOT&NULL&DEFAULT&CURRENT_TIMESTAMP&COMMENT&'创建日期',
&&`updated_at`&timestamp&NULL&DEFAULT&NULL&COMMENT&'更新日期',
&&`area_id`&bigint(20)&DEFAULT&NULL&COMMENT&'区域ID',
&&`from_number`&bigint(20)&DEFAULT&NULL&COMMENT&'ip起始整数',
&&`to_number`&bigint(20)&DEFAULT&NULL&COMMENT&'ip结束整数',
&&PRIMARY&KEY&(`id`),
&&KEY&`idx_from`&(`from`),
&&KEY&`idx_to`&(`to`),
&&KEY&`idx_from_to`&(`from`,`to`)&USING&BTREE,
&&KEY&`idx_from_to_number`&(`from_number`,`to_number`)&USING&BTREE
)&ENGINE=InnoDB&&DEFAULT&CHARSET=utf8;
& & 索引idx_from,idx_to,idx_from_to是在直接使用ip来进行查询时使用的,也就是我最初使用的查询方法,现在ip转换为整数后,直接使用索引idx_from_to_number,这3个索引可以去除了:
&&KEY&`idx_from`&(`from`),
&&KEY&`idx_to`&(`to`),
&&KEY&`idx_from_to`&(`from`,`to`)&USING&BTREE,
& & 查询出来的数据截图:
& & 要知道专门去查询ip在哪一个段之内比较麻烦,所以就可以把IP转成一个长整数,如此某一个区域的IP范围就是在两个长整数之间了,通过这种方式建立索引查询较快。
& & 转换IP为长整数的工具类:,调用setIP(ip)就可以把ip转换成长整数了。
& & 这样对from_bumber和to_number建立索引,数据库查询就比较快了。但正如前面所说,我们不满足于这点速度。
& & &4、改进访问mysql查询的办法就是使用缓存,我这里使用memcache+本地缓存。一般情况下,对于一些耗时的查询,会使用分布式缓存,如memcache、redis等,下次查询时即可直接使用分布式缓存。但是由于用户访问的ip变化太大,命中的概率较低,因此这里不适用,转而采取memcache+本地缓存。
& & & & & 大体想法是把ip区域记录(大概40多万条),在系统启动时加载到一个集合中(如List),然后把这个集合放到memcache(都已经读取出来了,为何要放到memcache,原因是有很多项目都会用到这个ip区域集合,第一次读取数据库后把ip集合放到memcache,后续访问memcache来获取这个集合将比访问mysql获取更快),并把读取的这个集合放到本地内存。
& & & & & &读取ip集合记录的代码是:,需要设置在系统启动时运行这个类的加载方法。
& & & & & &把读取的ip集合放到本地内存,就是把这个大集合List放到map中,便于下次获取。
设置本地缓存的方法:,调用setCache即可设置。总结起来,访问速度对比: 本地缓存 & 分布式缓存 & 数据库。
& & & & & &有了这个集合后,该怎么去查询呢,以前直接查询数据库索引就可以了,现在给这么大的集合,该怎么去查询呢。简单来说,就是你怎么去40多万记录中的某一条,办法就是使用二分查找法,为了能够适应二分查找法,查询出来的ip区域记录需要进行排序,并且进行了简化,简化后是这样的:
private&Long&
private&Long&f;//&IP段开始&原始字段from_number
private&Long&t;//&IP段结束&原始字段to_number
private&Long&a_//&区域ID&area_id
这里之所以对字段名称进行简化,是因为在存放到memcache中时,这些属性名称和类路径也会序列化,这会带来很大的内存开销,并且这个类()的类路径也缩短了,道理和简化属性名称一样。
& & & &如此的话,在数据库查询记录的时候,就按from_number进行排序,这样就可以满足二分查找时记录是排序的要求了。有人怀疑这样做一定会比访问mysql快么,毕竟mysql有索引啊。我认为首先mysql的连接耗时就较大(单词访问耗时少,可千万级别的访问对数据库造成的压力会导致耗时剧增),另外mysql索引也是使用类似的算法查找记录的。
& & & 二分查找ip区域记录的源码:
& & & 如此做可大量减少访问mysql,坏处是有这么一个大对象一直存在,不过占用不了多少内存,相比带来的好处是值得尝试的。
& & &ip数据库脚本下载地址:/s/1dDsuL01,初始化脚本
& & &没有提供具体的ip记录表,是因为已经没有使用的意义,只需要ip区域记录表和区域信息表即可。
& & &有任何想法或者意见欢迎拍砖,也欢迎分享自己的新的,哪怕是一个小的改进点也可以,说不定你的分享可以减少别人很多的工作。&
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读}

我要回帖

更多关于 反向查找区域 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信