自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

转载 Zookeeper源码阅读(十八) 选举之快速选举算法FastLeaderElection

目录 前言 FastLeaderEleaction基本结构 选举方法分析 思考 参考 前言在过去的两节里已经分析了选举过程中的一些实体类和网络IO相关的机制与源码,这一节将会对zookeeper选举的核心类FastLeaderElectio...

2019-06-23 18:10:00 543

转载 Zookeeper源码阅读(十七) 选举之队列机制与网络IO

目录 前言 队列机制概述 网络IO与QuorumCnxManager类 思考 参考 前言前一篇已经大概讲了基本Zookeeper选举时的选票和关于集群校验的一些概念,这一篇讲一下为了达到Zookeeper选举所设计的队列机制和实现队列机制所...

2019-06-21 17:10:00 791

转载 Zookeeper源码阅读(十六)选举之选票与集群校验

目录 前言 状态 选票 集群校验 思考 参考 前言前面一篇博客分析了ZAB的设计思想和包括快速选举在内的基本的过程,但在实际的Zookeeper工程中,为了达到ZAB的目标,还是有许多的内部的逻辑和机制,这一篇我们会先分析下...

2019-05-05 23:05:00 308

转载 [转] AQS详解

除了这一篇外,讲AQS和ReentrantLock的比较好的可以看。https://www.cnblogs.com/chengxiao/p/7255941.htmlhttps://www.cnblogs.com/skywang12345/p/3496101.htmlhttp://www.cnblogs.com/skywang12345/p/3496609.htmlhttp://...

2019-04-27 23:46:00 286

转载 Volatile关键字补充

前言之前转载的文章volatile关键字解析中详细分析了volatile相关的知识(写的非常非常好!),这里就两点详细说下。Synchonized保证可见性(以println方法为例)之前有一次和朋友聊天说起System.out的各种print方法,当时他说这些方法内部除了IO外还有些别的逻辑,但当时没有特别在意。看了上面的博客后才意识到println通过同步的方法保证了可见性。用...

2019-04-25 21:58:00 110

转载 [转] volatile关键字解析

摘要:  在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,...

2019-04-25 20:32:00 166

转载 ZAB思考

目录 前言 脉络 内容 思考与问题 参考 前言ZAB是专门为Zookeeper设计的分布式协调协议,其全称是Zookeeper Atomic Broadcast(Zookeeper原子广播协议) 。在本篇文章中,我不会特别详细地去讲ZAB...

2019-04-18 23:16:00 229

转载 Zookeeper源码阅读(十五) Zookeeper集群之server启动

前言最近又开启了一个新项目,时间比较紧,博客写的速度也比较慢,但是还是不能放松要求~希望最近周末能抽点时间把上周漏掉的博客补上~在前一篇大致描述了单机server的启动过程后,从这一篇开始我们将开始集群server的一些机制的一些了解,主要还有servr的启动,处理链,选举等等大的模块需要完善。流程其实从大致的流程上来说,单机server和集群server的处理是基本一致的,都是...

2019-01-29 14:38:00 214

转载 Java jar 作为Windows service运行大坑与解决方式

最近在做的一个java项目需要作为windows的service在windows上运行。最初的解决方案就是利用windows自带的sc命令来创建windows service,也确实注册成功了。具体的命令是sc create ... (最后service执行的命令就类似...java.exe -jar a.jar)但是发现无法启动,会报error 1053 the service d...

2019-01-24 19:00:00 1202

转载 Zookeeper源码阅读(十四) 单机Server

前言前面两篇主要说了下client-server的session相关的内容,到这里client的内容以及client-server的连接的内容也就基本告一段落了,剩下的部分就是server部分内部的结构,zk的选举以及server部分的工作机制等了。 这一篇主要说下单机server的启动过程,里面会涉及到一些server内部的工作机制和机构。Server架构可以看到Zookeep...

2019-01-09 21:58:00 152

转载 Selinux导致系统文件读取变慢

前言最近公司的linux服务器开始准备启用selinux,有一个team在产线上独自启用了selinux,而且在QA, ATS, BTS都没有进行特别大规模的压测,导致产线上出现了大面积的crash,也是一次比较严重的事故,因为dump的位置在我们team维护的一个基础lib里,所以前几周一直在和这个team联调,中间怀疑过很多原因也做过多次的修改,最终定位到了问题的真正所在,而问题确...

2019-01-03 21:15:00 393

转载 Zookeeper源码阅读(十三) Seesion(2)

前言前一篇主要介绍了zookeeper的session的状态,状态之间的切换以及和session有关的实体session接口和sessiontrackimpl类的相关属性。这一篇主要详细说下session相关的流程。session的创建在ZookeeperServer的processConnectRequest方法中处理了session的创建和重新激活的请求。public voi...

