一帆磨砺

生活所迫,一叶孤舟

0%

写在开头

  1. 建议先学习不使用Netty的网络编程(即Java内置的Socket/IO/NIO),这样才能更好的学习Netty
  2. NIO学习推荐java-nio-all,不过有几篇还没有人翻译,需要看原文学习
  3. 代码可以从GitHub上直接下载netty-in-action
  4. 整本书的内容是针对Netty的学习,不同的业务场景中Netty的用法未涉及,最后两个章节的案例研究更多的是讨论选择Netty的业务背景,对于Netty的使用细节基本不涉及
  5. 可以的话建议是手动跟着敲一遍,可以加深一些映像
  6. 本书虽然是说实战,但是局限比较大,基本上是相关组件的基本使用,属于入门,推荐通过项目NettyGameServer/vert.x/cim加深熟练度
阅读全文 »

引用链接

  1. RocketMQ定时消息实现原理分析:时序图
  2. RocketMQ 实战(四) - 订阅机制和定时消息:关于correctDeliverTimestamp的理解
  3. 深入了解 RocketMQ 之过滤器:BloomFilter
  4. Bloom Filter概念和原理:BloomFilter
  5. Filter Messages By SQL92 In RocketMQ
  6. RocketMQ源码 — 七、 RocketMQ高可用(2):主从同步时序图

写在开头

  1. 本书存在较多的错误,主要问题是代码片段与文字描述的衔接对不上,并且存在少量的代码注释错误(可能是我看的代码分支与作者看的分支版本不同导致理解产生偏差),但是不能否认这本书的价值,尤其是一些关键地方的逻辑描述,能够帮助减少很多源码阅读理解的时间

  2. 建议以源码阅读为主,如果已经买了,可以同步对照书籍中的文字描述确认自己理解是否正确

  3. 个人已上传RocketMQ(release-4.9.4)DLedger(tag:dledger-0.2.6)带注释版本,部分核心入口已在工程的 ReadME 文档中标注

  4. 建议提前熟悉多线程编码以及异步编码(如Future),其中异步编码建议多练习,在RocketMQ和Dledger中使用较多,如果未能掌握该知识点,则会较难理解整体的流程

  5. 需要提前学习网络编程相关知识,最少也要熟悉Socket NIO编码,未开启DLedger时的主从同步主要依靠 NIO解决

  6. 关键点:NameServer路由管理、消息发送(客户端、Broker端)、消息存储(刷盘、主从同步)、消息消费(客户端、Broker端)、ACL控制、消息轨迹、主从切换(DLedger)

  7. 下方思维导图仅可用作个人回顾,无法作为学习材料(不成系统,仅仅是记录了源码阅读总结,其中DLedger部分的流程图主要参考书中对应流程图)

  8. 发现源码阅读不适合弄思维导图,流程图和时序图时非常合适作为源码阅读的总结,以后不再把代码的细节放到思维导图里了,以后估计是概述+一些关键点描述,然后加上流程图和时序图(本质上是最近几本书的阅读体验产生的总结,阅读源码有个大致的概念,知道大体的框架就可以开始阅读了,把源码的细节展示出来反而会增加理解难度)

    阅读全文 »

写在开头

  1. 不建议购买中文版,有些地方的翻译瑕疵会让你十分难受,让人很难继续读下去
  2. 这本书的内容算是经验总结,如果没有对应的编码经验的话,阅读也会十分难受,如果看不懂,可以先停下去敲一些相关的代码熟悉相关的类,或者跳过也可以,不用死磕在那
  3. 英文不好的同学可以去看Effective-Java-3rd-edition-Chinese-English(如果觉得这种行为和盗版无异良心过不去的同学可以买本英文版/中文版的然后看这个)
  4. 英文还可以的同学建议购买原版书籍Effective Java(第3版)(英文版)
  5. 不推荐购买并阅读中文翻译版本,痛,太痛了(半价买我都觉得亏)
  6. 思维导图就是目录+个人总结

引用博文

  1. 依赖注入的简单理解
  2. 深度理解依赖注入
  3. Deprecate Finalization for Removal
  4. 静态内部类的使用场景
  5. 抽象泄漏(Leaky Abstractions)
  6. JAVA 8 函数式接口( java.util.function 详解)
