Back to
top
杨挺的博客 | Tommy's Blog

Tommy Yang’s Blog

一生想做浪漫技客

ArrayBlockingQueue 源码详解

"ArrayBlockingQueue"

BlockingQueue 和 BlockingDeque 内部实现分析 BlockingQueue 介绍 BlockingQueue 继承自 Queue 接口,下面看看阻塞队列提供的接口; public interface BlockingQueue<E> extends Queue<E> { /** * 插入数据到队列尾部(如果立即可行且不会...

深入理解 JVM(一)

"JVM 内部结构"

深入浅出 JVM 该篇主要是深入理解 Java 虚拟机-第二版的读书笔记总结 - JVM 内部结构。 目录 运行时数据区域 垃圾回收算法 垃圾收集器 运行时数据区域 线程私有区域 程序计数器 Java 虚拟机栈 本地方法栈 线程共享区域 Java 堆 方法区...

开源项目 JavaInterview 分享

"开源快乐,一起进步"

项目地址; 如果觉得有一丝丝的帮助,希望大家给个 star 鼓励以下;同时也希望大家多多 fork,一起加入进来。 为什么选择做这个开源项目 首先,希望提高自己;因为选择做这个,自己肯定就会花时间去提高自己的技术,多看技术书籍,多在项目中进行实践。 其次,想让自己坚持做一件有意义的事情;因为我想在 Github 上靠自己的努力维护一个万级别 star 的项目,我会一直努力去做好这件事情。...

Google API 初探

"如何获取凭证"

Goole API 如何获取凭证 该篇主要介绍我们如果想使用 google api,我们需要如何去获取凭证,具体步骤如下。 google 账户创建 浏览器输入 https://google.com。 点击右上角的 Sign In 按钮。 点击下方的 Create account 按钮。 如下图一,选择 To ma...

值得大家去瞅一瞅的 Github 学习项目

"没事的时候多看看,提高自己"

介绍 今天主要跟大家分享一些 Github 上值得去学习学习的项目,特别是刚毕业,或者在校大学生等需要快速进步的同学们更应该去看看。 JavaInterview 最全的Java技术知识点,以及Java源码分析; Java 面试总结和面试题目分享。 CS-Notes 分享 Tech Interview Guide 技术面试必备基础知识、Leetcode 题解、Java、C++、Python...

史上最全 Java 中各种锁的介绍

"各种锁的介绍"

锁的分类介绍 乐观锁与悲观锁 锁的一种宏观分类是乐观锁与悲观锁。乐观锁与悲观锁并不是特定的指哪个锁(Java 中也没有那个具体锁的实现名就叫 乐观锁或悲观锁),而是在并发情况下两种不同的策略。 乐观锁(Optimistic Lock)就是很乐观,每次去拿数据的时候都认为别人不会修改。所以不会上锁。但是如果想要更新数据, 则会在更新之前检查在读取至更新这段时间别人有没有修改过这个数据。如果...

Mac OS/Linux命令总结

命令总结

Mac OS/Linux命令查询网络端口占用情况 netstat 命令 netstat -an | grep 50051 50051 可以替换成你需要查询的端口。 lsof 命令 通过 list open file 命令可以查看到当前打开文件,在 linux 中所有事物都是以文件形式存在,包括网络连接即硬件设备。 lsof -i:50051 -i 参数表示网络连接,:8...

深入浅出kafka(一)

kafka内部结构介绍

kafka的几个重要概念 Broker:消息中间件处理结点,一个 Kafka 节点就是一个 broker,多个 broker 可以组成一个 Kafka 集群; Topic:一类消息,例如 note impression 日志、 click 日志等都可以以 topic 的形式存在,Kafka 集群能够同时负责多个 topic 的分发; Partition:topic 物理上的分...

二叉树的操作

"Operation of Binary Tree"

二叉树的操作 二叉树的相关介绍,这是之前在学习二叉树的遍历方式的时候的相关总结,有需要的可以看一看。现在我们主要说说二叉树的操作:包括创建二叉树(在二叉树的介绍中有提到),添加结点,删除结点,清空二叉树,获取二叉树的高度,获取二叉树的父节点,获取二叉树的结点数等。下面我们将通过代码一一介绍。 二叉树的添加结点 添加节点分为添加左节点和添加右节点 /** * 添加左结点...

golang-基于channel实现的共享锁

"golang共享锁"

问题背景 在实际项目中,希望用n个goroutine去一个带缓冲区的channel中读取数据,并且每个goroutine每次消费1000个数据,如果不足则按具体个数消费即可。为什么每次要消费1000个数据呢,因为希望在每个goroutine里面使用redis pipeline去获取这1000个数据的对应信息,这样就可以减少redis的访问次数。 而Channel中的数据量是未知的有限数据。 ...