自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 Kafka Network层解析

我们知道kafka是基于TCP连接的。其并没有像很多中间件使用netty作为TCP服务器。而是自己基于Java NIO写了一套。关于kafka为什么没有选用netty的原因可以看这里。对Java NIO不太了解的同学可以先看下这两篇文章,本文需要读者对NIO有一定的了解。segmentfault.com/a/119000001…www.jianshu.com/p/0d497fe54…...

2018-12-25 10:43:33 206

原创 死磕Synchronized底层实现--重量级锁

本文为死磕Synchronized底层实现第三篇文章,内容为重量级锁实现。本系列文章将对HotSpot的synchronized锁实现进行全面分析,内容包括偏向锁、轻量级锁、重量级锁的加锁、解锁、锁升级流程的原理及源码分析,希望给在研究synchronized路上的同学一些帮助。主要包括以下几篇文章:死磕Synchronized底层实现--概论死磕Synchronized底层实现--偏...

2018-12-06 18:52:28 785

原创 死磕Synchronized底层实现--轻量级锁

本文为死磕Synchronized底层实现第三篇文章,内容为轻量级锁实现。轻量级锁并不复杂,其中很多内容在偏向锁一文中已提及过,与本文内容会有部分重叠。另外轻量级锁的背景和基本流程在概论中已有讲解。强烈建议在看过两篇文章的基础下阅读本文。本系列文章将对HotSpot的synchronized锁实现进行全面分析,内容包括偏向锁、轻量级锁、重量级锁的加锁、解锁、锁升级流程的原理及源码分析,希望给...

2018-12-06 18:50:35 312

原创 死磕Synchronized底层实现--偏向锁

本文为synchronized系列第二篇。主要内容为分析偏向锁的实现。偏向锁的诞生背景和基本原理在上文中已经讲过了,强烈建议在有看过上篇文章的基础下阅读本文。更多文章见个人博客:https://github.com/farmerjohngit/myblog本文将分为几块内容:1.偏向锁的入口2.偏向锁的获取流程3.偏向锁的撤销流程4.偏向锁的释放流程5.偏向锁的批量重偏向和批量撤销...

2018-11-29 08:29:09 712

原创 死磕Synchronized底层实现--概论

关于synchronized的底层实现,网上有很多文章了。但是很多文章要么作者根本没看代码,仅仅是根据网上其他文章总结、照搬而成,难免有些错误;要么很多点都是一笔带过,对于为什么这样实现没有一个说法,让像我这样的读者意犹未尽。更多文章见个人博客:https://github.com/farmerjohngit/myblog本系列文章将对HotSpot的synchronized锁实现进行全面分析...

2018-11-29 08:27:19 248

原创 关于JVM堆外内存的一切

Java中的对象都是在JVM堆中分配的,其好处在于开发者不用关心对象的回收。但有利必有弊,堆内内存主要有两个缺点:1.GC是有成本的,堆中的对象数量越多,GC的开销也会越大。2.使用堆内内存进行文件、网络的IO时,JVM会使用堆外内存做一次额外的中转,也就是会多一次内存拷贝。和堆内内存相对应,堆外内存就是把内存对象分配在Java虚拟机堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机),这...

2018-11-09 15:40:22 299

原创 Java引用类型原理剖析

Java中一共有4种引用类型(其实还有一些其他的引用类型比如FinalReference):强引用、软引用、弱引用、虚引用。其中强引用就是我们经常使用的Object a = new Object(); 这样的形式,在Java中并没有对应的Reference类。本篇文章主要是分析软引用、弱引用、虚引用的实现,这三种引用类型都是继承于Reference这个类,主要逻辑也在Reference中。...

2018-11-05 10:48:22 528

原创 读写一致性的一些思考

先说明下,本文要讨论的多线程读写是指一个线程写,一个或多个线程读,不包括多线程同时写的情况。更多文章见个人博客:https://github.com/farmerjohngit/myblog试想下这样一个场景:一个线程往hashmap中写数据,一个线程往hashmap中读数据。 这样会有问题吗?如果有,那是什么问题?相信大家都知道是有问题的,但至于到底是什么问题,可能就不是那么显而易见...

2018-10-20 12:03:25 460

原创 linux内核级同步机制--futex

在关于同步的一点思考-下一文中,我们知道glibc的pthread_cond_timedwait底层是用linux futex机制实现的。更多文章见个人博客:github.com/farmerjohng…理想的同步机制应该是没有锁冲突时在用户态利用原子指令就解决问题,而需要挂起等待时再使用内核提供的系统调用进行睡眠与唤醒。换句话说,在用户态的自旋失败时,能不能让进程挂起,由持有锁的线程释放...

2018-10-09 20:45:30 2703

原创 关于同步的一点思考-下

在<关于同步的一点思考-上>中介绍了几种实现锁的方式以及linux底层futex的实现原理 ReentrantLock的实现网上有很多文章了,本篇文章会简单介绍下其java层实现,重点放在分析竞争锁失败后如何阻塞线程。 因篇幅有限,synchronized的内容将会放到下篇文章。更多文章见个人博客:github.com/farmerjohng…Java Lock的实现Ree...

2018-09-28 15:36:27 194

原创 关于同步的一点思考-上

线程同步可以说在日常开发中是用的很多,但对于其内部如何实现的,一般人可能知道的并不多。本篇文章将从如何实现简单的锁开始,介绍linux中的锁实现futex的优点及原理,最后分析java中同步机制如wait/notify, synchronized, ReentrantLock。更多文章见个人博客:https://github.com/farmerjohngit/myblog自己实现锁...

2018-09-16 23:05:37 190

原创 分布式Redis深度历险-Clustor

本文为分布式Redis深度历险系列的第三篇,主要内容为Redis的Clustor,也就是Redis集群功能。更多文章见个人博客:https://github.com/farmerjohngit/myblogRedis集群是Redis官方提供的分布式方案,整个集群通过将所有数据分成16384个槽来进行数据共享。集群基础实现一个集群由多个Redis节点组成,不同的节点通过CLUSTOR...

2018-09-14 18:04:27 234

原创 分布式Redis深度历险-Sentinel

本文为分布式Redis深度历险系列的第二篇,主要内容为Redis的Sentinel功能。 更多文章见个人博客:https://github.com/farmerjohngit/myblog上一篇介绍了Redis的主从服务器之间是如何同步数据的。试想下,在一主一从或一主多从的结构下,如果主服务器挂了,整个集群就不可用了,单点问题并没有解决。Redis使用Sentinel解决该问题,保障集群的高可...

2018-09-14 18:03:55 271

原创 分布式Redis深度历险-复制

Redis深度历险分为两个部分,单机Redis和分布式Redis。更多文章见个人博客:https://github.com/farmerjohngit/myblog本文为分布式Redis深度历险系列的第一篇,主要内容为Redis的复制功能。Redis的复制功能的作用和大多数分布式存储系统一样,就是为了支持主从设计,主从设计的好处有以下几点:读写分离,提高读写性能 数据备份,减少数...

2018-09-14 18:02:49 294

JAVA五子棋对战版

课程设计上所做的,实现了悔棋,限时等功能,代码写的很规范,很适合新手参考

2014-06-25

打飞机游戏

自己用JAVA写的一个打飞机游戏 可以发子弹 发大宝 获得大宝 获得子弹 初步设置了关卡功能 不同的飞机的分数不同 添加了背景音乐和音效

2014-05-19

仿XP画图板

自己做的一个仿XP的画图板练手 实现了画图板大多数常用功能 界面和XP的画图板非常相似 可以给新手参考用

2014-05-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除