`

备注标签博文篇

阅读更多

备注标签博文篇,记录随手比较重要一点的事情,URL备注,重要的信息备注,评论页.

自己看的,本篇博文谢绝评论,谢谢合作!

 

HTTP2, SPDY 是什么?如何部署 SPDY?

http://www.geekpark.net/news/158198

 

HTTP/2 及 HTTP/3特性

https://github.com/ljianshu/Blog/issues/57

 

Keep-Alive

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Keep-Alive

 

HTTP Keep-Alive是什么?如何工作?

http://www.nowamagic.net/academy/detail/23350305

 

TCP/IP TIME_WAIT状态原理

https://elf8848.iteye.com/blog/1739571

 

HTTP/1.x 的连接管理

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Connection_management_in_HTTP_1.x#%E5%9F%9F%E5%90%8D%E5%88%86%E7%89%87

 

关于HTTP/1.1管道化的问答(翻译)

https://jiaolonghuang.github.io/2015/08/16/http-pipelining/

 

CSS Sprite (雪碧图)

https://www.jianshu.com/p/2cac8fbe341b

 

What is "inlining" in HTTP?

https://www.quora.com/What-is-inlining-in-HTTP

 

SPDY 是什么?如何部署 SPDY?

http://www.geekpark.net/news/158198

 

spdy-whitepaper

http://dev.chromium.org/spdy/spdy-whitepaper

 

TCP-IP详解:超时重传机制

https://blog.csdn.net/wdscq1234/article/details/52476231

 

TCP 的那些事儿

https://coolshell.cn/articles/11564.html

 

TCP 的那些事儿

https://coolshell.cn/articles/11609.html

 

Google QUIC 协议:从 TCP 到 UDP 的 Web 平台

https://infoq.cn/article/quic-google-protocol-web-platform-from-tcp-to-udp

 

领域驱动设计学习之路—DDD的原则与实践

https://www.cnblogs.com/edisonchou/p/edc_ddd_foundation_study_part1.html

 

Docker技术笔记:Ubuntu安装Docker CE

https://yq.aliyun.com/articles/632359

 

反爬虫: Redis通过LUA脚本, 记录IP在一段时间内频繁访问页面检测

https://www.cnblogs.com/yanghuahui/p/3697996.html

分享到:
评论
40 楼 greatwqs 2014-07-10  
1. JAVA内存泄漏 及 编码优化;
一种情况如在C/C++ 语言中的,在堆中的分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉(如指针重新赋值);另一种情况则是在内存对象明明已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。

2. JAVA的四种引用与JVM优化,以及SoftReference 实现的一个缓存系统.
强引用
软引用(SoftReference )
弱引用(WeakReference )
虚引用(PhantomReference )

http://henryyang.iteye.com/blog/1188328
39 楼 greatwqs 2013-09-24  
专题:Android 各类优化方案大全

http://mobile.51cto.com/android-410883.htm
38 楼 greatwqs 2013-06-01  
HBase HRegion Split 过程和异常处理:

1 创建splitDir(region目录下的splits目录)
2 状态机添加CREATE_SPLIT_DIR
3 执行internalFlushcache把内存刷到磁盘
4 close parent并且返回所有storefile
5 状态机添加CLOSED_PARENT_REGION
6 把region从rs的online列表中删除
7 状态机添加OFFLINED_PARENT
8 多线程进行split storefiles,创建子目录并把文件写进去,(原文件不删除,该过程默认超过30s会强行中止并抛出IOE)
9 状态机添加STARTED_REGION_A_CREATION
10 创建第一个daughter region
11 状态机添加STARTED_REGION_B_CREATION
12 创建第二个daughter region
13 在meta表中下线parent
14 原子性往meta表中写以下信息:parent置为offline以及split状态,parent添加两列:splitA和splitB
15 并发open DaughterA和DaughterB(如果线程中断,则通知rs退出进程)
16 在open期间,如果server中止,则先把A和B的信息写入到meta表中再跳过以下过程
17 创建两个新的HRegion,通知rs把子region添加到online列表中
18 把Daughter信息写入meta表

当以上过程中任何一步抛出异常时,regionserver会进入回滚逻辑(rollback):
对状态机中存储己经进行的状态进行检查,并从后往前开始遍历己进行的状态:
CREATE_SPLIT_DIR:删除子目录
CLOSED_PARENT_REGION:重新初始化parent
STARTED_REGION_A_CREATION:删除A对应的目录
STARTED_REGION_B_CREATION:删除B对应的目录
OFFLINED_PARENT:把parent添加到online队列中
http://koven2049.iteye.com/blog/1199519
37 楼 greatwqs 2013-05-17  
java传递是引用的拷贝,既不是引用本身,更不是对象。

第一页最后一楼点题.
http://www.iteye.com/topic/4189
36 楼 greatwqs 2013-05-16  
ConcurrentHashMap实现

1. 一个ConcurrentHashMap由多个segment组成,每一个segment都包含了一个HashEntry数组的hashtable,每一个segment包含了对自己的hashtable的操作,比如get,put,replace等操作,这些操作发生的时候,对自己的hashtable进行锁定。由于每一个segment写操作只锁定自己的hashtable,所以可能存在多个线程同时写的情况,性能无疑好于只有一个hashtable锁定的情况。
2. Segment<K,V> extends ReentrantLock,在里面使用锁,线程较多时性能较好.
ConcurrentHashMap的操作put,remove,get时, 先是得到某个segment,在segment中使用HashMap的的方式进行put,remove,get等操作.
35 楼 greatwqs 2013-05-09  
HBase介绍, HBase架构, 非常基础.

阿里巴巴集团数据平台
http://www.alidata.org/archives/1509

HFile存储格式
http://www.alidata.org/archives/1551
34 楼 greatwqs 2013-05-09  
HBase中的时间维度(HBase数据的版本) 笔记

在Bigtable论文中.一个{row key,column key(qualifier)}对应的是一个cell.每个cell可能包含多个版本的数据,以timestamp索引.System.currentTimeMillis()来做为时间维度的key。时间维度的各个版本是倒序排列后存储的,所以从storefile中读取的时候,最先读到的就是最新的时间.

1. GET:
通过设置 Get.setMaxVersions()可以返回多个版本的数据。
通过设置 Get.setTimeRange()可以返回其他时间范围的版本。

2. Put:
数据文件的写入只能附加(Append)而不能修改。数据文件只有在执行compact操作是才重写。根据gc的策略,执行compact的时候会回收老的版本。

3. GC回收旧版本:
a. 可以设置最多可以保留的版本数量。如果超过,则最老的版本会被抛弃,默认设置是3个版本,这个可以在创建Column Family时通过HColumnDescriptor.setMaxVersions(int versions)设置,是Column Family级别的。当然这个限制中读取的时候是逻辑限制,即时生效,但老版本的物理删除还是需要等到major compact操作中执行。将这个值设置为1并不是说就禁用了多版本,每次Put的时候还是同样的会生成新的版本,只是最后只保留一个版本而已。
b. 可以设置TTL(Time To Live),如果版本存在的时间超过TTL,则会被删除。默认的TTL是forever。通过 HColumnDescriptor.setTimeToLive(int seconds)可以设置TTL,物理清除版本还是要等到major compact,但Get/Scan等读取操作逻辑是即时生效的。需要注意的是,如果row中所有的cell都被TTL失效以后,这一行记录就被删除了(HBase中不需要显示的建立或者删除行,如果行中的cell有值,行就存在)。

4. 手动删除数据版本:
“删除某个timestamp之前的所有老版本”意味着什么呢?HBase并不会去修改原有数据,因此删除不是立即在原数据对应的文件中执行物理删除或者物理标记删除,而是将删除的记录保存中所谓的tombstone中,当HBase执行major compact的时候,再根据tombstone去执行物理删除。
如果你指定的timestamp比row中最新的版本大,则相当于删除了整行数据。

http://hbase.info/2011/07/20/hbase-time-dimension
33 楼 greatwqs 2013-04-27  
Apache HBase Region Splitting and Merging
http://hortonworks.com/blog/apache-hbase-region-splitting-and-merging/
32 楼 greatwqs 2013-04-24  
http://www.codefans.net/jscss/code/976.shtml
javascript图片幻灯.
31 楼 greatwqs 2013-04-18  
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 阅读笔记

它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
1. 集群模式参数:
zoo.cfg ZooKeeper配置文件
tickTime=2000 ##每个心跳间隔时间
dataDir=/zookeeper-3.2.2/build  ##保存数据位置,一般在HDFS上
clientPort=2181  ##客户端连接ZooKeeper服务端端口
initLimit=5      ##Zookeeper 服务器集群中连接到Leader的Follower服务器的超时时间: initLimit*tickTime
syncLimit=2      ##Leader与Follower 之间发送消息,请求和应答时间不能超过syncLimit*tickTime
server.1=192.168.211.1:2888:3888 
server.2=192.168.211.2:2888:3888 
## server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示端口就是用来执行选举时服务器相互通信的端口(当Leader挂了)。

2. 数据模型:
Zookeeper维护一个具有目录层次关系的数据结构
每个目录都称为ZNode,ZNode的标识为完整的路径.
znode有版本,每个znode中存储的数据可以有多个版本.
EPHEMERAL类型znode没有子ZNode.
znode可以是临时节点,Session失效,创建的临时ZNode会删除.
znode目录名可以自动编号.
ZNode可以被监控,如果ZNode状态变化,通知客户端(观察者模式),为Zookeeper 的核心特性
3. 使用ZooKeeper API:
看源码org.apache.zookeeper.ZooKeeper
4. 典型应用场景:
统一命名服务: 因为ZNode目录不重复.
配置管理: 每个客户端设置一个Watcher,一个客户端变化时通知ZooKeeper,触发对其他客户端的变化响应.
集群管理: Leader Election, 原理HBase的HMaster选举.
集群之间共享锁: EPHEMERAL_SEQUENTIAL 客户端创建节点,循环询问自己创建节点是否为最小ZNode节点.
队列管理: 创建ZNode,获取此目录下的全部ZNode数目,数目达到最大?创建另一个ZNode作为标识队列已满.

http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html
30 楼 greatwqs 2013-04-17  
源代码搜索, grepcode比较好.

codesearch.google.com关了
http://koders.com/
http://opensearch.krugle.org/
http://grepcode.com/
29 楼 greatwqs 2013-04-09  
HLog的结构和生命周期

1. 结构:
HLog(WAL)是Put时先写Hlog, HLog File是一个Sequence File, 存储在HDFS之上.HLog由一条条的HLog.Entry构成(一个Entry对应于一个HTable), HLog.Entry由HLogKey和WALEdit构成.
WALEdit,KeyValue

待续...
28 楼 greatwqs 2013-04-06  
HBase如何合理设置客户端Write Buffer: 阅读笔记

1. 一次Put的过程.
T1: 一次Put操作即要与Region Server执行一次RPC操作(原环境已经连接到ZooKeeper,并HBase客户端LocalCache已经缓存了RegionServer信息);
T2: 数据传输;
T3: 更新MemStore, 写HLog.

2. 使用场景分析
适合# 如果Put提交的是小数据(如KB级别甚至更小)记录,那么T2很小,因此,通过该种模式减少T1的开销(减少RPC连接次数,具体详见第4点),能够明显提高写入性能。
不适合# 如果Put提交的是大数据(如MB级别)记录,那么T2可能已经远大于T1,此时T1与T2相比可以被忽略,因此,使用该种模式并不能得到很好的性能提升,不建议通过增大Write Buffer大小来使用该种模式。
不适合分析 Put为较大的数据, 很多一起commit时, HBaseClient和HRegionServer需要更多的内存. 虽然减少了T1(RPC)时间, 但是这里的T2时间较大. 对整体插入性能来说没有较大提高.

3. 配置
默认配置下,HbaseClient WriteBuffer大小为2MB;
用户调用flushCommits()进行提交;当Write Buffer满了,客户端会自动执行提交;或者调用了HTable的close()方法时无条件执行提交操作。

4. flushCommits()时实际的RPC次数
客户端提交后,所有的Put操作可能涉及不同的行,然后客户端负责将这些Put对象根据row key按照 region server分组,再按region server打包后提交到region server,每个region server做一次RPC请求。

5. 预估算Write Buffer占用的内存
单个HBaseClient: hbase.client.write.buffer * number of HTable object for writing;
单个HRegionServer: hbase.client.write.buffer * hbase.regionserver.handler.count

http://blog.linezing.com/2012/11/how-to-use-hbase-client-write-buffer
27 楼 greatwqs 2013-04-03  
HBase 源码分析 – RPC机制 : 基础 : 整合源码后阅读笔记
1. HBase的通信接口
HBaseClient --> MasterServer  --HMasterInterface
HBaseClient --> Region Server --HRegionInterface
RegionServer--> Master Server --HMasterRegionInterface
2. 三个RPC接口
#HMasterInterface 表结构的修改,删除,下线.
#HRegionInterface 取得本RegionServer的信息,表数据的Scan,Delete,Put,Get.
#HMasterRegionInterface, 在Master端实现.
RS向Master报告启动,Master server就回给它当前的配置,如文件系统,hbase的根目录
RS向Master server报告状态,及管理的Region的信息,顺便从Master server取得要执行的命令.有哪些命令和报告呢,参考org.apache.hadoop.hbase.HMsg.Type.有命令: 打开,关闭,切分,压缩和停止Region;报告有Region serve打开,关闭,切分,压缩,更新,Region正退出等.
3. org.apache.hadoop.hbase.io.HbaseObjectWritable
RPC传输数据的序列化. 通过内部
CODE_TO_CLASS = new HashMap<Byte, Class<?>>();
CLASS_TO_CODE = new HashMap<Class<?>, Byte>();
两个Map找到对应表,在writeObject,和readObject时,针对每种类型的数据进行实现.
这样在RPC两端,传输此字节流,在每段写入和拿出具体的数据类型的数据.
http://www.spnguru.com/2010/07/hbase-%e6%ba%90%e7%a0%81%e5%88%86%e6%9e%90-rpc%e6%9c%ba%e5%88%b6-%e5%9f%ba%e7%a1%80/
26 楼 greatwqs 2013-03-29  
Hadoop HDFS 源码解析:
——DataXceiverServer
——Client代码结构
——DataNode启动过程
——DataNode主要数据结构
——SecondaryNameNode
——NameNode与DataNode间的通信
——安全模式(SafeMode)
——Backup Mode
——Block管理
——租约管理(lease management)
——副本管理(Replica Management)
——DataNode心跳检测(HeartBeat)
——NameNode中的线程
——NameNode初始化
——NameNode主要数据结构
姜博http://jiangbo.me/
25 楼 greatwqs 2013-03-27  
搜索技术博客-淘宝http://www.searchtb.com/tag/hbase
24 楼 greatwqs 2013-03-27  
TREND MICRO CDC SPN TEAM 趋势科技中国研发中心 SPN研发团队

现在已经有的HBase优秀文档有:
HLog的结构和生命周期, HBase性能分析1和2,
详解HBase Compaction, HBase源码分析–RPC机制:客户端,
影响HBase insert性能的几个因素, HBase源代码分析1–Row Lock
http://www.spnguru.com/tag/hbase/
23 楼 greatwqs 2013-03-17  
Hadoop源码解读:

http://caibinbupt.iteye.com/
22 楼 greatwqs 2013-03-16  
动态查找树主要有:
1. 二叉查找树(Binary Search Tree),
2. 平衡二叉查找树(Balanced Binary Search Tree),
3. 红黑树 (Red-Black Tree ),
4. B-tree/B+-tree/ B*-tree (B~Tree)。
前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然对查找效率是有所提高的;还有一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下(为什么会出现这种情况,待会在外部存储器-磁盘中有所解释),那么如何减少树的深度(当然是不能减少查询的数据量),一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。
这样我们就提出了一个新的查找树结构——多路查找树。根据平衡二叉树的启发,自然就想到平衡多路查找树结构。
http://blog.csdn.net/hbhhww/article/details/8206846

row key在HBase中是以B+ tree结构化有序存储的,所以scan起来会比较效率。
在数据库进行查询时,磁盘I/O读写过于频繁,根据磁盘获取数据的时间代价来说,移动臂根据柱面号使磁头移动到所需要的柱面上,这一过程被称为定位或查找。这一段时间也是最消耗时间,约0.1秒。
在算法设计时,选择使用第四种B+-Tree,主要目的是为了减小树的高度,树的高度直接表明需要磁盘查找时移动磁头的次数。相对来说,树越矮移动磁头的次数减少,查询时间相对变少。

相关推荐

    点击博文视点

    点击博文视点 HTTP协议 测试,http协议测试,不要下载,谢谢 点击博文视点 HTTP协议 测试,http协议测试,不要下载,谢谢 点击博文视点 HTTP协议 测试,http协议测试,不要下载,谢谢 点击博文视点 HTTP协议 测试,...

    博文配套资源 (001)

    【标签】"配套资源"进一步确认了这些文件是为了解释、扩展或支持文章内容而提供的。它们可能包括源代码、数据文件、图片、视频教程等,旨在帮助读者更好地理解和应用文章中的知识。 【压缩包子文件的文件名称列表】...

    博文视点专业书目2006年第一期

    通过“博文视点”这一标签,我们可以了解到这些书籍是经过专业编辑精心筛选的结果,它们的质量得到保障,能够为读者提供系统的学习体验。书目中的“教程”标签意味着这些书籍注重教育性,它们不仅为初学者提供入门...

    博文网碟软件

    ### 博文网碟软件知识点解析 #### 一、博文网碟软件简介 **博文网碟**是一款专门用于处理光盘镜像文件的虚拟光驱工具。它支持常见的ISO格式文件,并能在线下载光盘镜像文件。通过该软件,用户能够轻松管理和使用...

    博文对应资料

    标题“博文对应资料”指的是与某篇博客文章相关的资源或代码文件。这篇博客文章的链接是,遗憾的是,由于这是一个实际的URL,我无法直接访问它来获取具体的内容。不过,我们可以根据常见的博客文章结构和标签“资料...

    jsp+javabean开发的博文系统

    JavaBean可以在JSP页面中通过`jsp:useBean`标签实例化,并通过EL表达式调用其方法,实现对博文的操作。 数据库是存储和管理数据的核心部分,这个系统可能使用了如MySQL、Oracle或SQL Server等关系型数据库管理系统...

    博文图书销售管理系统8.6

    博文图书销售管理系统

    博文网碟-虚拟光驱ISO

    博文网碟 虚拟光驱 ISO,用于打开ISO文件,非常好用

    【整站程序】海量英文博客系统(内置27000篇博文).zip

    【整站程序】海量英文博客系统(内置27000篇博文)

    Sina博文采集工具源码

    Sina博文采集工具源码 源码介绍: Sina博客采集器可以采集新浪博客指定目录页面的博客文章,软件也支持直接通过博客的地址来采集。 自动抓取sina博客的博文输出到txt文件 工具可能有一点小问题。但是值得学习的东西...

    一个简单的JSP自定义标签

    博文链接:https://clarancepeng.iteye.com/blog/112147

    多语言标签聚类及其应用研究.caj

    本文采用不同的标签自动抽取算法分别对博文正文信息进行标签抽取,在标签抽取 的基础上形成复合标签,并与用户给定的标签进行比较分析。实验结果表明自动抽取的 标签可以作为用户标注标签的有效补充,对用户标注的...

    博文51单片机汇编语言实验(一)-----数字量输入输出(附参考代码及注释)附件.zip

    这篇博客的标题是“博文51单片机汇编语言实验(一)-----数字量输入输出(附参考代码及注释)附件.zip”,这显然是一篇关于51单片机编程的教程,聚焦于使用汇编语言进行数字量输入输出的操作。51单片机是一种广泛...

    这篇博文《Flink消费Kafka主题消息的演示》需要的Kafka依赖包

    这篇博文《Flink消费Kafka主题消息的演示》需要的Kafka依赖包

Global site tag (gtag.js) - Google Analytics