海量数据处理方法与分析(1/3)
1.bloom filter
适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集
基本原理及要点:
对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting bloom filter,用一个counter数组代替位数组,就可以支持删除了。
还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于e的情况下,m 至少要等于n*lg(1/e)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1 /e)*lge 大概就是nlg(1/e)1.44倍(lg表示以2为底的对数)。
举个例子我们假设错误率为0.01,则此时m应大概 是n的13倍。这样k大概是8个。
注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。通常单个元素的长度都是有很多bit的。所以使用bloom filter内存上通常都是节省的。
扩展:
bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。counting bloom filter(cbf)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。spectral bloom filter(sbf)将其与集合元素的出现次数关联。sbf采用counter中的最小值来近似表示元素的出现频率。
问题实例:给你 a,b两个文件,各存放50亿条url,每条url占用64字节,内存限制是4g,让你找出a,b文件共同的url。如果是三个乃至n个文件呢?
根据这个问题我们来计算下内存的占用,4g=2^32大概是40亿*8大概是340亿,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换成ip,则大大简单了。
2.hashing
适用范围:快速查找,删除的基本数据结构,通常需要总数据量可以放入内存
基本原理及要点:
hash函数选 择,针对字符串,整数,排列,具体相应的hash方法。
碰撞处理,一种是open hashing,也称为拉链法;另一种就是closed hashing,也称开地址法,opened addressing。
扩展:
d-left hashing中的d是多个的意思,我们先简化这个问题,看一看2-left hashing。2-left hashing指的是将一个哈希表分成长度相等的两半,分别叫做t1和t2,给t1和t2分别配备一个哈希函数,h1和h2。在存储一个新的key时,同时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。这时需要检查t1中的h1[key]位置和t2中的h2[key]位置,哪一个位置已经存储的(有碰撞的)key比较多,然后将新key存储在负载少的位置。如果两边一样多,比如两个位置都为空或者都存储了一个key,就把新key 存储在左边的t1子表中,2-left也由此而来。在查找一个key时,必须进行两次hash,同时查找两个位置。
问题 | 浏览器 | demo | 解决方法 | |
---|---|---|---|---|
1 | input[button | submit] 不能用 margin:0 auto; 居中 | ie8 | bug | fixed | 为input添加width |
2 | body{overflow:hidden;}没有去掉滚动条 | ie6/7 | bug | fixed | 设置html{overflow:hidden;} |
3 | haslayout的标签拥有高度 | ie6/7 | bug | fixed | *height:0; _overflow:hidden; |
4 | form>[haslayout]元素有margin-left时,子元素中的[input | textarea] 出现2×margin-left | ie6/7 | bug | fixed | form > [haslayout 元素]{margin-left:宽度;} form div{*margin-left:宽度÷2;} |
5 | 当border-width有1条<边3条时被设置成dotted时,1px的边dotted显示成dashed | ie7 | bug | fixed | 不在同一个元素上使用不同宽度的 dotted |
6 | 当子元素有position:relative的时候,父元素设置overflow:[hidden|auto]相当于给子元素设置了position:visible; | ie6/7 | bug | fixed | 给父元素设置position:relative; |
7 | :hover伪类不能改变有position:absolute的子级元素的left/top值 | ie7 | bug | fixed | 把top/left的值设置成除0%外的所有百分值;或添加一个margin-[所有方向]除0外的所有值,包括0% |
8 | :focus + selector {} 选择器失效 | ie8 | bug | fixed | 在失效选择器后面添加一个空选择器, :focus{} |
9 | 列表中混乱的浮动:在list中浮动图片时,图片出现溢出正常位置;或没有list-style | ie8 | bug | fixed | 用背景图片替换list-style |
10 | th 不会自动继承上级元素的 text-align | ie8 | bug | fixed | 给th添加text-align:inherit; |
11 | 样式(包括link/style/@import(link)) 最多允许个为是:32 | ie6-8 | ─ 常识 | 99.99%的情况下,不会遇到 |
12 | :hover 时若background-color为#fff, 失效 | ie7 | bug | fixed | 把background-color改成background。或者,非#fff || #ffffff |
13 | 忽略’>’后有注释的选择器:selector> /**/ selector{} | ie7 | bug | fixed | 官方demo有误 |
14 | * html | ie6 | ─ hack | 只对ie6有效 |
15 | png图片中的颜色和背景颜色的值相同,但显示不同 | ie6-7 | bug | fixed | 利用 pngcrush 去除图片中的 gamma profiles |
16 | margin:0 auto; 不能让block元素水平居中 | ie6-8 | bug | fixed | 给block元素添加一个width |
17 | 使用伪类 :first-line | :first-letter, 属性的值中出现!important 会使属性失效 | ie8 | bug | fixed | !important is evil, don’t use it anymore |
18 | :first-letter 失效 | ie6 | bug | fixed | 把 :first-letter 移到离{}最近的地方,如 h1, p:first-letter{},而非 p:first-letter h1{} |
19 | position:absolute元素中,a display:block, 在非:hover时只有文本可点击 | ie6/7 | bug | fixed | 给a添加background, 如果背景透明,使用background:url(‘任何页面中已经缓存的文件链接’),不推荐background:url(#)[官方的解决方法],因为会增加一下http请求 |
20 | float列表元素不水平对齐:li不设置float,a设置display:block;float:[方向],li不水平对齐 | ie6/7 | bug | fixed | 给li设置display:inline 或 float:[方向] |
21 | dt, dd, li 背景失效 | ie6 | bug | fixed | dt, dd, li{position:relative;} |
22 | <noscript />元素的样式在启用网页特效的情况下显示了样式 | ie6-8 | bug | fixed | 利用js给<noscript />添加display:none; |
23 | 使用filter处理的透明背景图片的透明部分不可点 | ie6-8 | bug | fixed | 把background:none变成background:url(‘链接’),链接到本身和图片之外的任何文件 |
24 | li内元素偏离 baseline 向下拉 | ie8 | bug | fixed | 给li设置display:inline 或 float:[方向] |
25 | 列表中li的list-style不显示 | ie6/7 | bug | fixed | 给li添加margin-left,留空间来显示(不要加在ul上) |
26 | 图片不能垂直居中 | ie6/7 | bug/fixed | 添加一个空标签,并赋给”layout”, 比如display:inline-block; |
27 | 不能自定义指针样式 | ie6-8 | bug | fixed | 给指针文件设置绝对路径 |
28 | 背景溢出,拖动滚动条后显示正常 | ie6 | bug | fixed | 给父元素添加overflow:hidden防止溢出,并赋予haslayout,如果添加_zoom:1; |
29 | 高度超过height定义的高 | ie6 | bug/fixed | 添加_overflow:hidden;(推荐)或者_font-size:0; |
30 | 宽度超过width定义的宽 | ie6 | bug/fixed | 添加_overflow:hidden; |
31 | 双倍边距 | ie6 | ─ 常识 | 添加display:inline到float元素中 |
32 | margin负值隐藏:haslayout的父元素内的非haslayout元素,使用负边距时,超出父元素部分不可见 | ie6/7 | bug/fixed | 去掉父元素的haslayout;或者赋haslayout给子元素,并添加position:relative; |
33 | 给两个浮动元素的某中一个的文字设定为斜体,另一个元素下拉在有斜体文字元素的下面 | ie6 | bug/fixed | 给有斜体文字的元素添加overflow:hidden; |
35 | 3px 间隔:在float元素后的元素,会有3px间隔 | ie6 | bug/fixed | 因为是确切的3px,所以,用“暴力破解”吧,比如_margin-left:-3px; |
35 | text-align 影响块级元素 | ie6/7 | bug/fixed | 整理你的float;或者分开设置text-align |
有些2003系统的iis按如上设置就是不行,下面的方法虽然可以,但返回的状态码却是200:
把消息内容设置成 url
url里填写 /404.htm
再把 404.htm 放在网站根目录下。
直接修改默认的404页面也是不行的。
原来是文件访问权限的问题,只要把404.htm设置成everyone可读 就行了
iis中404设置方法
打开iis管理器-->右击网站的属性-->点击自定义错误选项-->选中404-->选中并打开编辑属性-->设置成 url --> url 里填写"/www.111cn.net.html"-->此处在"消息类型"中一定要选择"文件"或"默认值",而不要选择"url",不然,将导致返回"200"状态码。-->确定退出把做好的err.html 页面上传到网站根目录
http404对seo教程的影响
自定义404错误页面对搜索引擎而言,这则是相当重要的。
当搜索引擎蜘蛛在请求某个url时得到"404′状态回应时,即知道该url已经失效,便不再索引该网页,并向数据中心反馈将该url表示的网页从索引数据库教程中删除,当然,删除过程有可能需要很长时间;而当搜索引擎得到"200′状态回应时,则会认为该url是有效的,便会去索引,并会将其收录到索引数据库,这样的结果便是这两个不同的url具有完全相同的内容:自定义404错误页面的内容,这会导致出现复制网页问题。对搜索引擎而言,特别是google,不但很难获得信任指数trustrank,也会大大降低google对网站质量的评定。(为什么会出现返回"200′状态码的情况??请参看下面内容"自定义404错误页面的基本原则")
提供几个404是否设计正确方法检测地址
http://seo.g2soft.net/online-tools/server_status_checker.php#result
http://www.ranknow.cn/tools/checkhttpcode404
internet信息服务(iis)无法删除的解决方法:
1、进入控制面板;
2、然后点击添加删除程序;
3、接着点击“添加/删除windows组件”;
4、点击“internet信息服务(iis)”,呈现蓝色显示;
5、接着点击下方的“详细信息”按钮,将会弹出“internet信息服务(iis)”菜单,显示里面有7个选项。从下到上先把最下面一个选项的勾去掉,接着点击下一步,然后就会自动删除本项目;重复上一步,依次把一个一个项目删除,则internet信息服务(iis)就彻底卸载完成了!
6、如果在删除以上的项目中仍出现无法删除的情况,则先进行以下的操作:
(1)删除%windir%system32inetsrv目录;
(2)删除%windir%iisx.log文件(x是iis版本);
(3)删除%windir%inetpub目录;
(4)以上3个操作可以在安全模式下进行,然后再进行以上第5步的操作。
一般情况下,重装iis的步骤为:
1、卸载iis;
2、删除%windir%system32inetsrv目录;
3、删除%windir%iisx.log文件(x是iis版本);
4、删除%windir%inetpub目录;
5、重装iis。
bind 9的配置方法
/etc/named.conf
options {
directory "/var/named";
};
# named.root is available at ftp://ftp.internic.net/domain/named.root
zone "." in {
type hint;
file "named.root";
};
# here is zone for domain ustrem.org
zone "ustrem.org" in {
type master;
file "ustrem.org";
allow-transfer { none; };
allow-update { none; };
};
# here is reverse zone zone for net 192.168.2.0/255.255.255.0
zone "2.168.192.in-addr.arpa" {
type master;
file "loc";
allow-update { none; };
};
----------------------------------------------------
here is ustrem.org's zone file
-----------------------------
/var/named/ustrem.org
$origin .
$ttl 86400 ; 1 day
ustrem.org in soa pns.ustrem.org. onzi.ustrem.org. (
# onzi.ustrem.org is email for contacts (onzi_at_ustrem_dot_org)
2006083102 ; serial
# this is stamp for date and time and number of day change
3600 ; refresh (8 hours)
1800 ; retry (4 hours)
86400 ; expire (5 weeks 6 days 16 hours)
3600 ; minimum (1 day)
)
ns pns.ustrem.org.
ns ns1.xname.org.
# ns records for domain
a 213.240.243.12
# this line shows "ustrem.org" is with ip 213.240.243.12
mx 10 mail.ustrem.org.
# here is smtp server which received mails for ustrem.org
txt "v=spf1 mx a:mail.b-trust.org a:mailrelay.bsbg.net -all"
# this is text record for prevent from spammers and spoofers. here is smtp-s which sends emails from ustrem.org
$origin ustrem.org.
* a 213.240.243.12
# some-does-not-described.ustrem.org is with ip 213.240.243.12
bobi a 213.240.227.125
pns a 213.240.243.12
*.bobi cname bobi.ustrem.org.
boiko a 84.238.128.65
george a 213.240.242.107
laptoper4e a 192.168.2.18
mitkosipc a 192.168.2.4
pi-server a 192.168.2.15
pz a 217.10.245.249
router a 192.168.2.24
----------------------------------------------------------------------------------
here is reverse resolv
---------------------------------------------
/var/named/loc
$origin .
$ttl 86400 ; 1 day
2.168.192.in-addr.arpa in soa pns.ustrem.org. onzi.ustrem.org. (
2006080302 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
ns pns.ustrem.org.
ns sns.ustrem.org.
$origin 2.168.192.in-addr.arpa.
4 ptr mitkosipc.ustrem.org.
18 ptr laptoper4e.ustrem.org.
15 ptr pi-server.ustrem.org.
24 ptr router.ustrem.org.
---------------------------------------------
this is enougt for bind9 to work.
now you can start and test it....
# dig ustrem.org @127.0.0.1
;; question section:
;ustrem.org. in a
;; answer section:
ustrem.org. 86400 in a 213.240.243.12
# dig ustrem.org @127.0.0.1 mx
;; question section:
;ustrem.org. in mx
;; answer section:
ustrem.org. 86400 in mx 10 mail.ustrem.org.
# dig -x 192.168.2.4 @127.0.0.1
;; question section:
;4.2.168.192.in-addr.arpa. in ptr
;; answer section:
4.2.168.192.in-addr.arpa. 86400 in ptr mitkosipc.ustrem.org.
相关文章
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
Antd-vue Table组件添加Click事件,实现点击某行数据教程
这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
- 这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- 这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21