Ink's Blog

Less is more

AtomicInteger 源码阅读

利用无锁 CAS 来提升性能

预备知识:CASAtomicInteger 的核心都是基于 CAS 的,那么 CAS 是什么呢?让我们先从悲观锁和乐观锁说起。 悲观锁和乐观锁一般来说乐观的人对生活总是充满希望,遇到任何事情都会说 everything will be ok! 而悲观的人呢,总是会假定事情会想着不好的方向发展,做最坏的打算。 对应到程序中的并发情况,也就有两种锁,悲观锁和乐观锁。 悲观锁总是会假设最坏的情况,......

Go 语法要点

个人笔记

最近的工作需要写一个 Go 的项目,所以准备先过一下《Go 语言圣经》这本入门书籍,本篇内容就是一篇摘抄,记录下 Go 不同于其他语言的特性和容易忘记的语法,后面可以直接翻出来使用。 1、main 包下的 main 函数是程序入口,注意 package 必须是 main 1234567package mainimport "fmt"func main() { fmt.Print......

「译」当调用 Kafka Consumer 的 poll 方法时发生了什么?

Kafka Consumer 初始化和首次拉取数据的原理

最近看到一篇 Kafka Consumer poll 源码解析的外文讲的比较清晰透彻,这里翻译学习一下,原文:What happens when you call poll on Kafka Consumer? Consumer 使用示例只需以下几步就可以使用 kafka Consumer: 创建 consumer 并配置 订阅 topics 以某种方式循环拉取消息 示例代码如下: ......

ThreadLocal 详解

今天来深入研究一下 JDK 中的 ThreadLocal 类。ThreadLocal 由 Java 界的两个大师级的作者编写,Josh Bloch 和 Doug Lea。Josh Bloch 是 JDK5 语言增强、Java集合(Collection)框架的创办人以及《Effective Java》系列的作者。Doug Lea是 JUC(java.util.concurrent) 包的作者......

Effective Java 读书笔记:Item 1(续)

服务提供者框架

上一篇 Effective Java 读书笔记:Item 1 中留了一个小坑,Effective Java 这本书里在谈到静态工厂方法的第五个优点时,是这样写的:A fifth advantage of static factories is that the class of the returned object need not exist when the class contai......

Effective Java 读书笔记:Item 1

考虑使用静态工厂方法替换构造方法

几年前看过 Effective Java 第二版,当时看的是一知半解,就被我放下了,最近发现 Effective Java 都出了第三版了,涵盖到了 Java 9 的内容,准备重新过一遍,顺便撸一点读书笔记吧。 首先来看 Item 1: 考虑使用静态工厂方法替换构造方法 通常我们创建对象的方式是调用类的构造函数,其实还有一种更优雅的方式是通过静态工厂方法创建对象,比如下面的 Bool......

如何学习开源项目?

Winter is coming.对于工程师来说,度过寒冬的方法一个是抱团取暖,所以才有 996.icu。但更重要的是提升自己的硬实力,而学习开源项目,就是自我提升的一大利器。 没有开源的上古时代幻想一下上古时代程序员小菜,想要实现个东西,找了半天发现好像没有人做过。 哦,可能也没地方可找-。- 那就只能自己做喽,吭呲吭呲大半年,上线收工。 想的美,工作才刚刚开始! 小菜,客户又遇到问题......

「剑指 Offer」面试题 27:二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 分析一下题目,二叉搜索树,说明根结点的值大于左结点的值,小于右结点的值。然后说要将二叉搜索树转换成一个排序的双向链表,看到排序,又想起了二叉搜索树的结构特点,自然可以想到用左序遍历的方式遍历二叉树就可以得到排序的结果。最后说明不能创建任何新的结点,就是说不能 new 一个对......

聊聊这几年的工作经历

从 15 年毕业算起,不知不觉已经快要工作 4 个年头了,不久前刚从上一家公司离职,趁着中间这几天难得的空档期,回忆一下自己这几年的工作经历吧。 关于找工作这件事记得刚毕业的时候,找工作那叫一个难字了得。因为我大学鬼使神差的被调剂到了数学专业,这个专业如果不考研的话可能最对口的工作就是数学老师了,而考研的一般都会向金融方向发展,原因嘛你懂得,其实我们学院的学习氛围还是不错的,但还是形成了......

「剑指 Offer」面试题 26:复杂链表的复制

输入一个复杂链表(每个结点中有结点值,以及两个指针,一个指向下一个结点,另一个特殊指针指向任意一个结点),返回结果为复制后复制链表的 head。 首先理解题意,这里说的复杂链表,说的是单链表,链表是一种比较简单的数据结构,但涉及到链表的操作却并不简单,原因就是因为链表里面有很多指针操作,一不小心可能就指错了或者是链表断了。 其实个人认为在做链表的操作只要弄清楚一点就容易很多,那就是 Ja......