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

网站建设汇报评估wordpress调二级分类目录

网站建设汇报评估,wordpress调二级分类目录,成都纯手工seo,泰安有什么好的网络科技公司上篇博文中已经谈到#xff0c;有两个流程没有讲到。一个是MetaTableAccessor.getRegionLocations#xff0c;另外一个是ConnectionImplementation.cacheLocation。这一节#xff0c;就让我们单独来介绍这两个流程。首先让我们来到MetaTableAccessor.getRegionLocations。1.… 上篇博文中已经谈到有两个流程没有讲到。一个是MetaTableAccessor.getRegionLocations另外一个是ConnectionImplementation.cacheLocation。这一节就让我们单独来介绍这两个流程。 首先让我们来到MetaTableAccessor.getRegionLocations。 1.调用MetaTableAccessor.getRegionInfo获取返回结果集中指定的列信息(info:regioninfo)的值。在这个方法的调用过程中有一个知识点需要大家关注——Result.binarySearch。我将放在后面讲解。 2.然后调用了Result.getNoVersionMap。在这里完成了对返回结果集的含version版本信息的封装与不含version版本信息的封装同样我将放在后面讲解。 首先让我们来到Result.binarySearch。大家可以看到这里使用的kvs[0]的rowKey然后使用了传入的family(info)与qualifier(regioninfo)。大家可能比较迷惑为什么这里的逻辑是这样的。原因很简单因为这里传入的Cell数组的rowKey都是一样的要利用Arrays.binarySearch搜索指定family:qualifier。因此首先使用这些信息构造了一个封装了以上信息的FirstOnRowColCell。这里需要注意的是新建的cell.getTimestamp返回值为HConstants.LATEST_TIMESTAMP Long.MAX_VALUE。这里大家可能会对Arrays.binarySearch的返回值比较新奇为什么结果是负值包括后面为什么有表达式(pos (pos1) * -1)。大家感兴趣的可以追一下源码我只简单说一下结论。在调用Arrays.binarySearch方法时如果所要搜索的数组中包含键则返回键在该数组的位置然而如果数组中不包含键那么就返回-(insertion point) - 1。这里的insertion point就是该数组中第一个元素大于键的索引位置(the index of the first element greater than the key)。如果大家还是不懂在网上搜一下就明白了我在这里就不详述了。后面通过表达式(pos (pos1) * -1)也就获取的Arrays.binarySearch后的insertion point。看到这里大家可能还有点迷惑不过相信我在介绍完CellComparatorImpl后大家可能就恍然大悟了。 接下来让我们来到CellComparatorImpl.compare方法。这里主要调用了compareRows与compareWithoutRow。compareRows比较简单就是比较传入Cell的rowKey。真正重要的是compareWithoutRow。 接下来让我们来到CellComparatorImpl.compareWithoutRow方法。这里比较容易误会的是compareTimestamps。 接下来让我们来到CellComparatorImpl.compareTimestamps。正如截图中注释所说交换顺序以实现将相同的family:qualifier按照时间戳的降序来排列(family与qualifier都是按照升序来排列的)。看到这里相信大家就能够明白为什么构建的Cell时间戳为Long.MAX_VALUE。 不过我还是在这里再简单介绍一下。上面我已经提到Arrays.binarySearch中insertion point是该数组中第一个元素大于键的索引位置(the index of the first element greater than the key)。假如如果说这里的CellComparatorImpl.compareTimestamps为升序排列那么上面构造的key的insertion point为数组中相同family:qualifier的index 1。而这里改为降序之后构造的key的insertion point为数组中相同family:qualifier的index。而这个结果正是我们需要的。 到这里大家可能就明白了Result.getColumnLatestCell方法的含义——获取指定family:qualifier中时间戳最接近Long.MAX_VALUE的cell。 接下来我插入一个知识点——Result.getMap与Result.getNoVersionMap。这里获取的是含version信息的列。通过其中的versionMap.put方法我们就可以知道这里将不同version的value值保存在map中了。 然后来到Result.getNoVersionMap。在这里获取的是不含version的列。由于上面在构造versionMap时传入的Comparator为倒序排序因此这里通过qualifierEntry.getValue().firstKey()获得的是最新版本的value。 接下来让我们来到本节中另外一个也是最后一个重要的方法ConnectionImplementation.cacheLocation。由于其主要调用了MetaCache.getCachedLocation因此我在这里贴出MetaCache.getCachedLocation源码如下图所示。其中比较重要的方法是MetaCache.getTableLocations。 接下来让我们来到MetaCache.getTableLocations如下图所示。如果看过我的上篇博文《HBase之Table.put客户端流程》大家可能知道我埋了一个伏笔也就是这里的最后一个入参。上一篇中的与这里的入参类型不同但是方法的调用流程是一样的我就在这里详细讲解。 上图中最后一个入参是java.util.function.Supplier。如下图所示。 上图中的最后一个入参类型是Runnable。看到这里大家可能就明白了。如果在MetaCache.cachedRegionLocations中并没有相应的key,value对那么就会调用supplier.get方法也就是getTableLocations的最后一个入参重新构建一个CopyOnWriteArrayMap并且将内部的比较器设置为Bytes.BYTES_COMPARATOR。然后将其放到MetaCache.cachedRegionLocations。 到此为止完整的《HBase之Table.put客户端流程》就结束了。大家如果有什么疑问或者大数据相关的问题可以发送至我的邮箱15935152719163. com。 从下一节起也就是本周末我将为大家带来HBase的第二章内容——Hbase之Client协议。届时Client协议中的服务端与客户端的完整流程将为大家一一奉上。如果比较关注其中的内容可以关注我或者成为我的粉丝都是就可以及时收到更新啦。 转载于:https://www.cnblogs.com/letsfly/p/10067904.html
http://www.pierceye.com/news/988708/

相关文章:

  • 怎么自己开发app软件无锡网站推广优化公司哪家好
  • 做网站原型的简单工具深圳网站建设美橙互联
  • 免费关键词挖掘网站wordpress发多少文章卡
  • html网站建设的步骤wordpress 自定义变量
  • 网站建设的意见建站公司有哪些服务
  • 广东美景园林建设有限公司网站陕西网络公司网站建设
  • 网站关键词怎么填写南昌网站建设一般多少钱一年
  • 公司网站制作费用无区域公司注册要求
  • 网站文章更新时间去国外做外卖网站好
  • 北京网站制作设计wordpress seo 介绍
  • 手机网站搭建平台怎么查网站域名备案
  • 用文件传输协议登录网站网站开发设计手册
  • 有什么兼职做it的网站网络推广怎么做才有效
  • 网站后台开发教程沈阳网站制作流程
  • 可以自己做课程的网站深圳小型网站建设
  • 静安做网站公司网站上线的通知
  • 怎么建设电影网站wordpress 附件上传插件下载
  • 网站导航内链建设企业网站设计方式有哪些
  • 手表网站建站千秋网络是家西安做网站的公司
  • 济南企业网站百度seo优化是做什么的
  • 网站颜色搭配案例wordpress洛米主题
  • 网站几个关键词网站备案为什么要关闭
  • 深圳网站制作哪家便宜怎么利用百度云盘做网站
  • 美容培训东莞网站建设做的网站上更改内容改怎么回事
  • 绵阳新农网的网站是哪个公司做的wordpress 在线教育主题
  • 大连优化网站怎样制作企业的网站
  • 网站建设邀请函北京网站优化 卓立海创
  • 公司后台的网站代理维护更新商贸有限公司注销流程
  • 网站建设工作动态wordpress次元主题
  • 手机网站源码asp网站快速排名技巧