2019-01-02 22:50:00 245

转载 Zookeeper源码阅读(十二) Seesion(1)

前言前面三篇主要从client的角度说了下client和server建立连接的过程,这一篇和后面一篇开始看下Zookeeper中非常重要的一个概念:Session,session是zookeeper client和server建立和维护连接的单位(我这个描述感觉有点奇怪 ???? )。Session状态Zookeeper的所有操作基本都是基于session的,如之前提到的wathcer的...

2018-12-29 22:45:00 138

转载 Markdowm编辑器推荐和Emoji 表情

编辑器之前用过许多markdown的编辑器,比如小书匠,马克飞象等等,Markdown的基本语法都是支持的,而且基本都有云盘保存的功能,但是它们都有一些缺点,比如界面太丑(不对我的口味),编辑体验不是太好等等。今天推荐一款编辑体验从超好的markdown编辑器Typora。Typora可能是我写Markdown体验最好的一款编辑器了,界面清爽,语法齐全而且几面支持多种模式,体验炒鸡棒...

2018-12-29 09:44:00 914

转载 Zookeeper源码阅读(十一) ZK Client-Server(3)

前言上一篇讲了client端和server创建连接的初始化和创建过程,这两个部分主要是和sendthread紧紧相关的,这一篇讲一下响应阶段,响应阶段和sendthread,eventthread都有一定的关系。获取响应其实获取响应对于sendthread来说就是readresponse方法,在上一篇已经详细讲过了,主要的流程就是:反序列化response;根据回复头来处理,...

2018-12-22 16:48:00 296

转载 [转] JVM类生命周期概述:加载时机与加载过程

版权声明:欢迎转载,注明作者和出处就好!如果不喜欢或文章存在明显的谬误,请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步! https://blog.csdn.ne...

2018-12-20 23:03:00 145

转载 Zookeeper源码阅读(十) ZK Client-Server(2)

