- 博客(14)
- 收藏
- 关注
原创 两个线程交替打印奇偶数-学习笔记
前段时间看到阿里一个大哥讲述自己阿里面试的经验时,被面试官要求写一个“两个线程交替打印奇偶数”的程序。而前天刚好看见阿里大哥专门讲这个程序的博客《多线程技术: 两个线程交替打印奇数和偶数 - 明志健致远 - 博客园》。主要是看到安徽建筑大学的字样,回想到那篇文章里大哥的自我介绍,觉得肯定就是那大哥。看了博客,今天写一篇学习笔记。实现“两个线程交替打印奇偶数”。本质上,还是利用了隐式锁s...
2018-08-15 22:26:28 4729
原创 java源码阅读接口篇之java.util.Queue
Queue接口继承自Collection接口。接口中的方法如下:一、接口定义:/** * @since 1.5 * @author Doug Lea * @param <E> the type of elements held in this collection */public interface Queue<E> extends Collecti...
2018-08-12 20:41:10 315
原创 从反编译角度看看接口中的域
接口除了表示方法的集合之外,经常被用来作为常量类。因为接口做常量类更加简洁。只需要像下面这样:public interface StringConsts { String EMPTY_STRING = "";}我们可以看见EMPTY_STRING只需要声明类型即可,形式非常简洁。今天,我打算从反编译角度看看,我们在接口中只声明类型的域,在编译后是个什么样子。这是编译...
2018-08-07 21:34:34 438
原创 java源码阅读之小数缓存
在谈小数缓存之前,我们先来看看这两行代码有什么区别:Long a = new Long(1L);Long b = Long.valueOf(1L);要区分他们有什么区别,免不了要去看看java源码了。这里我以JDK1.8.0_151的源码做解析:先看Long的构造函数:private final long value;public Long(long value) { ...
2018-08-05 21:00:53 238
原创 java源码阅读接口篇之java.util.Collection
java.util.Collection是个接口,很容易和工具类java.util.Collections弄混淆。今天我就抽丝剥茧来研究一下这个接口。这里我基于JDK1.7.0_80的Collections接口进行研究,以避免JDK1.8引入的StreamAPI和函数式编程接口。一、接口定义:public interface Collection<E> extends I...
2018-08-05 13:05:43 356
原创 一张图看懂java HashMap继承关系
这是JDK1.8.0_151下的HashMap类定义:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {根据类定义,追根刨底,看看HashMap的继承结构图:...
2018-08-05 12:34:20 4661
原创 Java源码阅读之HashSet
HashSet是我们常用的一种数据结构。用来存储值唯一的集合。本文基于JDK1.8.0_151的Java源代码。先来看看HashSet的类定义: /** * @author Josh Bloch * @author Neal Gafter * @see Collection * @see Set * @see TreeSet * @see ...
2018-08-05 11:13:42 227
原创 C语言实现逐行读取
经常用java来写逐行读取文件的代码。最近复习C语言,刚好也用C语言来写一次文件逐行读取。主要是已使用fgets函数来实现我们的目的:#include "stdlib.h"#include "stdio.h"int main(int argc, char *argv[]){ FILE *in= fopen("D:/in.java", "r"); char buf[...
2018-08-04 22:13:04 10801
原创 C语言实现数组长度计算方法
写C时,经常要用到计算数组长度,我一般用下面这种方法:#define LEN(x) sizeof(x) / sizeof(x[0])即利用库函数sizeof来计算数组长度,这种方法,对一维数组和多维数组都有效,如以下代码示例:#include "stdio.h"#define LEN(x) sizeof(x) / sizeof(x[0])int main(int argc,...
2018-08-03 22:23:31 7185
原创 C语言实现两个数的交换
常常用C写排序算法时,经常写两个数的交换。想来,也把自己知到的这些方式记录一下:(1)宏定义方法:#define SWAP(a, b) {a = a + b; b = a - b; a = a - b;}使用示例:int a[2] = {5, 1};SWAP(a[0], a[1]);(2)指针:void swap(int *x, int *y){ int ...
2018-08-03 22:14:04 758
原创 从kafka源码阅读中看出了问题之abstract interface
今天在看到kafka的源码类org.apache.kafka.common.network.SslTransportLayer时,看到这个类引用了javax.net.ssl.SSLSession这个类,点进去看了一下这个类,着实让我吃惊了一把。public abstract interface javax.net.ssl.SSLSession见惯了abstract class,还真没...
2018-08-03 22:09:21 193
原创 从反编译的角度看abstract class与interface的区别
abstract class与interface傻傻分不清,今天我打算从反编译角度来看看二者的区别。先写这么一个abstact class 一个空的虚基类。public abstract class AbstractClass {}再写这么一个interface 一个空的接口。public interface Interface {}在JDK1.8.0_151的环境下,...
2018-08-03 21:28:25 454
原创 从kafka源码阅读中看出了问题之除零不异常
最近在看kafka源码,看到一个让我感到很陌生的地方,也引起了我深深地思考。竟然还有可以除0合法的地方:在org.apache.kafka.common.metrics.stats.Max类中,看到了构造函数: public Max() { super(Double.NEGATIVE_INFINITY); }我忍不住F3了一下Double.NEG...
2018-08-01 22:31:42 306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人