介绍
bigtable是一个管理结构化数据的分布式存储系统,支持数千台机器和PB级的数据,被广泛用于google内部的产品和项目。 bigtable在许多方面与数据库相似,但有不同的接口层,不支持完整的关系数据模型,它提供一种简单的数据模型,支持客户端动态控制数据布局和格式,通过参数可以控制数据在内存或者磁盘。
数据模型
bigtable可以看作是一个稀疏的、分布式的、一致的和多维的有序map。map由row key,column key和时间戳来索引。 (row:string, column:string, time:int64) -> string
例如上图所示,需要保存web pages的相关信息,将这个table称作Webtable。在Webtable中,使用url作为row key,web pages的不同层作为column name,contents列保存page的文本,timestamp列保存它们被fetch的时间。
rows
row key可以是任意的字符串,无论一行有多少不同的column,单行key下的读写都是原子的。Bigtable以row key维护字典序,一个table通过row range划分不同的partitions,每个row range称作tablet,tablet是个很重要的概念,它是分布式和负载均衡的基本单元。客户端可以利用这个特性选择它们的row key,在访问时获得更好的局部性。
column families
多个column keys可以组合在一起叫作column family,形成访问控制的基本单元。通常相同类型的列被放在同一cf中(相同cf的数据是一起压缩的)。内存和磁盘上的访问控制都是column family级别的。
timestamps
bigtable中相同的数据是有多版本的,通过timestamp区分,timestamp可以由bigtable或者客户端分配,必须是独一无二的。不同timestamp的cell的多个版本根据timestamp逆序存放,以便于读取最新版本的数据。 bigtable支持两种gc多版本数据的方式,一种是保留最近的n个版本,一种是保留足够新的数据,例如最近七天的数据版本。
API
bigtable提供的api包括创建、删除tables和column families,也提供变更集群、table和column families的元信息,例如访问控制权限。
客户端应用可以写或者删除bigtable的数据,查找单行或者扫描数据集。bigtable支持单行事务,支持单个row key上原子的read-modify-write。不支持跨row key的并发事务。
构建模块
bigtable构建在几个google的基础设施之上,使用分布式文件系统GFS存储日志和数据文件,bigtable集群与其它不同的分布式应用共享机器资源池,bigtable进程也与其它应用进程共享机器。bigtable依赖于一个集群管理系统来调度job、管理资源、处理机器failures和监控机器状态。
使用sstable的格式存储数据,sstable按照key有序存放且不可更改,key和value是任意的字符串。sstable内部由多个blocks组成,通常64kb,可以通过参数配置。index block用于索引data block,当sstable open时,index block被放入内存中。对于某些数据,sstable也可以完全放入内存中以避免磁盘seek。
bigtable依赖一个高可用、一致性分布式锁服务叫作chubby。一个chubby服务包含五个副本,其中一个为master,服务请求。chubby使用paxos算法保证副本的一致性。chubby提供包含目录和小文件的域空间,每个目录或者文件通过lock控制使用,读写文件都是原子的。 bigtable使用chubby实现多种的task:
确保任何时刻最多只有一个活跃的master
保存bigtable数据的bootstrap location
发现tablet server的存在和控制tablet server的death
存储bigtable schema信息
存储访问控制列表
可见chubby对于bigtable是非常重要的,chubby如果不可用,bigtable也就不可用了。
实现
bigtable主要由三个重要的组件组成:
被链接到每个客户端的库
one master server
many tablet servers
master主要负责分派tablets到tablet server、检测tablet server的添加和过期、平衡tablet server的负载和GFS文件的gc。 每个tablet server管理一定数量的tablets(一般10到一千),处理读写请求,split增长过大的tablet等。 与许多单节点master的分布式系统一样,客户端的数据不经过master,直接与tablet server交互进行读写操作。bigtable的客户端不依赖于master来得到tablet的位置信息,大多数客户端从来不与master交互,因此master是一个非常轻量负载的节点。 bigtable集群存储大量的table,每个table包含tablets的集合,初始时,一个table只有一个tablet,随着数据的增长会自动分裂成多个tablets,每个大约100M~200M。
tablet location
使用类似b-tree的结构存储tablet的location信息,共分三层。
第一层是存储在chubby中的一个文件,包含root tablet的位置,root tablet包含所有tablets meta data的位置信息,每个meta data包含user tablet集合的位置信息。root tablet永远不会分裂,保证整个层次体系不会超过三层。 客户端缓存了tablet location,如果客户端不知道一个tablet的location或者发现缓存的信息是错误的,它会根据层次结构递归的将其移除。tablet location保存在内存中,不会产生GFS访问,为了进一步减少开销,还增加了预取tablet locaton信息的机制。
tablet assigment
master负责将tablet分派到某一tablet server中,追踪可用的tablet servers和当前tablet的分派信息,也包含未被分派的tablet。当一个tablet未被分派,一个tablet server包含一个tablet的可用空间时,master通过发送一个对这个tablet的load请求到tablet server上来分派tablet。
bigtable使用Chubby追踪tablet servers,tablet server在创建时获得一把排他锁和unique name的file,file保存在chubby的特定目录下,master通过监控这个目录来找到tablet server。当tablet server失去这把锁时,会停止对其tablet的服务,只要这个file存在tablet server会再次尝试获得这把锁,如果file不存在了,tablet会kill掉自己不再进行服务。tablet server结束时会释放锁。
master通过周期地ask每个tablet server它们的lock status来检测是否tablet server停止服务,当master检测到一个tablet server停止服务时,它会重新assign它的tablets。当tablet server失去它的lock,master能够获得它的锁,表明chubby是可用的而tablet server不可用或者与chubby失去连接,因此master为了确保tablet server不再服务将其file删除,然后master将其tablets放入unassigned set中等待重新分派。如果chubby session过期了,master kill掉自己。
当master被集群管理系统启动时,执行以下步骤:
从chubby获取一把独一无二的master lock以防止并发的master实例
扫描chubby的目录获取可用的tablet servers
与每个可用的tablet server交流以获取tablets 分派信息
扫描metadata table以获取tablets的集合,并将unassigned tablets放入unassigned集合。
一个复杂的问题是如果metadata tablet未被分派,将无法进行扫描。因此在扫描前,master先将root table加入unassigned tablets中确保被分派,从root tablet中可以获得所有metadata tablets的信息。
当前的tablets set只有新增、删除tablet或者tablet split时才会变动,新增和删除master可以感知,split比较特殊,由tablet server负责,tablet server通过在metadata table中记录信息来提交这次split,并且提交后通知master。以防通知丢失,当master请求tablet server load这次split tablet的数据时,由于与metadata table中记录不一致,tablet server会再次通知master split的信息。
tablet server
sst数据和redo 日志持久化在GFS中。update之前会写redo日志,数据率先被写到memtable中有序存放,较早的数据存储在sstables中。恢复tablet时,tablet server从metadata table中读取其元信息,元信息中包含sst list和redo point的集合,server读取sst的信息到内存并通过回放日志来重构memtable。
对于写操作,server检查它是否符合写规则和sender是否有权限修改。权限通过读取chubby中的写权限列表获取。合法的修改先commit 日志,server通过group commit提升吞吐,日志提交后,数据被写入memtable中。
对于读操作,类似写先检查是否符合读规则和权限。读的结果由memtable和sst的数据merge后所得,memtable和sst都是字典序的,merge也会很快完成。
tablet在split和merge时不影响读写。
compaction
包含三种compaction: minor 、merge 和 major。 当memtable的size超出限制时,当前memtable被冻结并创建一个新的可写的memtable,冻结的memtable转换为sstable写入GFS中叫作minor compaction,minor compaction可以减少内存使用和推进日志回放位点减少恢复时所回放的日志量。
每次minor compaction都会新生成一个sstable,当sstables越来越多时,读操作由于要merge sstables会变得很慢,因此 server限制了sstable的数量,当到达上限时会执行merge compaction,将几个sstables和memtable一起合并成为一个新的sstable。
将所有sstable重写为一个新的sstable的merge compaction叫作major compaction。通过major compaction,Bigtable可以回收deleted数据的资源,也确保一段时间后deleted的数据消失(影响scan),这对于敏感数据的查询很重要。
优化
一些优化细节描述。
locality groups
将经常一起访问的column families放在一起形成locality group,可以提升读效率,每个tablet的locality group存放在单独的sstable中。例如WebTable的page元信息可以放在一个locality group中,page的内存放在不同的group中,读取元信息的应用一般不会读取page内容。
另外一些参数可以被设定在group上,比如group可以被声明放在内存中,这种策略对频繁访问的小数据量很有效,例如metadata table。
compression
客户端可以指定localiy group中sstable的压缩方式,压缩单位为sstable的block,这样虽然每个block会额外使用一些空间存放压缩等信息,但是避免了在解压缩的时候解压整个文件。
许多客户端使用两遍压缩的方式,第一遍使用Bentley-McIlroy,一种公共字符串的压缩方式,第二遍使用一种快速的压缩算法,在16kb的窗口内查找重复的数据。这两种方式都是非常快的,压缩在100-200M/s,解压在400-1000M/s。在WebTable的实验中,使用两遍压缩方式来压缩web page文本,压缩率可以达到10,相比Gzip的3或者4是非常出色的,主要是因为webtable的行是按host排列的,相同host会有大量的相同文本。所以,对于许多应用来讲,如何选择row name来使得相似的数据聚集在一起对于提高压缩率获取更高的性能很关键。
缓存
为了提升读性能,tablet server使用两层缓存:scan cache和block cache,上层scan cache缓存sstable接口返回的kv对(行缓存?),下层block cache缓存从gfs中读出的sstable blocks。scan cache对于重复读的数据比较有用,scan cache用于加速近期被读过的邻近数据的读取,例如顺序的读或者相同group不同column family中热点行的随机读。
bloom filters
bloom filter,常用做法,过滤访问不存在数据的读,避免读盘。
commit-log 实现
每个tablet使用单独的log文件会带来并发写多个gfs物理文件引起io问题,也会减小group commit优化的效果,因此bigtable使用每个tablet server的不同tablets写相同的物理文件的方式。 但是这种方式会使得恢复变得复杂,当一个tablet server失败后,这个server的tablets会分派给其它的servers,每个server一般会被分派小数量的tablets,当恢复这些tablets时,需要回放相关的日志,由于所有tablets的日志在一个物理文件上,这个物理文件会被读很多遍,每个server从中遍历查找符合自己的tablets的日志。为了避免这个问题,bigtable会在最初对日志按照
进行排序,这样每个tablet的日志是连续存放的,只需要一次disk seek。
加速tablet的恢复
加速tablet server停止服务后tablet在其它server上的恢复时间。本质上是减少回放的日志量,通过两次minor compaction将内存中的数据全数刷盘,这样在恢复时可以不用回放一条日志。第一次minor compaction完成后,原tablet server停止服务,再做一次minor compaction,目的是将第一次minor compaction期间写入内存的数据全部刷盘。
利用不变性
除了memtable会有读写并发之外,其它部分都是只读的,单行的并发控制就变得简单,memtable使用对每行copy-on-write方式以使得读写可以并行操作。 因为sstable是不变的,移除delete数据的任务就由gc来做了。 sstable的不可变性也使得tablet split可以快速完成,相比为每个子tablet生成新的sstable, bigtable使用子tablet共享父tablet的sstable的方式。
结尾
论文最后做了性能评估和介绍了google内部使用bigtable的应用。不详述。
你可能感兴趣的:(bigtable论文笔记)
HBase介绍
mingyu1016
数据库
概述HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是GoogleBigtable的开源实现,它利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。HBase的表结构HBase以表的形式存储数据。表有行和列组成。列划分为
论文笔记—NDT-Transformer: Large-Scale 3D Point Cloud Localization using the Normal Distribution Transfor
入门打工人
笔记 slam 定位 算法
论文笔记—NDT-Transformer:Large-Scale3DPointCloudLocalizationusingtheNormalDistributionTransformRepresentation文章摘要~~~~~~~在GPS挑战的环境中,自动驾驶对基于3D点云的地点识别有很高的要求,并且是基于激光雷达的SLAM系统的重要组成部分(即闭环检测)。本文提出了一种名为NDT-Transf
Hbase、hive以及ClickHouse的介绍和区别?
damokelisijian866
hbase hive clickhouse
一、Hbase介绍:HBase是一个分布式的、面向列的开源数据库,由ApacheSoftwareFoundation开发,是Hadoop生态系统中的一个重要组件。HBase的设计灵感来源于Google的Bigtable论文,它通过提供类似于Bigtable的能力,在Hadoop之上构建了一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase主要用于存储大量结构化数据,并支持随机读写访问,
Hive和Hbase的区别
傲雪凌霜,松柏长青
大数据 后端 hive hbase hadoop
Hive和HBase都是Hadoop生态系统中的重要组件,它们都能处理大规模数据,但各自有不同的适用场景和设计理念。以下是两者的主要区别:1.数据模型Hive:Hive类似于传统的关系型数据库(RDBMS),以表格形式存储数据。它使用SQL-like语言HiveQL来查询和处理数据,数据通常是结构化或半结构化的。HBase:HBase是一个NoSQL数据库,基于Google的BigTable模型。
HBase
傲雪凌霜,松柏长青
大数据 后端 hbase 数据库 大数据
ApacheHBase是一个基于Hadoop分布式文件系统(HDFS)构建的分布式、面向列的NoSQL数据库,主要用于处理大规模、稀疏的表结构数据。HBase的设计灵感来自Google的Bigtable,能够在海量数据中提供快速的随机读写操作,适合需要低延迟和高吞吐量的应用场景。HBase核心概念表(Table):HBase的数据存储在表中,与传统的关系型数据库不同,HBase的表是面向列族(Co
Hadoop组件
静听山水
Hadoop hadoop
这张图片展示了Hadoop生态系统的一些主要组件。Hadoop是一个开源的大数据处理框架,由Apache基金会维护。以下是每个组件的简短介绍:HBase:一个分布式、面向列的NoSQL数据库,基于GoogleBigTable的设计理念构建。HBase提供了实时读写访问大量结构化和半结构化数据的能力,非常适合大规模数据存储。Pig:一种高级数据流语言和执行引擎,用于编写MapReduce任务。Pig
[论文笔记]Circle Loss: A Unified Perspective of Pair Similarity Optimization
愤怒的可乐
# 文本匹配[论文] 论文翻译/笔记 自然语言处理 论文阅读 人工智能
引言为了理解CoSENT的loss,今天来读一下CircleLoss:AUnifiedPerspectiveofPairSimilarityOptimization。为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。这篇论文从对深度特征学习的成对相似度优化角度出发,旨在最大化同类之间的相似度sps_ps
【论文笔记】Multi-Task Learning as a Bargaining Game
xhyu61
机器学习 学习笔记 论文笔记 论文阅读 人工智能 深度学习
Abstract本文将多任务学习中的梯度组合步骤视为一种讨价还价式博弈(bargaininggame),通过游戏,各个任务协商出共识梯度更新方向。在一定条件下,这种问题具有唯一解(NashBargainingSolution),可以作为多任务学习中的一种原则方法。本文提出Nash-MTL,推导了其收敛性的理论保证。1Introduction大部分MTL优化算法遵循一个通用方案。计算所有任务的梯度g
[论文笔记] LLaVA
心心喵
论文笔记 论文阅读
一、LLaVA论文中的主要工作和实验结果ExistingGap:之前的大部分工作都在做模态对齐,做图片的representationlearning,而没有针对ChatBot(多轮对话,指令理解)这种场景优化。Contribution:这篇工作已经在BLIP-2之后了,所以Image的理解能力不是LLaVA希望提升的重点,LLaVA是想提升多模态模型的Instruction-Followingab
[论文笔记] LLM模型剪枝
心心喵
论文笔记 论文阅读 剪枝 算法
AttentionIsAllYouNeedButYouDon’tNeedAllOfItForInferenceofLargeLanguageModelsLLaMA2在剪枝时,跳过ffn和跳过fulllayer的效果差不多。相比跳过ffn/fulllayer,跳过attentionlayer的影响会更小。跳过attentionlayer:7B/13B从100%参数剪枝到66%,平均指标只下降1.7~
【论文笔记】Training language models to follow instructions with human feedback B部分
Ctrl+Alt+L
大模型论文整理 论文笔记 论文阅读 语言模型 人工智能 自然语言处理
TraininglanguagemodelstofollowinstructionswithhumanfeedbackB部分回顾一下第一代GPT-1:设计思路是“海量无标记文本进行无监督预训练+少量有标签文本有监督微调”范式;模型架构是基于Transformer的叠加解码器(掩码自注意力机制、残差、Layernorm);下游各种具体任务的适应是通过在模型架构的输出后增加线性权重WyW_{y}Wy实
【论文笔记】:LAYN:用于小目标检测的轻量级多尺度注意力YOLOv8网络
hhhhhhkkkyyy
论文阅读 目标检测 YOLO
背景针对嵌入式设备对目标检测算法的需求,大多数主流目标检测框架目前缺乏针对小目标的具体改进,然后提出的一种轻量级多尺度注意力YOLOv8小目标检测算法。小目标检测精度低的原因随着网络在训练过程中的加深,检测到的目标容易丢失边缘信息和灰度信息等。获得高级语义信息也较少,图像中可能存在一些噪声信息,误导训练网络学习不正确的特征。映射到原始图像的感受野的大小。当感受野相对较小时,空间结构特征保留较多,但
with recursive as实现递归
林-双喜
数据库 sql
withaswithas相信大家都会用,用于创建临时表达式CTE(我理解为临时表),方便在后续代码中引用它,是的代码看起来更加简洁,且逻辑更清晰。withtmp1as(select*fromtable1...),tmp2as(select*fromtmp1...)INSERTOVERWRITETABLEbigtableselect*fromtmp1unionallselect*fromtmp2wi
激光SLAM--(8) LeGO-LOAM论文笔记
lonely-stone
slam 激光SLAM 论文阅读
论文标题:LeGO-LOAM:LightweightandGround-OptimizedLidarOdometryandMappingonVariableTerrain应用在可变地形场景的轻量级的、并利用地面优化的LOAMABSTRACT轻量级的、基于地面优化的LOAM实时进行六自由度位姿估计,应用在地面的车辆上。强调应用在地面车辆上是因为在这里面要求雷达必须水平安装,而像LOAM和LIO-SA
论文浅尝 - AAAI2020 | 迈向建立多语言义元知识库:用于 BabelNet Synsets 义元预测...
开放知识图谱
机器学习 人工智能 知识图谱 自然语言处理 深度学习
论文笔记整理:潘锐,天津大学硕士。来源:AAAI2020链接:https://arxiv.org/pdf/1912.01795.pdf摘要义原被定义为人类语言的最小语义单位。义原知识库(KBs)是一种包含义原标注词汇的知识库,它已成功地应用于许多自然语言处理任务中。然而,现有的义原知识库建立在少数几种语言上,阻碍了它们的广泛应用。为此论文提出在多语种百科全书词典BabelNet的基础上建立一个统一
[论文笔记] LLM数据集——LongData-Corpus
心心喵
论文笔记 服务器 ubuntu linux
https://huggingface.co/datasets/yuyijiong/LongData-Corpus1、hf的数据在开发机上要设置sshkey,然后cat复制之后在设置在hf上2、中文小说数据在云盘上清华大学云盘下载:#!/bin/bash#BaseURLbase_url="https://cloud.tsinghua.edu.cn/d/0670fcb14d294c97b5cf/fi
[论文笔记] eval-big-refactor lm_eval 每两个任务使用一个gpu,并保证端口未被使用
心心喵
论文笔记 restful 后端
1.5B在eval时候两个任务一个gpu是可以的。7B+在evalbelebele时会OOM,所以分配时脚本不同。eval_fast.py:importsubprocessimportargparseimportosimportsocket#参数列表task_name_list=["flores_mt_en_to_id","flores_mt_en_to_vi","flores_mt_en_to_
【论文笔记】Separating the “Chirp” from the “Chat”: Self-supervised Visual Grounding of Sound and Language
xhyu61
机器学习 学习笔记 论文笔记 论文阅读
Abstract提出了DenseAV,一种新颖的双编码器接地架构,仅通过观看视频学习高分辨率、语义有意义和视听对齐的特征。在没有明确的本地化监督的情况下,DenseAV可以发现单词的"意义"和声音的"位置"。此外,它在没有监督的情况下自动发现并区分这两种类型的关联。DenseAV的定位能力源于一种新的多头特征聚合算子,该算子直接比较稠密的图像和音频表示进行对比学习。相比之下,许多其他学习"全局"音
图形学论文笔记
Jozky86
图形学 图形学 笔记
文章目录PBD:XPBD:shapematchingPBD:【深入浅出NvidiaFleX】(1)PositionBasedDynamics最简化的PBD(基于位置的动力学)算法详解-论文原理讲解和太极代码最简化的PBD(基于位置的动力学)算法详解-论文原理讲解和太极代码XPBD:基于XPBD的物理模拟一条龙:公式推导+代码+文字讲解(纯自制)【论文精读】XPBD基于位置的动力学XPBD论文解读(
【视觉三维重建】【论文笔记】Deblurring 3D Gaussian Splatting
CS_Zero
论文阅读
去模糊的3D高斯泼溅,看Demo比3D高斯更加精细,对场景物体细节的还原度更高,[官网](https://benhenryl.github.io/Deblurring-3D-Gaussian-Splatting/)背景技术Volumetricrendering-basednerualfields:NeRF.Rasterizationrendering:3D-GS.Rasterization比vol
[论文笔记] Transformer-XL
心心喵
论文笔记 transformer 深度学习 人工智能
这篇论文提出的Transformer-XL主要是针对Transformer在解决长依赖问题中受到固定长度上下文的限制,如Bert采用的Transformer最大上下文为512(其中是因为计算资源的限制,不是因为位置编码,因为使用的是绝对位置编码正余弦编码)。Transformer-XL能学习超过固定长度的依赖性,而不破坏时间一致性。它由段级递归机制和一种新的位置编码方案组成。该方法不仅能够捕获长期
SimpleShot: Revisiting Nearest-Neighbor Classification for Few-Shot Learning 论文笔记
头柱碳只狼
小样本学习
前言目前大多数小样本学习器首先使用一个卷积网络提取图像特征,然后将元学习方法与最近邻分类器结合起来,以进行图像识别。本文探讨了这样一种可能性,即在不使用元学习方法,而仅使用最近邻分类器的情况下,能否很好地处理小样本学习问题。本文发现,对图像特征进行简单的特征转换,然后再进行最近邻分类,也可以产生很好的小样本学习结果。比如,使用DenseNet特征的最近邻分类器,在结合均值相减(meansubtra
多模态相关论文笔记
靖待
大模型 人工智能 论文阅读
(cilp)LearningTransferableVisualModelsFromNaturalLanguageSupervision从自然语言监督中学习可迁移的视觉模型openAI2021年2月48页PDFCODECLIP(ContrastiveLanguage-ImagePre-Training)对比语言图像预训练模型引言它比ImageNet模型效果更好,计算效率更高。尤其是zero-sho
【论文笔记 · PFM】Lag-Llama: Towards Foundation Models for Time Series Forecasting
lokol.
论文笔记 论文阅读 llama
Lag-Llama:TowardsFoundationModelsforTimeSeriesForecasting摘要本文提出Lag-Llama,在大量时间序列数据上训练的通用单变量概率时间序列预测模型。模型在分布外泛化能力上取得较好效果。模型使用平滑破坏幂律(smoothlybrokenpower-laws)。介绍目前任务主要集中于在相同域的数据上训练模型。当前已有的大规模通用模型在大规模不同数
【论文笔记】Unsupervised Learning of Video Representations using LSTMs
奶茶不加糖え
lstm 深度学习 自然语言处理
摘要翻译我们使用长短时记忆(LongShortTermMemory,LSTM)网络来学习视频序列的表征。我们的模型使用LSTM编码器将输入序列映射到一个固定长度的表征向量。之后我们用一个或多个LSTM解码器解码这个表征向量来实现不同的任务,比如重建输入序列、预测未来序列。我们对两种输入序列——原始的图像小块和预训练卷积网络提取的高层表征向量——都做了实验。我们探索不同的设计选择,例如解码器的LST
MOSSE算法论文笔记以及代码解释
five days
计算机视觉 深度学习 机器学习
论文《VisualObjectTrackingusingAdaptiveCorrelationFilters》代码github1.论文idea提出以滤波器求相关的形式,找到最大响应处的位置,也就是我们所跟踪的目标的中心,进而不断的更新跟踪目标框和滤波器。2.跟踪策略如图,根据初始帧圈出的目标框训练滤波器,最大响应处为目标框的中心点,当移动到下一帧时,根据滤波器求相关的算法获得最大响应值,进而得出下
HBase——基础概念介绍
zhanglf1016
# HBase hbase 数据库 大数据
一、初识HBaseHBase是一个面向列式存储的分布式数据库,其设计思想来源于Google的BigTable论文。HBase底层存储基于HDFS实现,集群的管理基于ZooKeeper实现。HBase良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中Key-Value数据结构存储最常用的数据库方案。HBase特
Attention Is All Your Need论文笔记
xiaoyan_lu
论文笔记 论文阅读
论文解决了什么问题?提出了一个新的简单网络架构——transformer,仅仅是基于注意力机制,完全免去递推和卷积,使得神经网络训练地速度极大地提高。Weproposeanewsimplenetworkarchitecture,theTransformer,basedsolelyonattentionmechanisms,dispensingwithrecurrenceandconvolution
论文笔记:相似感知的多模态假新闻检测
图学习的小张
论文笔记 论文阅读 python
整理了RecSys2020ProgressiveLayeredExtraction:ANovelMulti-TaskLearningModelforPersonalizedRecommendations)论文的阅读笔记背景模型实验论文地址:SAFE背景 在此之前,对利用新闻文章中文本信息和视觉信息之间的关系(相似性)的关注较少。这种相似性有助于识别虚假新闻,例如,虚假新闻也许会试图使用不相关的图
HBase知识点总结
hbase大数据数据库
一、HBase基础HBase是一种建立在Hadoop文件系统之上的分布式、可扩展、支持海量数据存储的NoSQL数据库。HBase是BigTable的开源Java版本。是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写NoSql的数据库系统。它介于NoSql和RDBMS之间,仅能通过主键(rowKey)和主键的range来检索数据,仅支持单行事务(可通过Hive支持来实现多表joi
java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
Java异常那些不得不说的事
白糖_
java exception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
JAVA Annotation之定义篇
周凡杨
java 注解 annotation 入门 注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linux capistrano
1.ssh -v
[email protected] 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
log4j的用法
Harry642
java log4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oracle jave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
 
Hessian 简单例子
antlove
java Web service hessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
数据库对象的同义词和序列
百合不是茶
sql 序列 同义词 ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
使用Powermock和mockito测试静态方法
bijian1013
持续集成 单元测试 mockito Powermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle 数据库 plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
jquery-validation备忘
白糖_
jquery css F# Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java 多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
[军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
Hadoop如何实现关联计算
datamachine
mapreduce hadoop 关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格 js去掉所有空格 js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架 UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
JQuery EasyUI 验证扩展
可怜的猫
jquery easyui 验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
Jquery性能优化
r361251
JavaScript jquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
在eclipse项目中使用maven管理依赖
tjj006
eclipse maven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l