badly1226
码龄12年
  • 196,466
    被访问
  • 94
    原创
  • 1,443,290
    排名
  • 46
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:努力成就非凡,请不要在最该奋斗的年纪选择安逸

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2010-11-27
博客简介:

badly的博客

博客描述:
努力成就非凡
查看详细资料
个人成就
  • 获得77次点赞
  • 内容获得14次评论
  • 获得223次收藏
创作历程
  • 1篇
    2021年
  • 24篇
    2020年
  • 12篇
    2019年
  • 35篇
    2018年
  • 2篇
    2015年
  • 8篇
    2014年
  • 16篇
    2013年
成就勋章
TA的专栏
  • 算法与数据结构
    3篇
  • 技术管理
    2篇
  • mq
    1篇
  • java基础
    4篇
  • spring
    2篇
  • python
    20篇
  • django
    7篇
  • git
    4篇
  • intellij idea
    2篇
  • js
    4篇
  • zookeeper
    18篇
  • elasticsearch
    1篇
  • redis
    1篇
  • java
    13篇
  • ssh
    4篇
  • oracle
    5篇
  • mysql
    2篇
  • fushioncharts
    1篇
  • springcloud
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

git统计个人代码行数

git log --since="开始日期" --before="结束日期" --author="提交账号" --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s
",add,subs,loc }'执行之后可见如下结果:added lines: 19697 rem
原创
发布博客 2021.08.03 ·
154 阅读 ·
0 点赞 ·
0 评论

基于java socket来进行网络通信的小例子

在之前分析zookeeper源码的过程当中,有两个地方使用到了基于java socket进行通信的地方第一个地方是在集群启动时,集群节点之间会发起leader投票选举,此时zookeeper底层是基于java socket来进行网络通信的,感兴趣的小伙伴可以看手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)这篇文章第二个地方是当集群中新加入一个zk节点或者某个节点宕机恢复启动的时候,需要恢复数据,并且从leader中同步..
原创
发布博客 2020.08.27 ·
133 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-客户端如何发送数据到zk集群服务端的

接上篇文章继续分析手把手带你撸zookeeper源码-zookeeper客户端如何和zk集群创建连接上篇文章我们分析到了org.apache.zookeeper.ClientCnxn.SendThread#primeConnection 这个方法里面的代码,我粘贴几行比较重要的代码如下// 创建链接请求的对象 ConnectRequest conReq = new ConnectRequest(0, lastZxid, sessionTimeout..
原创
发布博客 2020.08.26 ·
282 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper客户端如何和zk集群创建连接

上篇文章手把手带你撸zookeeper源码-zookeeper集群如何接收客户端的连接的分析了zk集群通过监听2181端口,通过NIO的方式来等待客户端的连接,这篇文章我们主要分析一下看看客户端如何去和zk集群创建连接的客户端的入口类是org.apache.zookeeper.ZooKeeper, 如果大家通过原生的代码使用zookeeper客户端和服务段建立连接的时候,就是首先需要实例化一个Zookeeper对象,然后传递zk集群的节点ip和端口号,设置超时时间,以及监听器public Zo..
原创
发布博客 2020.08.25 ·
456 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper集群如何接收客户端的连接的

截止到目前为止, zookeeper集群启动时如何进行leader选举以及正常启动、故障恢复时zookeeper如何去恢复内存数据, 如何去leader中同步数据,这两大点都已经分析完了,感兴趣的小伙伴可以去看一下之前的文章手把手带你撸zookeeper源码系列目录接下里该分析客户端连接集群的代码了,如: 客户端如何和客户端建立的连接、会话是如何创建的、zk集群如何去维护会话的、客户端的创建、删除、修改、查询等操作、持久化节点、临时节点、以及监听通知如何实现的、写请求如何转发到leader上然后lea.
原创
发布博客 2020.08.22 ·
326 阅读 ·
0 点赞 ·
0 评论

记不住的四种位运算

