My Blog

「is null evil?」

volatile-1-一道字节面试题的考验

0.接受实践检验 实践是检验真理的唯一标准这句话在哲学上未必站的住脚,但经由实践或者实际问题检验自己对理论的理解,却是非常必要和重要的。近期看了不少JMM及volatile相关的东西,觉得大体明白了。无意间看到leetcode上网友发的一道字节面试题,方知远矣。 1.字节面试原题 为什么int a = v.s 会影响线程1的正常停止? 1 2 3 4 5 6 7 8 9 10 11 ...

基于IPA的英语发音入门资源及方法索引

0. 声明   鄙人码农一个,非英语专业,水平有限,仅鉴于程序员的资料检索收集能力,试分享给有缘人,唯恐误人子弟或导人入歧途。   资料多在墙外,xxx,你懂的。 1. 目的和背景   最近媳妇让念胎教故事,我按自己喜好,找了点英文小短篇,不想屡被媳妇讥讽,语音太差,味同嚼蜡。说的我无法反驳,又不无意兴阑珊。但转念一想,这不刚好是我纠正提升自己发音的一个契机吗?我最近也刚好想提升一下...

java同步机制之thread模型-part3

1.green threads 所谓绿色线程或者虚拟线程,是指由虚拟机或者程序库自行实现。java1.2(含)以前使用的即为绿色线程,1.3之后切换为native 线程,即底层操作系统线程 In computer programming, green threads or virtual threads are threads that are scheduled by a run...

java同步机制之lock(基于AbstractQueuedSynchronizer)-part2

[toc] 0.从问题出发 1 为什么要设计AbstractQueuedSynchronizer(后面简称AQS)而不直接封装利用(比如pthread_mutex_lock/pthread_cond_wait)? 2 AQS如何实现公平竞争? 3 ...

java同步机制之synchronized与lock-part1

[toc] 0.从问题出发 1 synchronized vs lock,既生瑜,何生亮? 2 synchronized是如何实现的? 3 所谓对象与monitor关联,是什么意思? 4 synchron...

zookeeper-4-源码分析

源码 基于3.7.0 类的关系 执行逻辑 QuorumPeer类从逻辑上完备代表了zookeeper集群的一个节点,可以完整实现zab协议,以及对应节点角色的消息处理流程。执行逻辑的设计上充分利用了线程,BlockingQueue 1)不同线程处理zab不同阶段的重要逻辑 2) 通过blockingqueue作为消息总线,解耦并保证消息有序性 集群如何启动? 根据z...

zookeeper-3-zab协议

zab协议 zab是什么? 全名:zookeeper atomic broadcast protocol。如果说zookeeper是一个软件系统,那么zab可谓系统设计文档,描述和定义了系统功能,尤其内部逻辑流程,状态转换,是zookeeper的中枢神经系统 为什么要有zab? 众所周知,zab之前已有paxos,但是paxos晦涩难懂,各种实现理解不一致,且直接使用也不能满足系统设...

zookeeper-2-搭建本地docker集群

zookeeper-2-搭建本地docker集群 可以通过已有或者官方的dockerfile一键compose整个zk集群,方便把玩 docker source 此处采用的是apache zookeeper官方dockerhub镜像,版本3.7 Docker Official Images compose文件:stack.yml 1 2 3 4 5 6 7 8 9 10 11 12...

zookeeper-1-基本概念

zookeeper-1-基本概念 初次接触zookeeper大概是在2015年左右,一直都没有亲自把玩过。现如今大家都转向etcd等新鲜玩意了,才回过头来到故纸堆里挖掘挖掘,大概是因为自己喜欢历史 闲话少说,要了解zookeeper,首先要知道它提供哪些功能,用来干嘛的,然后再了解它的内部原理,是如何实现所提供的功能的 以下主要参考: Apache ZooKeeper Tutoria...

eureka集群参数配置与基于tcpdump的行为观测

1.背景 ​ Eureka作为SpringCloud全家桶中的注册中心,一旦挂了,依赖它的微服务就无法找到彼此而不可用,可谓关键组件。因此有必要探究一下它的基本原理和配置,不至于救火的时候两眼一抹黑。 ​ 其大体作用和交互可参考:eureka详解,下图即引用自该🔗。 ​ 本文主要关注: 高可用集群配置 利用tcpdump进行行为...