2019年2月下旬笔者的有一本新书——《深入理解Kafka:核心设计与实践原理》上架,延续上一本《RabbitMQ实战指南》的惯例,本篇博文用来记录现在发现的一些笔误,一是给购书的朋友一个参考,以防被笔误所迷惑;二是提供一个记录笔误的地方,方便再次印刷修改之用,这样也能进一步的完善这本书。

本书出版之前已校稿多次,也邀请了专业的技术小伙伴进行校稿,但还是会有漏网之鱼,还望各位海涵。(本文长期更新)

小伙伴们也可以提供一些新发现的笔误之处,这里都会记录,为了鼓励大家,发现笔误的小伙伴会在下一次印刷的致谢中留下大名。具体形式参考《RabbitMQ实战指南》笔误及改进记录的做法。


目前致谢内容如下:

第六次印刷

  1. 11页 第3行“示例中选用按照包的是”改为“示例中选用的安装包是”。(by: 球)

第五次印刷

  1. 9页 中间“initLimit=10”上面的“# 投票选举新leader的初始化时间”改为“# 允许follower连接并同步到leader的初始化连接时间,以tickTime的倍数来表示”。 (by: BertYoung)
  2. 42页 倒数第二段中 2 个的 acks 改为 retries。【注意是 2个acks】(by: 汤乎乎、CodingWorkers)
  3. 173页 第一段“那么一个字节长度的 Varints 最大只能表示 64”中的64改为63,下面有关65的说辞也改为64:(by: asd_1234555)

第四次印刷

time:2020-04

  1. 128页 第2段(1)中 CreateTopicRequest 改为 CreateTopicsRequest,即:加一个s;(3)中 CreateTopicRequest改为 CreateTopicsRequest, CreateTopicResponse 改为 CreateTopicsResponse, 即:都加一个s。
  2. 274页 第二张图中下面的标注 Consume-Transform-Producer 应该改为 Consume-Transaform-Produce,不过这里是图片,可以直接把这个文字裁剪掉。下面的图例中标注了“consume-transform-produce结构”,所以裁剪掉也并不影响整体。

第三次印刷

