logo头像
Snippet 博客主题

面试官:你真的了解Java对象吗

公司最近在招一位4年以上的Java高级开发工程师,今天早上HR给了我一份的简历,让我去会议室进行技术面试。 我大概看了下简历的基本项(男、29岁、本科、5年Java开发经验),就去会议室面见应聘者了。 首先见了应聘者打了声招呼,紧接着他开始自我介绍,balabala……… 介绍完毕后,试想着,...

深入分析HashMap源码

1. HashMap简述1.1 大致介绍Map作为存放Key-Value数据容器在日常开发过程中是非常常见的,大部分的高级编程语言都具备Map类型的内存数据结构。在这里我们研究Java语言Map体系中最常用的HashMap(基于JDK1.8的实现)。 首先,我们打开HashMap源码找到类的文...

深入分析ArrayList源码

1. ArrayList简述1.1 ArrayList介绍List 接口下的可调整大小的数组实现。数组: 一旦初始化长度就不可以发生改变 1.2 数组结构介绍 增删慢:每次删除元素,都需要更改数组长度、拷贝以及移动元素位置。 查询快:由于数组在内存中是一块连续空间,因此可以根据地址+索引的...

浅谈Java对象四大引用

1. Java四大对象引用在jdk1.2之前,Java引用通俗意义上来讲就是对象引用和被引用的关系,实际定义为:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称该reference数据是代表某块内存、某个对象的引用。 在JDK1.2之后,Java对引用的概念将引...

线程切换导致ThreadLocal数据丢失分析

最近在使用Spring Cloud过程中,经常会遇见线程隔离(切换).导致ThreadLocal数据丢失.例如调用其他服务获取不到Threadlocal没有数据,服务之间传递请求头传递失败.通过查阅相关文档才发现:用Hystrix实现断路器,Zuul中默认使用的是信号量,其他默认都是线程隔离....

浅谈匿名函数,Lambda和闭包(Closure)

几乎所有的主流编程语言都对函数式编程有支持,我所用过的比如Java8的Lambda表达式,JavaScript和Groovy语言的闭包(Closure)等,其他的类似于Object-C的block,python的Lambda和C++11,看到这些,我都有点眩晕想吐的感觉. 匿名函数,Lambd...