我是靠谱客的博主 害羞汉堡,最近开发中收集的这篇文章主要介绍学习之路手记1.java2.Netty3.分布式4.MySql5.Redis6.Tool7.算法职业生涯,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
目录
- 1.java
- IO/NIO
- Java8+
- concurrent
- 2.Netty
- 3.分布式
- 技术组件、功能
- avro
- paxos
- Disruptor
- 线程模型
- HELIX
- 4.MySql
- 5.Redis
- 6.Tool
- git
- 7.算法
- 职业生涯
1.java
IO/NIO
Java面试常考的 BIO,NIO,AIO 总结
java.nio.Buffer 中的 flip()方法
NIO学习(八):Java NIO的Buffer的slice和asReadOnlyBuffer方法以及链式写法
ByteBuffer源码分析
Java8+
理解、学习与使用 JAVA 中的 OPTIONAL TODO 没看完
concurrent
【Java并发之】BlockingQueue
java中Condition类的详细介绍(详解) TODO 后半部分aqs那里还没看
Java并发编程之Phaser类
2.Netty
Netty channelRegisteredChannelActive—源码分析 TODO 没看完
3.分布式
技术组件、功能
解读数据传输DTS技术架构及最佳实践
avro
关于Avro schema理解
paxos
- 首先,英语基础好的啃原文吧https://www.microsoft.com/en-us/research/uploads/prod/2016/12/paxos-simple-Copy.pdf
- 参考《从Paxos到Zookeeper 分布式一致性原理与实践》这本书中 page 34中的一些理论
- https://www.zhihu.com/question/19787937 中 GRAYLAMB的回答
- 理解算法的一些要点
- 算法分为proposer和acceptor两个角色(以及最终的learner),proposer的核心思想是尽快达成选举一致(而不是把自己选为主)。过程分为prepare和accept
- 整个过程可以理解为,在prepare阶段,在一次选主过程中(分布式的很多场景都可以通过选主解决,选主可以避免单点故障,也可以保证一致性)最开始所有proposer携带<k,v> 其中k是编号,v是提案。那么形象而言是,携带<时间戳A,空> 向acceptor发起一次prepare。假设此时
- acceptor没有接受过任何人的prepare请求,那么直接返回<时间戳A,空>
- acceptor接受过<时间戳1,serverId 1> <时间戳2,serverId 2> <时间戳3,serverId 3> 且 时间戳1、2、3中最大的是时间戳3,且时间戳3小于时间戳A。则响应<时间戳A,serverId 3>
- acceptor接受过<时间戳1,serverId 1> <时间戳2,serverId 2> <时间戳3,serverId 3> 且 时间戳1、2、3中最大的是时间戳3,且时间戳3小于时间戳A。则拒绝响应
- 在accept阶段,假设某个proposer接收到了超过半数acceptor的响应,则可以发起一次accept。其中携带的<k,v>是 <时间戳A,serverId 2 > (serverId2是响应中max时间戳对应的serverId,但存在一种情况,acceptor中的所有响应中都没有serverId,则此时携带自身的serverId(即没有发现任何已存在的其他候选人,则自己成为候选人))发起一次accept 此时
- acceptor没有对 时间戳> 时间戳A的任何prepare请求响应过,则直接接受这次提案,返回ack
- 当然,在proposer从得到prepare响应到发起accept请求这顿时间里,可能acceptor已经接收到别的时间戳更大的请求了,那么此时,acceptor将拒绝这次proposer的请求。
- 假设有半数acceptor都ack了 <时间戳A,serverId 2 > 这一次请求,则serverId 2 被选为主,将会主导后续的工作,包括learning等。否则,proposer将发起下一次prepare(更大的时间戳)(有发生 活锁 的可能)
- learing 过程 TODO
Disruptor
高性能队列——Disruptor
线程模型
Actor的原理
HELIX
Apache Helix - Quick Start
Helix Javadoc
Apache Helix / Release 0.6.8 / Tutorial
4.MySql
- 【分片】
- MySQL的分片(一)——分布式数据库概述
- MySQL的分片(二)——MySQL分片
5.Redis
- 【bitMap】
- 一看就懂系列之
详解redis的bitmap在亿级项目中的应用 - 因为BitMap,白白搭进去8台服务器
- 一看就懂系列之
- Lua脚本在redis分布式锁场景的运用
6.Tool
git
Git push 常见用法
7.算法
雪花算法(SnowFlake)Java实现
职业生涯
- 工作6年,失业19天
最后
以上就是害羞汉堡为你收集整理的学习之路手记1.java2.Netty3.分布式4.MySql5.Redis6.Tool7.算法职业生涯的全部内容,希望文章能够帮你解决学习之路手记1.java2.Netty3.分布式4.MySql5.Redis6.Tool7.算法职业生涯所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复