time: 2019-05

  1. 20页 代码清单2-1 initConfig()方法中第5行的properties应该改为props。
  2. 62页 第一段第3行最后的 ConsumerRecord<K,V> 改成 ConsumerRecords<K,V> ,即加个s。
  3. 65页 最后第二段最后一行中“重复消费的发送”改为“重复消费的发生”,即把【发送】改为【发生】
  4. 73页 第二段第二行中“查到不到”改为“查不到” (by: 陈)
  5. 91页 第二段代码中 offsets.clear() 这一行删掉 (玩图思瑞佛)
  6. 109页 最后一段最后一行,brokerArray变量的值为[0,1,2,3,4,56,7,8],5 6中间少了个逗号。
  7. 160页 最后一段最后一行,把“基架”改为“机架”
  8. 180页 5.3节第二段最后一行,【对应地可以增加或缩小索引项的密度】改为【对应地可以缩小或增加索引项的密度】,即将增加和缩小的位置替换。
  9. 192页 第一段第二行中参数【log.index.interval.bytes】改为【log.index.size.max.bytes】
  10. 211页 倒数第二段第二行 【timeMs=1ms】改为【timeMs=1s】
  11. 364页 最后的 【 } else { 】 改为 【 } else if (ttl < 0) { 】 (by: 虚怀若谷)
  12. 400页 倒数最后一段第二行 把 6 改成 5 。

第二次印刷

time: 2019-03

  1. 57页第二段代码里面将“ProtostuffDeserializer.class.getName”改为“CompanyDeserializer.class.getName” (by: Snow)
  2. 64页 代码中“comsumed offset”改为“consumed”。(by: 默然)
  3. 94页 6.connections.max.idle.ms中的“关闭限制的连接”改为“关闭闲置的连接”。(by: bugskiller_cn)
  4. 104页第二段倒数第二行最后的topic.1_2应该改为topic_1.2。 (by: null)
  5. 124页最上面2个操作zk的步骤中 rmr和delete的位置互换。(by: bugskiller_cn)
  6. 187页最后一行,将日志分段2加入deletableSegments,改为“也”。(by: djdsjh)
  7. 203页续表中的第3行nullable_bytes的描述:“…,其余情况同nullable_bytes”,此处应该为“其余情况同bytes”。(by: 小斌斌)
  8. 288页最后一段的最后一行的"follower3"应该改为“follower2”。(by:程序猿)
  9. 298页第6段开头“主读从写”改为“主写从读”。

改进:在12页中1.3节,有些读者会在kafka单机情况下创建副本因子为3的主题,结果显而易见的会出错,如果看懂第1.1节的话在这里是没有问题的。不过为了照顾初学者,在下一次印刷时会在1.3节的第二段最后加上一句:(Kafka集群模式下,broker数为3)


第一次印刷

time: 2019-01
笔误记录:

  1. 第32页的注意中“如果key为null,那么计算……”中间加一句,改为“如果key为null并且有可用分区时,那么计算得到的……” (by:wangfeiyang12345)
  2. 第43页第二段(就一行)中“关闭限制的连接”改为“关闭闲置的连接”。(by: 天蚕变)
  3. 第55页第3行,方法应为deserialize,不是serialize。(by: gyzhs20)
  4. 第93页中“2. fetch.max.bytes 第一行中”应该与fetch.min.bytes对应。(by:Solove‘俊)

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

《深入理解Kafka:核心设计与实践原理》笔误及改进记录相关推荐

  1. 《RabbitMQ实战指南》笔误及改进记录

    2017年12月上旬笔者的一本新书--<RabbitMQ实战指南>上架,里面的校稿都是自己独自完成的,一共进行了15遍,但还是会有漏网之鱼.本篇博文用来记录现在发现的一些笔误,一是给购书的 ...

  2. 《RabbitMQ 实战指南》第五章 RabbitMQ 进阶(下)

    <RabbitMQ 实战指南>第五章 RabbitMQ 进阶(下) 文章目录 <RabbitMQ 实战指南>第五章 RabbitMQ 进阶(下) 一.持久化 二.生产者确认 1 ...

  3. rabbitmq实战指南_RabbitMQ之脑裂

    点击上方蓝色字体,选择"设为星标" 9 10 本文总结<RabbitMQ实战指南>网络分区章节,并亲自实践才有这篇文章,手动处理章节详细记录了操作过程中的注意事项.如果 ...

  4. 《RabbitMQ 实战指南》第四章 RabbitMQ进阶(上)

    <RabbitMQ 实战指南>第四章 RabbitMQ进阶(上) 文章目录 <RabbitMQ 实战指南>第四章 RabbitMQ进阶(上) 一.简介 二.消息何去何从 1.m ...

  5. 《RabbitMQ 实战指南》第三章 客户端开发向导

    <RabbitMQ 实战指南> 文章目录 <RabbitMQ 实战指南> 一.简介 二.连接 RabbitMQ 三.使用交换器和队列 1.exchangeDeclare 方法详 ...

  6. 《RabbitMQ 实战指南》第二章 RabbitMQ 入门

    <RabbitMQ 实战指南> 文章目录 <RabbitMQ 实战指南> 一.相关概念介绍 1.生产者和消费者 2.队列 3.交换器.路由键.绑定 4.交换器类型 5.Rabb ...

  7. 《RabbitMQ 实战指南》第一章 RabbitMQ 简介

    <RabbitMQ 实战指南>第一章 RabbitMQ 简介 文章目录 <RabbitMQ 实战指南>第一章 RabbitMQ 简介 一.什么是消息中间件 二.消息中间件的作用 ...

  8. RabbitMQ实战指南之RabbitMQ架构及运转流程

    相关概念 RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消息传递的过程想象成∶ 当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,Rab ...

  9. php mq死信队列,【RabbitMQ 实战指南】一 死信队列

    1.死信队列 DLX,全称为 Dead-Letter-Exchange,可以称之为死信交换器.当消息在一个队列中变成死信(dead message)之后,它能被发送到另一个交换器中,这个交换器就是DL ...

最新文章

  1. 古代password
  2. 通过访问列表实现MAC地址绑定,实现包过滤
  3. 简单web服务器学习总结
  4. 20张图表达程序员的心酸
  5. 使用Azure人脸API对图片进行人脸识别
  6. 应用工具 .NET Portability Analyzer 分析迁移dotnet core
  7. 生活 list.php,list.php
  8. 网络协议:TCP拥塞控制
  9. 【机器学习-西瓜书】八、集成学习:Boosting
  10. ionic build android release,ionic build android -release运行报错
  11. 转iOS深拷贝与浅拷贝 附NSSet讲解
  12. 关于ROS的设置问题
  13. mqtt测试工具(持续更新...)
  14. 高中计算机会考操作题程序设计,高中信息技术算法与程序设计题库(含答案)
  15. linux识别riser卡,一种应用在GPU服务器中可灵活配置的Riser卡的制作方法
  16. 沉迷于网络的人数_一个沉迷于追求的搜索者
  17. 移动硬盘坏点测试软件,移动硬盘坏道检测工具
  18. win10无限重启_系统更新后无限重启怎么办?
  19. 已解决ERROR in static/js/vendor.4925c830bef16dced0c0.js from UglifyJs Unexpected token: name (i)
  20. 持续精进——我的2017年终总结

热门文章

  1. FutureTask源码
  2. emacs python plugin_Windows上配置Emacs来开发Python及用Python扩展Emacs
  3. python实时获取子进程输出_Python 从subprocess运行的子进程中实时获取输出的例子...
  4. hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?
  5. 200924阶段一C++STL
  6. 【工具使用系列】关于 MATLAB 有限元分析,你需要知道的事
  7. python-ConfigParser模块【读写配置文件】
  8. android升级SDK后,XML graphical layout无法预览的解决
  9. 利用 Cosole 来学习、调试JavaScrip
  10. HYSBZ - 1026 windy数(数位dp)