我是靠谱客的博主 害羞汉堡,最近开发中收集的这篇文章主要介绍学习之路手记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

  1. 首先,英语基础好的啃原文吧https://www.microsoft.com/en-us/research/uploads/prod/2016/12/paxos-simple-Copy.pdf
  2. 参考《从Paxos到Zookeeper 分布式一致性原理与实践》这本书中 page 34中的一些理论
  3. https://www.zhihu.com/question/19787937 中 GRAYLAMB的回答
  4. 理解算法的一些要点
    • 算法分为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

  1. 【分片】
    • MySQL的分片(一)——分布式数据库概述
    • MySQL的分片(二)——MySQL分片

5.Redis

  1. 【bitMap】
    • 一看就懂系列之
      详解redis的bitmap在亿级项目中的应用
    • 因为BitMap,白白搭进去8台服务器
  2. Lua脚本在redis分布式锁场景的运用

6.Tool

git

Git push 常见用法

7.算法

雪花算法(SnowFlake)Java实现

职业生涯

  1. 工作6年,失业19天

最后

以上就是害羞汉堡为你收集整理的学习之路手记1.java2.Netty3.分布式4.MySql5.Redis6.Tool7.算法职业生涯的全部内容,希望文章能够帮你解决学习之路手记1.java2.Netty3.分布式4.MySql5.Redis6.Tool7.算法职业生涯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部