运算表符号 描述 运算规则 & 与 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 | 或 1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0 ^ 异或 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0
原创
发布博客 2020.08.20 ·
95 阅读 ·
0 点赞 ·
0 评论

深入java底层源码, 揭开ArrayList神秘面纱

一般情况下,当我们想用一个List集合时,首先想到的是ArrayList,其次就是LinkedList,但是我相信大部分小伙伴在项目中用到的ArrayList远比LinkedList,为什么呢?什么样的情况下优先选择ArrayList,什么样的情况下优先选择LinkedList? 哪种数据结构在什么样的条件下的性能更好?以及为什么在阿里开发规范中对集合要强调必须要初始化大小呢?还有为什么在并发情况下去remove数据的时候会出现ConcurrentModificationException呢?等等,我们将先
原创
发布博客 2020.08.19 ·
100 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper集群之间如何进行ping探活机制

上两篇文章手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(一)手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(二)已经详细的把zookeeper故障重启时如何恢复数据给详细的剖析完了,这篇文章我们继续剖析一下在leader和follower数据同步完成之后,leader还会继续做哪些事情,以及如何实现ping机制的在上篇文章讲到leader同步完数据之后,会发送一个UPTODATE的通知给follower,表示数据已经同步完毕,fo
原创
发布博客 2020.08.16 ·
549 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(二)

上篇文章手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(一)分析了在zookeeper启动的时候从本地日志文件中如何恢复数据,先获取快照文件中的数据然后反序列化到内存中,接着再对日志文件进行增量逐条回放,本篇文章详细分析一下在启动的时候如何和leader建立连接,然后从leader中如何同步数据到本地内存的如果当前存在一个zookeeper集群,现在不管是对原有的zookeeper进行重启,还是新加入一台zookeeper节点,此时zookeeper要么是obse...
原创
发布博客 2020.08.15 ·
624 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(一)

在之前的文章手把手带你撸zookeeper源码-zookeeper中follower启动的时候会做什么?有分析过一部分follower启动时会调用syncWithLeader(zxid)方法, 此时方法会从leader中同步数据,但是回过头来看,感觉分析的不够深入,所以准备单独拉取出来一篇文章,来分析一下当follower启动时如何恢复数据的其实当一个zookeeper进程启动加入现有集群时,会有以下几种情况:1、当前zookeeper是新增的服务器, 然后作为observer角色加入集群...
原创
发布博客 2020.08.13 ·
966 阅读 ·
1 点赞 ·
0 评论

Java基础面试题看过来

原创
发布博客 2020.08.09 ·
43 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper的sessionId生成策略和follower调用链初始化

继上篇文章手把手带你撸zookeeper源码-zookeeper中follower启动的时候会做什么?,分析到了follower启动之后和leader建立了链接,并且把自己本地最新的zxid发送给leader,然后leader根据follower发送过来的zxid来判断如何把最新的数据同步给follower今天继续分析Learner.syncWithLeader()方法中的代码, 首先我们来看下面的一行代码zk.createSessionTracker();看字面意思是创建会话跟踪器,..
原创
发布博客 2020.08.09 ·
377 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper中follower启动的时候会做什么?

上篇文章手把手带你撸zookeeper源码-zookeeper通信序列化协议,简单说了一下zookeeper的jute序列化通信协议,写了一个简单的demo,以及如何避免粘包和拆包的,也顺带写了一点有关dubbo的序列化协议和如何自己自定义序列化协议回到上上篇文章手把手带你撸zookeeper源码-zookeeper确定好角色后会做什么?主要分析了zookeer中leader启动的时候都会做些什么事,分析到了leader启动的时候会对server.x=zk1:2888:3888,中的2888端...
原创
发布博客 2020.08.08 ·
3131 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper通信序列化协议

