您现在的位置:首页
--> 阿里巴巴中间件
主要对一般docId为下标对应域值的结构做了改造,如果大家有更好的建议,欢迎大家提议和拍砖。 主要思路: 生成一个下标为 域 Term 遍历的Postion 且值为域值的数组: A[p]=field value 因为域值并不会像docId一样为唯一键递增,所以在创建的时候 初始化: Int [] A = new Int[reader.maxDoc()] 结束的时候如果 p
• 关于两种限流模式
流量预警和限流方案中,比较常用的有两种。第一种滑窗模式,通过统计多个单元时间的访问次数来进行控制,当单位时间的访问次数达到的某个峰值时进行限流。第二种为响应模式,通过控制当前活跃请求数,来进行流量控制。下面来简单分析下两种的优缺点。
学玩*nux时候,碰到的一些问题,弄明白了后也就过去了。今天看到旁边的同学对目录权限有些模糊,给解释了一下。想想不如把这些问题都记下来。 设计其实包含的是一套约定。能运行、解决问题的约定都是可用的约定。但解决的多种约定方式或说是设计中,作一些比较可以感觉到哪个会更统一更简单。
MinHash首先它是一种基于 Jaccard Index 相似度的算法,也是一种LSH的降维的方法,应用于大数据集的相似度检索、推荐系统。下边按我的理解介绍下MinHash。 举例A,B 两个集合: A = {s1, s3, s6, s8, s9} B = {s3, s4, s7, s8, s10} 根据Jaccard Index公式,A,B的相似度 S(A,B) = |A∩B|/|A∪B| = 2/8 = 0.25, 用图表示如下: 当然直接计算两个集合的交集与并集,是很耗计算资源的,特别是在海量数据场景下不可行。 假如,我们随机从两个集合中各挑选一个元素s(A)、s(B),刚好这两个无素相同的概率是多少呢?
情况回放: 上周预发机器出了一个问题,CPU不定时会近100%满负载运行。重启以后就会恢复,之后又会到达100%,而且不会自恢复。 首先想到的是程序出现了死循环,于是用jstack把栈打印出来,发现业务线程都停在了regex相关的代码上,有死循环的样子。 查看栈,发现一切都是由ClientFilter这个类开始,其使用了matcher.matches()方法。这样一来,就很可能是由于输入了不规范的正则导致的了。
弱依赖“并发请求数阀值”这个值设置多少合适? “并发请求数阀值”在大部分情况下可以理解为同时工作的线程数阀值,这个值不是越大越好,也不是越小越好,而是在最高QPS输出的情况下这个值越小越好。这个也是系统性能优化的一个方向,高QPS,少线程。
任何强依赖都要尽可能的转化成弱依赖,因为强依赖本身意味着一荣俱荣,一损俱损。老婆管账,但是老公又没有私房钱,对老公来说强依赖于老婆,也许是很幸福的事情。在系统角度来说这并不是好事情,比如支付系统强依赖银行的支付,一旦银行支付出现问题,那么只能干等着。所以需要尽量的扩展银行的支付通道,让单个节点影响到最小。
本文以ZooKeeper3.4.3版本的官方指南为基础,补充一些作者运维实践中的要点,围绕ZK的部署和运维两个方面讲一些管理员需要知道的东西。
• 垂直搜索新问题
当大家都在关注搜索的速度的时候,往往伴随业务的快速发展,数据服务质量成为了实时搜索或者垂直搜索中的新问题。实时搜索和垂直搜索是不一样的问题,下面的问题就是垂直场景下得实时搜索问题。也可以理解垂直搜索都不实时,其他的实时先排队吧。问题比较抽象,只谈总体上的现象,对于具体如何解绝问题的细节,不做说明。有些不具有通用性,有些和场景相关,很难有最佳方式,不代表没有解决方法。首先是有问题意识,然后自然有解决方法。 问题: (1)个性化排序 伴随业务发展需要,同时细分用户群体,为了最大程度优化服务质量、满足更大群体的具体业务场景,个性化的排序越来越引起高度重视。传统的文本相关性只是第一维的参考,针对业务多维度综合得分的二维排序最终影响排序。而一个平台上面临的服务群体、服务场景多种多样,有行业属性、地域属性、技术属性、运营属性等,很难完全统一,完全归一化到一个计算公式中去。
老话题了,不过经典代码分析总是能学到很多东西。
人们总觉得这个搜索领域很多秘密,门槛如此之高,如此神秘。其实不是那么回事。基本的原理、流程理解了。就可以做到心中不慌。先了解机制,细节和具体才是难点,不要被难在开始!下面就结合实际经验积累,给出参考信息。不针对任何排序模型,只描述粗略内容。具体场景具体怎么高,私下交流。 提示:排序规则务必公开,否则会有非常多的诟病、诟骂。不要以为你的排序是机密, 包括自己的开发成员都含糊其辞的,这样只会增加排序的神秘性、恶意去钻空子等。 完全公开排序细则,明确排序导向什么、打击什么,只是一些得分因子、权重需要慎重, 是否全面公开,而排序算法是完全可以公开的。即使不公开,一帮外面的专业seo 很快就找到规律的,那时候就非常被动了。
最早是10年听baidu的一位老师讲信息检索课程,那一次对离散数学中的“二部图”的使用场景,有了一个真真切切的认识。然后这个概念一直伴随着自己,到现在,并且在不同场所的听课中,去询问个一些讲师,貌似都很“吃惊”“不清楚”“没有做过”。我才知道这就是技术的差距。 应用中,二部图就是语义推荐使用,系统是搜索引擎,数据是二部图结构,参数是“全部海归的7-8个博士、顶级专业人才”。。。。然后带着当时的疑惑,来到这里,四处打听相关技术,然后慢慢理解了,“曾经这是一家运营公司”“曾经这是一家数据库公司” “曾经这家公司都不怎么用技术的”。。。。 自语语言学+领域学知识+社会学知识构成了“有效推荐”的三大基石。 自语语言初级:分词、词性标注 中级:本体、语料 高级:领域、主体的关联和聚合 领域学:领域热点、核心、焦点价值、商业模式 社会学:用户行为、思考、互动等。
Worker模式 想解决的问题 异步执行一些任务,有返回或无返回结果 使用动机 有些时候想执行一些异步任务,如异步网络通信、daemon任务,但又不想去管理这任务的生命周。这个时候可以使用Worker模式,它会帮您管理与执行任务,并能非常方便地获取结果 结构 很多人可能为觉得这与executor很像,但executor是多线程的,它的作用更像是一个规划中心。而Worker则只是个搬运工,它自己本身只有一个线程的。每个worker有自己的任务处理逻辑,为了实现这个目的,有两种方式 1. 建立一个抽象的AbstractWorker,不同逻辑的worker对其进行不同的实现; 2. 对worker新增一个TaskProcessor不同的任务传入不同的processor即可。 第二种方式worker的角色可以很方便地改变,而且可以随时更换processor,可以理解成可”刷机”的worker
单维度聚合分析,主要解决类似以下场景的问题 (1)同一个用户搜索输入关键词 (2)某个时间段内搜索词排行榜 (3)某些关键词联合出现情况 (4)IP\\位置 维度下的关键词聚合情况 (5)其他任何参与搜索的单维度搜索请求统计 (6)平均命中率、hits=0、查询平均响应时间 ...... (7)新词发现(8)输入提示 目录 1 单维度聚合分析 1.1 为什么选择搜索引擎 1.2 单维度聚合分析意义 1.3 陷阱 2 单维度聚合关键问题 2.1 维度的选择 2.2 格式化 3 单维度聚合实现样例 单维度聚合分析 为什么选择搜索引擎 单维度聚合分析应该是各种分析统计中最为简单、直接。 对于主动搜索、被动搜索一体的应用场景,有登录和无登陆等统一兼顾。并且提供接口服务,按需返回维度信息,并且可以复用。 无疑采取搜索引擎,依赖搜索引擎的facet统计功能,最为直接、快捷、有效、低沉本。
通过本文,您即可以: 1. 存储器硬件结构; 2.分段以及对应的组织方式; 3.分页以及对应的组织方式。
• 树与存储
二叉树: 一个根节点,每个节点下挂着最多2个子节点。、 概念: 度:结点的分支数,二叉树度为2。 深度:树的层次。 二叉排序树: 二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。 应用场景: 基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾斜,可以想到数字写入顺序如果不是50-20-60-18-55,而是18-20-50-55-60,那么二叉树就会退变为链表。 B-树: B-树每个节点上包含着数据和指针,每个指针指向其一个子节点的位置,并且数据的个数为指针的2d-1个。这里的d是指针的个数,同时也是树的“度”。 B-树的查找需要一次对每个节点进行二分查找,直至找到或返回null。通常,可以引入布朗过滤器等方式加速查找。 B-树的写入、删除时要进行分裂、合并、转移等操作,越是非顺序的插入就越容易碰到这些高性能消耗的操作。
(H2与HBase)面向行or面向列的存储模型? 目录 0. 示例 1. H2怎么存储pet表的记录? 1. 1 DATA_LEAF页格式 1. 2 DATA_NODE页格式 2. HBase怎么存储pet表的记录? 2. 1 Data Block格式 2. 2 Data Block如何存下面这些记录? 2. 3 leaf索引块的格式: 2. 4 root索引块的格式: 2. 5 IntermediateLevel索引块
最早lucene2.4以及以前,追溯到2008年前后,lucene刚刚引起大家的关注,到后来Nutch 、solr的出现,lucene变得更加热。Nutch、Solr的发展,极大推动了lucene的升级。 对于一些接触过搜索,使用过lucene、solr的人来说,一般都会感觉lucene、solr很牛逼。我个人也认为solr、lucene确实非常NB,他涵盖了信息检索的几乎全部基础知识和非常高性能的实现方式。从solr的结构,扩展、维护整体看,发现有非常多的“工程亮点”,熟读solr定会增加对java的理解、运用技能。 但是,其实lucene solr有其自身的一些局限性,而这些局限性在大数据量的时候显得更为明显。
受害人口述悲惨的遭遇—— 1、最近一段时间(更换了预发机器后)我负责的一个应用的预发环境(线上稳定得像个婴儿~)特别不稳定,最先是应用频频的过几天就发现提供的接口不工作了,但容器Jetty还在跑得欢,于是jstack/jmap看,发现没有一个线程在跑我的war包中的程序,但是容器里个中间件的sar还跑得很欢(-_-|||),dump出来的对象也没有一点蛛丝马迹,所有日志到04:03就什么也没有了。然后查发现一个中间件的sar(远程接口层)包刚好在那个时候升级了,这玩意用OSGI的CloassLoader来加载整个应用,自然就怀疑它怎么着把我的Class都卸载掉了。简单,回滚到前一版本试试。 2、诡异的第二天还是4:03分,又发作了!排除了新sar的原因,就百思不和其解了,发现-XX:+CMSClassUnloadingEnabled开着,关掉。第二天还是一样!
希望能够给希望尝试Spark的朋友,带来一些帮助。目前的版本是0.5.0 Spark开发指南 从高的层面来看,其实每一个Spark的应用,都是一个Driver类,通过运行用户定义的main函数,在集群上执行各种并发操作和计算 Spark提供的最主要的抽象,是一个弹性分布式数据集(RDD),它是一种特殊集合,可以分布在集群的节点上,以函数式编程操作集合的方式,进行各种各样的并发操作。它可以由hdfs上的一个文件创建而来,或者是Driver程序中,从一个已经存在的集合转换而来。用户可以将数据集缓存在内存中,让它被有效的重用,进行并发操作。最后,分布式数据集可以自动的从结点失败中恢复,再次进行计算。
近3天十大热文
- [46] 界面设计速成
- [40] 视觉调整-设计师 vs. 逻辑
- [40] Oracle MTS模式下 进程地址与会话信
- [38] IOS安全–浅谈关于IOS加固的几种方法
- [37] android 开发入门
- [36] 如何拿下简短的域名
- [36] 程序员技术练级攻略
- [35] 【社会化设计】自我(self)部分――欢迎区
- [35] 图书馆的世界纪录
- [32] 读书笔记-壹百度:百度十年千倍的29条法则
赞助商广告