阅读全文 »

写在开头

  1. 本书难度比较简单,属于实践类,难度不高建议跟随书中代码敲一遍,有兴趣的可以点到源码看一看
  2. 正版定价129,建议京东活动时买入,半价还是可以的
  3. 本书大量的代码案例都是简单的Api使用,原理与源码讲解较少,深入理解需要自己看源码或者搜索相关知识点的博文
  4. 推荐入手,整本书如果代码都跟着敲一遍,预计有10-20个小时的工作量
  5. 下方的思维导图可以用作知识点大纲,有感兴趣的知识点可以额外单独搜索或者阅读对应书中章节细节内容
  6. 多线程相关实践代码可以参考我的练习代码
    阅读全文 »

写在开头

  1. 书中主要内容是源码解读,因为是黑白印刷,阅读体验会有所影响
  2. 书中关于大顶堆/小顶堆/红黑树/管程(Object Monitor/AQS)建议单独拎出来阅读
  3. 并发部分对于没有足够编程经验的同学门槛会有一些高,建议同时搜索相关博文多方参考学习
  4. 因为是源码解读,建议读者先使用相关类做简单的编码demo,可以更容易理解解读内容(最好可以先自己阅读一遍源码),可以先阅读《Java多线程编程核心技术》再来看本书
  5. 因书中主要内容是源码解析,因此不建议作为系统化学习的教材使用,可以用作学习过程中的辅助教材
  6. 打折时推荐入手,原价不推荐
  7. 下方思维导图仅是个人的简单记录,可以用作知识点列表按图索骥的单独去学习,图中无任何具体知识内容
    阅读全文 »

引用参考文档链接

  1. jdk18特性列表
  2. 迁移到JDK18为何写一个空的finalize()方法?
  3. Java-SE 安全编码指南
  4. Finalization对GC的影响

写在开头

  1. 反射核心重新实现,从API的维护成本和性能都有所提升
  2. 互联网地址解析器可自定义
  3. switch针对case覆盖范围和sealed类的检测进行了加强
  4. Finalization标注弃用,因目前仍默认启用,因此迁移成本暂时无变化,后期该特性正式删除后,迁移的成本估计需要仔细评估。
    阅读全文 »

引用参考文档链接

  1. jdk17特性列表
  2. Java 随机数相关 API 的演进与思考(上)
  3. Java 随机数相关 API 的演进与思考(下)
  4. 支持上下文的序列化过滤器,又一次给序列化打补丁

写在开头

  1. 浮点数计算将跨系统平台结果统一,不过float这个坑已经几乎所有人都知道,这个改动即便知道大部分也会遵循之前的安全习惯
  2. switch的匹配模式增强虽然还没开放,但可以直观的看出对简化代码的帮助很大
  3. 密封类sealed将会让多态环境更好控制,避免代码的无序扩张
  4. 反序列化过滤器没有想到使用场景,但是从介绍到demo可以直观的感受到它的重要性,一个是安全性,一个是反序列化过程的可控性
  5. 调用本地方法和操作堆外内存是非常重要的点,只是平时接触和使用的机会太少,这个特性未来能够正式使用一定能绽放精彩
    阅读全文 »

引用参考文档链接

  1. jdk15特性列表
  2. 隐藏类使用案例
  3. UDP通信:DatagramSocket类和DatagramPacket类
  4. Java17新特性初探

写在开头

  1. ZGC和Shenandoah 的可正式投产比较重要
  2. 隐藏类的使用场景不多,但是对于agent和平台框架开发人员来说比较重要
  3. 文本块的正式开放使用,喜大普奔,相较于以前的大文本操作用起来是真的舒服很多
    阅读全文 »

引用参考文档链接

  1. jdk14特性列表

写在开头

  1. switch已经可以正式使用,用起来很爽
  2. 官方开放了API可以访问堆外的外部内存,这个特性看起来在大数据领域可以发挥很大的作用
  3. 空指针异常信息的细节增强非常方便开发人员的本地开发过程,大大的简化了本地调试的工作
    阅读全文 »