上篇文章分析到了zookeeper集群之间通信时用到了jute序列化协议,本篇文章来简单了解jute如何序列化和反序列化以及如何解决粘包拆包的问题的今天上网看了一下查了一下zookeeper jute,其实网上也有很多这方面的资料,我就简单的写了一个demo先来展示一下,最后给大家一点自己如何自定义传输协议,如何解决粘包拆包的问题...
原创
发布博客 2020.08.05 ·
203 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper确定好角色后会做什么?

接上文手把手带你撸zookeeper源码-zookeeper启动(五)leader选举投票归档-确认当前zk服务的角色上篇文章主要分析了leader选举的最终阶段,根据zk集群的相互投票之后,进行投票归档,然后判断某个zk获得投票数是否大于集群数量的一半,如果未超过一半,则继续下一轮的投票选举,如果有某个zk有超过一半的选票,则leader确定,然后其他zk服务则为follower或者observer不知道大家有没有搭建过三台zk的集群,如果你是按照myid从小到大依次启动三台服务器,一般情况下都.
原创
发布博客 2020.08.03 ·
3201 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper启动(五)leader选举投票归档-确认当前zk服务的角色

接上文手把手带你撸zookeeper源码-zookeeper启动(四)leader选举投票发送以及响应本篇文章主要来看看当每个zk接收到其他服务器发送过来的投票之后,接下来会怎么处理 //投票归档 recvset.put(n.sid, new Vote(n.leader, n.zxid, n.electionEpoch, n.peerEpoch)); if (termPredicate(rec..
原创
发布博客 2020.08.02 ·
1201 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码-zookeeper启动(四)leader选举投票发送以及响应

上篇文章手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)写了zookeeper集群之间如何基于socket建立的连接,连接建立完毕之后,接下来就是开始发送投票和接收投票,然后对投票结果进行整理,最终选定哪台服务器是leader,哪个是follower本篇文章我们接着看一下投票数据是如何发送出去的,以及如何接收到其他zk服务器发送过来的投票数据结合上篇文章所讲,我们知道,QuorumCnxManager.toSend()...
原创
发布博客 2020.08.02 ·
368 阅读 ·
0 点赞 ·
0 评论

手把手带你撸zookeeper源码系列目录

手把手带你撸zookeeper源码(前言) 手把手带你撸zookeeper源码(配置文件) 手把手带你撸zookeeper源码(如何启动一个zookeeper服务) 手把手带你撸zookeeper源码-从源码角度分析zookeeper启动时都做了什么? 手把手带你撸zookeeper源码-zookeeper启动(二) 手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的) ...
原创
发布博客 2020.08.01 ·
464 阅读 ·
0 点赞 ·
1 评论

手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)

接上文手把手带你撸zookeeper源码-zookeeper启动(二)结合上两篇文章写的zookeeper启动时,都干了些什么,画了一张图,把涉及到的组件都在图中给展示出来,大家可以参考一下在这个图片中把之前写的源码中的所有组件都给包括了,以及每个组件是做什么用的,接下来我们会一步步的去梳理整个zookeeper源码,也会把这张图给进一步完善,最终形成一个完整的zookeeper架构原理图的上篇文章最后,我们知道调用到QuorumPeer.start方法中,在这个方法中做了好几件事,..
原创
发布博客 2020.08.01 ·
511 阅读 ·
1 点赞 ·
1 评论

手把手带你撸zookeeper源码-zookeeper启动(二)

接上文手把手带你撸zookeeper源码-从源码角度分析zookeeper启动时都做了什么?先说点题外话,因为我想着把整个zookeeper源码分析作为系列文章来写,所以每一篇文章只会分析一部分源码,而不是长篇大论去粘贴源码,然后哪个方法进入哪个方法,然后一带而过。而是抓住主线,然后去分析主要方法,用我的理解,用通俗的语言通过书面的形式表达出来,希望对想学习zookeeper源码的你有帮助先抛出个目标,本篇文章主要写一下zookeeper集群之间是如何建立连接的?先贴一下上文最后的一段代码,有.
原创
发布博客 2020.07.29 ·
302 阅读 ·
3 点赞 ·
0 评论
加载更多