前言前面一篇博客主要从大致流程的角度说了下client和server建立连接的流程,这篇和下一篇博客会详细的把上一篇不是很细致的地方展开和补充。初始化阶段初始化阶段主要就是把Zookeeper类中比较重要的功能类实例化,前面对这个过程说的已经比较详细了。这里主要补充几点:ClientCnxn初始化cnxn = new ClientCnxn(connectStringPars...

2018-12-18 00:40:00 401

转载 Zookeeper源码阅读(九) ZK Client-Server(1)

前言Watcher部分的代码量总的来说还是比较多的,但是整个逻辑流程还是相对来说比较清晰的。不过还是需要常在脑子里过一过,zk的watcher的相关的架构的设计还是挺精妙的。从这一篇起开始说ZK client端-server端交互相关的代码,主要是从client本身,client和server的连接和会话以及server端这三个大点来说。这一篇主要说说大致流程和client端的初始化...

2018-12-06 23:56:00 568

转载 Zookeeper源码阅读(八) Watcher机制与运行流程

前言前面两篇主要说了关于watcher在客户端和服务端的相关实体类和功能接口的相关代码,这一篇把前面的两篇的这些实体类和功能接口以及整个watcher的相关框架串联起来,整体地说一下zk的watcher的注册,触发等运行的机制。总的来说,ZK的watcher机制,主要可以分为三个阶段:客户端注册watcher;服务端处理watcher;客户端回调watcher。这三个过程...

2018-11-22 22:11:00 254

转载 Zookeeper源码阅读(七) Server端Watcher

前言前面一篇主要介绍了Watcher接口相关的接口和实体类,但是主要是zk客户端相关的代码,如前一篇开头所说,client需要把watcher注册到server端,这一篇分析下server端的watcher。主要分析Watchmanager类。Watchmanager这是WatchManager的类图介绍。来看看代码:/** * This class manages wat...

2018-11-07 23:53:00 170

转载 Zookeeper源码阅读(六) Watcher

前言好久没有更新博客了,最近这段时间过得很压抑,终于开始踏上为换工作准备的正轨了,工作又真的很忙而且很琐碎,让自己有点烦恼,希望能早点结束这种状态。继上次分析了ZK的ACL相关代码后,ZK里非常重要的另一个特性就是Watcher机制了。其实在我看来,就ZK的使用而言,Watche机制是最核心的特性也不为过了!这一篇先简单介绍下watcher相关的实体类和接口。Watcher机制在...

2018-11-06 23:33:00 616

转载 Zookeeper源码阅读(五) ACL基础

前言之前看代码的时候也同步看了看一些关于zk源码的博客,有一两篇讲到了ZK里ACL的基础的结构,我自己这边也看了看相关的代码,在这里分享一下!ACL和IDACL和ID都是有Jute生成的实体类,分别代表了ZK里ACL和不同ACL模式下的具体实体。ACL:public class ACL implements Record { private int perms; pri...

2018-10-19 00:35:00 267

转载 Thinking in Java 读书总结(四)

前言忙碌的国庆终于结束了。。。回老家参加了好兄弟的婚礼,真是整整忙了一整个假期,不过也贼替他们开心!假期回来了要好好开始复习了,之前TIJ的笔记好久没写了,这次把第10,11两章的内容写好!第十章 内部类就是把一个类的定义放到另一个类的内部。10.1 创建普通内部类在外部类的非静态方法中调用与普通类没区别;普通内部类在外部类的非静态方法之外的任何位置创建某个内部类的对象,必...

2018-10-08 21:40:00 157

转载 Paxos思考

前言前段时间学了下Paxos,但是一直没有写博客,前两天中秋在外面吃饭突然想起来Paxos的过程,发现有些细节已经记不太清了。这两天又回头看了下,发现自己之前的理解还是有些纰漏,这次再复习印象也加深了不少。大致过程两个阶段。1. prepare阶段所有的提议者把自己独特的序号发给接收者,有三种情况:a. 这是第一个接收者收到的序号,那么接收者给提议者promise如果你之后再...

2018-09-28 18:38:00 152

转载 Zookeeper源码阅读(四)数据存储-SNOPSHOT

前言事务日志记录了zk的事务记录,而zk同时有快照机制来记录zk服务器中某一时刻全量内存数据,并写入磁盘中保存。快照机制其实很多框架都提供,也是目前做恢复的一种很主流的机制。前面第二篇说到Zk内存中数据以树的形式存在内存中,相应的类是DataTree。快照就是基于DataTree,把它序列化然后存储到磁盘中。SnapShot接口与事务日志类似(接口为TxnLog),快照也有其对饮...

2018-09-19 21:50:00 243

转载 Zookeeper源码阅读(三)数据存储-日志

前言接着上篇的内容,上一篇主要说了下Zookeeper内部的数据存储基本单位datanode和内存中维护的Datatree,还有和配额有关的三个实体类。具体在zk初始化时是怎么生成datatree等等后面会说。这一篇主要说下事务日志,后面也有用到。事务日志关于zookeeper事务日志的格式,可以参考下 zk事务日志,其实简单说也就是header+body两个部分,header有版...

2018-09-17 22:14:00 460

转载 Zookeeper源码阅读(二)数据存储

前言在开始写具体的逻辑之前,还需要把zk的数据管理和事务的日志与保存了解得更深入一些。这部分内容不少,下面几篇都会是相关的内容。内存数据zk的数据结构模型是基于ZNode的树状模型。在ZK内部通过类似内存数据库的方式保存了整棵树的内容,并定时写入磁盘。zk的内存数据放在DataTree中,它是zk内存数据存储的核心,也是一个树形结构。/** * This class main...

2018-09-11 21:45:00 191

转载 Zookeeper源码阅读(一)Jute和传输协议

前言最近开始了Zookeeper的源码阅读和分析,也从现在开始把之前和现在学习到的一些Zookeeper的源码知识和我的一些理解放到博客上。不得不说这是自己第一次去完整的看一个开源项目的完整源码,从开始的第一步感觉就遇到了坑= =而且多少还有些面对庞大代码的茫然。在整个过程中(过程还没完,到现在为止)零零散散看了不少博客的分析,但是感觉都是针对某个小部分的分析,希望自己能从头到尾把自己...

2018-09-08 22:48:00 359

转载 分布式系统基本概念 二

分布式系统基本概念 二前言最近工作上又开始做C++方面的东西。。。因为对C++不是很熟悉,所以花了一些时间在读代码和做新feature上,下班也比较晚。只能晚上稍微晚一点看一写分布式系统知识和Zookeeper的源码。这里总结下最近学的一些基本概念吧。2PC&3PC首先介绍下最近学的一些博客,后面会结合自己查资料和看书说一下一些理解。分布式系统理论基础 - 一致性、2P...

2018-08-26 23:41:00 147

转载 Thinking in Java 读书总结(三)

前言TIJ第7,8,9章分别讲的是类的复用,多态和接口,这些特性在Java中不得不说都是特别特别重要的。之前校招面试的时候其实一直心里有个疑问,Java那么多底层特性真的工作上用得着么,不会是面试造火箭什么的吧。但是真正工作之后静下来去学习才发现,要想真正理解Java里的很多表面的语法和特点,必须要结合底层的特性才能真正知其然且知其所以然。长路漫漫,一点点积累!第七章 复用类7.1...

2018-08-19 21:41:00 127

转载 分布式系统基础的基本概念

前言最近在工作之余看了一些分布式系统的博客和一点书本知识,从理论上了解了一些分布式系统的基本知识。给我最深的感觉就是所有的软件技术和架构都是随着业务的不断发展和底层技术的更新才有机会一步步的深入。特别是学习cap和base时,了解到分布式事务与传统DB事务ACID的区别(其实分布式事务和传统DB事务不是一个层面的东西但是感觉思想上还是有一些共同之处的)。现在的分布式系统也都是由最初的集...

2018-08-13 00:27:00 335

转载 Zookeeper学习(三) 客户端和原生API

前言在这篇博客里我会主要总结下两个部分的操作:在安装ZooKeeper的机器上利用ZKClient连接Zookeeper的集群,然后利用相应的命令做一些简单的操作。相信很多没有接触过Zookeeper的同学对第一篇简介里的哪些ZNode等等一些概念其实不是那么清楚,但是经过实际操作后会深入了解许多。简单介绍下做的一个小demo,介绍了一下对Zookeeper原生API的使用。我们...

2018-08-05 22:45:00 117

转载 Thinking in Java 读书总结(二)

小吐槽上周产线发布的时候,新包竟然出了产线故障。虽然紧急回滚避免了更大的影响,但是包内部的问题还是让我头疼了一整周。可以说上周真的是工作以来最艰难的一周,每天都弄到2,3点才回去,博客也没有更新。现在虽然还没有完全解决包内部的问题(需要和别的团队联调),但是至少目前有work around的方案让新的包可以正常工作且新的feature都可以正常上线了。不得不说这一周的紧张真的是锻炼了自...

2018-08-03 00:33:00 114

转载 Zookeeper学习(二) 安装和四字命令

前言在刚开始没有接触zookeeper的具体应用前,光看别人的描述,其实对它的实际应用其实不是特别清晰,所以慢慢从其基础应用开始了解其底层原理是很重要也是很必要的。首先,安装Zookeeper并了解一下Zookeeper的基础命令。这个过程是非常简单的,正如zookeeper官网说的,zookeeper是可复制的,安装zookeeper的集群其实就是安装多个单机版的zookeeper...

2018-07-19 18:06:00 163

转载 Thinking in Java 读书总结(一)

前言之前有零散地阅读过TIJ,但是都是针对自己的问题去有针对性的阅读,没有从头梳理过Java的一些基础知识。从前段时间开始自己也开始了整体性地学习TIJ的过程,也从这篇博客开始把自己的一些感悟和理解总结起来,也希望能对大家和我自己都有些帮助。第二章 一切都是对象第一章大致都是一些面向对象语言或针对JAVA的特性的一些介绍,在后面的每一章中都有详细的介绍,所以从读书总结从第二张开始。...

2018-07-19 01:15:00 173

转载 Zookeeper学习(一) 概述

0. 前言前段时间在工作中参与了一个分布式项目的开发,其中一个重要的模块就是Zookeeper。可以说这个项目及其之后的一段学习让我找到了自己的兴趣点,自己最近也学习了一些Zookeeper的知识,在这里也把自己学到的和一些思考写下来~1. 分布式协调分布式协调是用来解决分布式环境中多个进程(多机环境)中的同步控制问题的一门技术。通过分布式协调,可以让各个进程有序的访问部分资源,防...

2018-07-18 19:39:00 97

转载 工作一年了的心得体会

工作至今有一年的时间了,这一年有过开心,也有失落。但是回首看看,似乎更多的是迷茫。刚来公司的时候,打心底想好好学一学技术,学一点有用的东西。但是进公司之后发现很多和自己想的不太一样。来到了一个做监控平台的组,也是大老板当年自己和两个同事一手做起来的项目,平心而论项目组确实得到了老板的重视,老板对我真的也非常好,在很多方面都特别重视我,也有专门的培养,这一点我真的是打心底的感激。但是令...

2018-07-10 23:09:00 517

转载 hdu 1253 胜利大逃亡

这是我第二次写这个程序,复习了一下BFS,发现自己已经很不熟练,需要多加练习,自己最近会多多复习的。加油!Problem DescriptionIgnatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(...

2012-05-15 22:59:00 106

转载 大数相加

这是超长数的加法,以后自己这种加法自己要记住!就是把所有的数字都移到数组右侧,再一个一个加!My Code 1 #include<stdio.h> 2 #include<string.h> 3 char a[1000][500]; 4 int main() 5 { 6 int i,j,s[500],k,m; 7 ...

2012-05-10 08:54:00 106

转载 hdu2199 二分搜索

这是很简单的二分搜索;需要注意的是精度。一开始我用的是right-left<1e-4,测试样例中100我输出的最后一位为1,不合要求。后来自己写了个四舍五入的一段,但交上去WA,于是改成1e-6,AC了。代码题目如下:Problem DescriptionNow,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 =...

2012-04-25 23:59:00 105

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除