深入浅出Java核心技术
文章平均质量分 90
本专栏主要介绍Java基础,并且会结合底层原理以及具体实例来讲解。同时还介绍了Java集合类,设计模式以及Java8的相关知识。
Java技术江湖
在下程序员黄小斜,前阿里Java工程师,4年码龄。 专注分享Java技术干货文,偶尔也吹水吐槽聊人生。
展开
-
夯实Java基础系列28:java里的浅拷贝、深拷贝
假如说你想复制一个简单变量。很简单:int apples = 5;int pears = apples;不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。但是如果你复制的是一个对象,情况就有些复杂了。class Student { private int number; public int getNumber() { return number;转载 2021-05-08 09:53:33 · 433 阅读 · 0 评论 -
夯实Java基础系列27:关于Java序列化的13个面试问题
什么是 Java 序列化序列化是把对象改成可以存到磁盘或通过网络发送到其他运行中的 Java 虚拟机的二进制格式的过程, 并可以通过反序列化恢复对象状态. Java 序列化API给开发人员提供了一个标准机制, 通过 java.io.Serializable 和 java.io.Externalizable 接口, ObjectInputStream 及ObjectOutputStream 处理对象序列化. Java 程序员可自由选择基于类结构的标准序列化或是他们自定义的二进制格式, 通常认为后者才是最佳转载 2021-05-08 09:51:25 · 447 阅读 · 0 评论 -
夯实Java基础系列26:主流大厂最新Java注解面试问题
1.简介自Java 5以来,注释已经出现,而现在,它们是无处不在的编程结构,可以丰富代码。在本文中,我们将回顾一些关于注释的问题; 通常会在技术面谈时询问,并在适当情况下; 我们将实施示例以更好地理解他们的答案。2.问题Q1。什么是注释?他们的典型用例是什么?注释是绑定到程序源代码元素的元数据,对它们运行的代码的操作没有影响。他们的典型用例是:编译器的信息 - 使用注释,编译器可以检测错误或抑制警告编译时和部署时处理 - 软件工具可以处理注释并生成代码,配置文件等。运行时处理 - 可以转载 2021-05-08 09:44:05 · 433 阅读 · 0 评论 -
夯实Java基础系列25:java反射常见面试题,你都掌握了么?
1. 什么是反射?反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。2. 哪里用到反射机制?JDBC中,利用反射动态加载了数据库驱动程序。Web服务器中利用反射调用了Sevlet的服务方法。Eclispe等开发工具利用反射动态刨析对象的类型与结构,动态提示对象的属性和方法。很多框架都用到反射机制,注入属性,调用方法,如Spring。3. 什么叫对转载 2021-05-07 08:43:47 · 381 阅读 · 0 评论 -
Java集合详解12:arraylist和linkedlist面试题汇总,可能没有你想象中那么简单!
ArrayList 无参数构造器构造,现在 add 一个值进去,此时数组的大小是多少,下一次扩容前最大可用大小是多少?此处数组的大小是 1,下一次扩容前最大可用大小是 10,因为 ArrayList 第一次扩容时,是有默认值的,默认值是 10,在第一次 add 一个值进去时,数组的可用大小被扩容到 10 了。如果我连续往 Arraylist 里面新增值,增加到第 11 个的时候,数组的大小是多少?这里的考查点就是扩容的公式,当增加到 11 的时候,此时我们希望数组的大小为 11,但实际上数组的最大容转载 2021-05-04 11:51:05 · 644 阅读 · 0 评论 -
Java集合详解10:ConcurrentHashmap面试题汇总,最近找工作老是被问!
ConcurrentHashMap篇HashMap 和 ConcurrentHashMap 的区别ConcurrentHashMap对整个桶数组进行了分割分段(Segment),然后在每一个分段上都用lock锁进行保护,相对于HashTable的synchronized锁的粒度更精细了一些,并发性能更好,而HashMap没有锁机制,不是线程安全的。(JDK1.8之后ConcurrentHashMap启用了一种全新的方式实现,利用CAS算法。) HashMap的键值对允许有null,但是ConCur转载 2021-05-03 12:28:30 · 1010 阅读 · 0 评论 -
Java集合详解9:2021年的hashmap面试题怎么考?涵盖性能优化、扩容、并发问题等核心考点
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMa转载 2021-05-03 12:08:09 · 995 阅读 · 0 评论 -
夯实Java基础系列24:java动态代理的实现,JDK和cglib实现的异同
代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持有的被带离对象的引用),代理类本身不实现服务,而是通过调用被代理类中的方法来提供服务。静态代理创建一个接口,然后创建被代理的类实现该接口并且实现原创 2021-05-03 11:55:56 · 401 阅读 · 0 评论 -
Java设计模式学习总结
设计模式创建型模式创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类,但是需要提供给其他开发者用的时候。单例单例模式保证全局的单例类只有一个实例,这样的话使用的时候直接获取即可,比如数据库的一个连接,Spring里的be...原创 2018-07-08 10:54:59 · 5785 阅读 · 1 评论 -
初探设计模式5:Spring涉及到的9种设计模式
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计的思想理念,才能在工作学习中运用到“无形”。Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。好了,话不多说,开始今天的内容。spring...原创 2018-07-13 17:07:30 · 2252 阅读 · 0 评论 -
Java集合框架学习总结
Java集合类学习总结这篇总结是基于之前博客内容的一个整理和回顾。这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术里面有包括Java集合类在内的众多Java核心技术系列文章。Colletion,iterator,comparable一般认为Collection是最上层接口,但是hashmap实际上实现的是Map接口。iterator是迭代器,是实现...原创 2018-06-28 00:18:42 · 5179 阅读 · 2 评论 -
初探Java设计模式2:结构型模式(代理模式,适配器模式等)
结构型模式前面创建型模式介绍了创建对象的一些设计模式,这节介绍的结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。代理模式第一个要介绍的代理模式是最常使用的模式之一了,用一个代理来隐藏具体实现类的实现细节,通常还用于在真实的实现的前后添加一部分逻辑。既然说是代理,那就要对客户端隐藏真实实现,由代理来负责客户端的所有请求。当然,代理只是个代理,它不会...转载 2017-05-02 21:08:56 · 2142 阅读 · 0 评论 -
初探Java设计模式3:行为型模式(策略,观察者等)
转自https://javadoop.com/post/design-pattern行为型模式策略模式 观察者模式 责任链模式 模板方法模式 状态模式 行为型模式总结行为型模式行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰。策略模式策略模式太常用了,所以把它放到最前面进行介绍。它比较简单,我就不废话,直接用代...转载 2017-05-08 15:32:38 · 2187 阅读 · 0 评论 -
初探Java设计模式4:JDK中的设计模式
JDK中设计模式本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图。首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助。一、设计模式是什么(1)反复出现问题的解决方案(2)增强软件的灵活性(3)适应软件不断变化二、学习JDK中设计模式的好处(1)借鉴优秀代码的设计,有助于提高代码设计能力(2)JDK的设计中体现了大多数设计模式,是学...转载 2017-05-15 11:03:57 · 1690 阅读 · 0 评论 -
初探Java设计模式1:创建型模式(工厂,单例等)
Java 设计模式转自https://javadoop.com/post/design-pattern一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属Gan...转载 2017-05-23 10:50:17 · 2965 阅读 · 0 评论 -
Java集合详解8:Java集合类细节精讲
今天我们来探索一下Java集合类中的一些技术细节。主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充。可能不全面,还请谅解。本文参考:http://cmsblogs.com/?cat=5具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/2018/05/13/...转载 2018-05-13 10:25:12 · 6301 阅读 · 2 评论 -
Java集合详解7:HashSet,TreeSet与LinkedHashSet
今天我们来探索一下HashSet,TreeSet与LinkedHashSet的基本原理与源码实现,由于这三个set都是基于之前文章的三个map进行实现的,所以推荐大家先看一下前面有关map的文章,结合使用味道更佳。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/20...转载 2018-05-12 21:55:40 · 15768 阅读 · 0 评论 -
经过一年多时间的完善和修改,我整理出了程序员的精品技术学习资料(2019年全集汇总)
作者 l 黄小斜来源 l 程序员黄小斜(ID:AntCoder)想交流可以加我微信(微信ID:john_josh,记得备注来意)之前我给大家提供的资料,类型比较多,内容也比较繁杂,粉丝们的需求往往也不同,有的想要视频资料,有的想要电子书,有的又想看毕竟面经。为了降低各位的查找成本,节约你们的时间,这里我把之前所有整理过的资料都汇总在这里,截止2019年年底,这部分资料都将是最全面最...原创 2017-03-14 21:18:33 · 2331 阅读 · 1 评论 -
Java集合详解5:深入理解LinkedHashMap和LRU缓存
今天我们来深入探索一下LinkedHashMap的底层原理,并且使用linkedhashmap来实现LRU缓存。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/2018/05/11/collection5更多关于Java后端学习的内容请到我的CSDN博客上查看:...转载 2018-05-12 12:06:31 · 35093 阅读 · 5 评论 -
Java集合详解4:HashMap和HashTable
今天我们来探索一下HashMap和HashTable机制与比较器的源码。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech喜欢的话麻烦star一下哈文章首发于我的个人博客:https://h2pl.github.io/2018/05/10/collection4更多关于Java后端学习的内容请到我的CSDN博客上查看:https...转载 2018-05-11 09:41:19 · 4212 阅读 · 0 评论 -
Java集合详解3:Iterator,fail-fast机制与比较器
今天我们来探索一下LIterator,fail-fast机制与比较器的源码。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech喜欢的话麻烦star一下哈文章首发于我的个人博客:https://h2pl.github.io/2018/05/9/collection3更多关于Java后端学习的内容请到我的CSDN博客上查看:http...转载 2018-05-10 23:39:09 · 3451 阅读 · 0 评论 -
Java集合详解2:LinkedList和Queue
今天我们来探索一下LinkedList和Queue,以及Stack的源码。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech喜欢的话麻烦star一下哈文章首发于我的个人博客:https://h2pl.github.io/2018/05/09/collection2更多关于Java后端学习的内容请到我的CSDN博客上查看:http...转载 2018-05-10 23:38:34 · 16106 阅读 · 0 评论 -
Java集合详解1:ArrayList,Vector与Stack
本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack”Java集合详解系列“是我在完成Java基础篇的系列博客后准备开始写的新系列。Java集合系列专栏地址:https://blog.csdn.net/column/details/21877.html之前的Java基础系列博客首发于我的个人博客:https://h2pl.github.io/在...原创 2018-05-09 23:55:32 · 6218 阅读 · 1 评论 -
Java基础面试知识点总结
纸上得来终觉浅,绝知此事要躬行。笔者之前对每部分的内容 对做了比较深入的学习以及代码实现,基本上比较全面地讲述了每一个Java基础知识点,当然可能有些遗漏和错误,还请读者指正。更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a724888Java基础学习总结每部分内容会重点写一些常见知识点,方便复习和记忆,但...原创 2017-04-10 22:46:26 · 31964 阅读 · 6 评论 -
夯实Java基础系列21:Java8新特性终极指南
毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。在这篇教程中,我们将一一探索这些变化,并用真实的例子说明它们适用的场景。本文由以下几部分组成,它们分别涉及到Java平台某一特定方面的内容:Java语言 编译器 类库 工具 Jav...原创 2018-05-07 11:11:08 · 5245 阅读 · 1 评论 -
夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题
本文介绍了Java集合类的基本框架,接口结构以及部分源码分析,并且通过自己实现一些集合类来更好地剖析Java集合类的整体结构。本文只是对集合类框架进行一个大概的梳理,毕竟集合框架中包含的类太多了,一篇文章不可能讲完,这里先开一个头,对整体框架有一个清晰认识之后,再去探索各个接口实现类的奥秘。后面会专门地写几篇关于集合类的文章,分别介绍一下List,Map,Set以及Stack等等这些接口的...原创 2018-05-06 16:34:36 · 4716 阅读 · 1 评论 -
夯实Java基础系列22:一文读懂Java序列化和反序列化
本文介绍了Java序列化的基本概念,序列化和反序列化的使用方法,以及实现原理等,比较全面地总结序列化相关知识点,并且使用具体例子来加以佐证。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech喜欢的话麻烦点一下星哈谢谢。文章首发于我的个人博客: https://h2pl.github.io/2018/05/05/javas...原创 2018-05-05 22:02:48 · 3723 阅读 · 0 评论 -
夯实Java基础系列16:一文读懂Java IO流和常见面试题
本文介绍了Java IO流的基本概念,使用方法,以及使用的注意事项等。帮助你更好地理解和使用Java的IO流。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech喜欢的话麻烦点一下星哈谢谢。文章首发于我的个人博客: https://h2pl.github.io/2018/05/04/javase17更多关于Java后...原创 2018-05-05 00:05:52 · 5336 阅读 · 0 评论 -
夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题
本文介绍了Java多线程的基本概念,使用方法,以及底层实现原理。帮助你更好地使用Java的多线程。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech喜欢的话麻烦点一下星哈谢谢。文章首发于我的个人博客: https://h2pl.github.io/2018/05/04/javase16更多关于Java后端学习的内容...原创 2018-05-04 16:35:48 · 5258 阅读 · 1 评论 -
夯实Java基础系列14:深入理解Java枚举类
本文介绍了枚举类的基本概念,使用方法,以及底层实现原理。帮助你更好地使用枚举类并且理解枚举类的内部实现细节。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech喜欢的话麻烦点一下星哈谢谢。文章首发于我的个人博客: https://h2pl.github.io/2018/05/02/javase15更多关于Java后端...原创 2018-05-02 22:50:59 · 3706 阅读 · 3 评论 -
夯实Java基础系列20:从IDE的实现原理聊起,谈谈那些年我们用过的Java命令
前言:本文教你怎么用javac和java命令,讲解了classpath的原理,以及如何利用脚本(shell或bat)进行项目部署,离开ide,还原最本质的Java编译运行过程,并用简单的实例展示这些用法。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech喜欢的点一下星哈谢谢。文章首发于我的个人博客: https://h...原创 2018-05-01 22:43:08 · 3792 阅读 · 0 评论 -
夯实Java基础系列12:深入理解Java中的反射机制
本节主要介绍Java反射的原理,使用方法以及相关的技术细节,并且介绍了关于Class类,注解等内容。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech文章首发于我的个人博客: https://h2pl.github.io/2018/05/01/javase13更多关于Java后端学习的内容请到我的CSDN博客上查看:...原创 2018-05-01 22:42:14 · 4519 阅读 · 0 评论 -
夯实Java基础系列9:深入理解Class类和Object类
本文对java的Class类和Object类的概念和原理做了详尽的介绍,并且详细介绍了Object的各种方法,以及这两个类之间的关系。Class类和Object类是Java中最根本最重要的两个类,理解它们是理解Java面向对象技术的基础,也是学习所有进阶Java技术的基石。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech文章首...原创 2018-04-30 22:57:28 · 4831 阅读 · 0 评论 -
夯实Java基础系列13:深入理解Java中的泛型
本文对java的泛型的概念和使用做了详尽的介绍。本文参考https://blog.csdn.net/s10461/article/details/53941091具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech文章首发于我的个人博客: https://h2pl.github.io/2018/04/29/javase11...原创 2018-04-29 23:51:38 · 4574 阅读 · 0 评论 -
夯实Java基础系列10:深入理解Java中的异常体系
本文非常详尽地介绍了Java中的异常,几乎360度无死角。从异常的概念,分类,使用方法,注意事项和设计等方面全面地介绍了Java异常。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech喜欢的话麻烦点下星哈文章首发于我的个人博客:https://h2pl.github.io/2018/04/27/javase10更多关于Jav...原创 2018-04-27 23:16:27 · 4261 阅读 · 0 评论 -
夯实Java基础系列11:深入理解Java中的回调机制
本文主要介绍了Java中的回调机制,以及Java多线程中类似回调的机制。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/2018/04/26/javase9更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a7...原创 2018-04-26 21:28:42 · 3796 阅读 · 1 评论 -
夯实Java基础系列8:深入理解Java内部类及其实现原理
本文主要介绍了Java内部类的基本原理,使用方法和各种细节。有关内部类实现回调,事件驱动和委托机制的文章将在后面发布。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/2018/04/25/javase8内部类初探一、什么是内部类? 内部类是指在...原创 2018-04-25 23:24:10 · 6836 阅读 · 2 评论 -
夯实Java基础系列7:Java 代码块和执行顺序
本文主要介绍了Java外部类和包的一些基本知识内部类与匿名内部类的文章将在后面发布。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/2018/04/24/javase7*.Java文件问题:一个”.java”源文件中是否可以包括多个类(不是内部类...原创 2018-04-24 19:48:12 · 4734 阅读 · 0 评论 -
夯实Java基础系列6:一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别!
本文主要介绍了三种代码块的特性和使用方法。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech文章首发于我的个人博客:https://h2pl.github.io/2018/04/24/javase6代码块:用{}包围的代码java中的代码块按其位置划分为四种:局部代码块 位置:局部位置(方法内部) ...原创 2018-04-24 19:45:47 · 3781 阅读 · 1 评论 -
夯实Java基础系列5:Java文件和Java包结构
本文主要介绍了抽象类和接口的特性和使用方法。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech 文章首发于我的个人博客:https://h2pl.github.io/2018/04/24/javase5 1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类...原创 2018-04-24 10:38:00 · 5651 阅读 · 0 评论