Java核心基础加强系列-Java线程池详解(源码解析)

作为Java开发者,多线程是一个绕不开的主题,Java作为一门支持多线程的编程语言,我们必须要去理解和使用多线程技术,除此之外,多线程也是面试的一大重点,提到多线程,不可避免地就要用到线程池技术。 如何开启一个线程执行任务 在讨论线程池是什么之前,我们先来看看如何开启一个线程去执行一个任务,你是不是会写出以下代码呢? new Thread(new Runnable() {

继续阅读 »

数据库事务的四大特征以及隔离级别初探

数据库的相关知识是每个开发人员必备的技能,了解和学习常见的关系型数据库是非常重要的,今天就初略地谈一谈关系型数据库中事务的四大特性,以及事务的隔离级别,最后再说一说隔离级别的实现方式。 事务的四大特性 相信每个人都知道,所谓的四大特性就是我们经常说到的ACID,下面来做详细的介绍: 原子性( A tomicity):事务是数据库工作的逻辑单位,一个事务可能包含了多个对数据库的操作,这些操作,要么

继续阅读 »

Java核心基础加强系列-NIO初探

对于这部分内容其实我一直都是抗拒的,因为觉得非常难,但是没办法,对于我们开发者来说,不学习NIO是不可能的。就暂且非常粗浅地写下这篇文章。后面随着自己能力的提高,再去学习其更加核心的知识点和应用吧。 前言 Java NIO,Java New IO,也被称为Non-blocking IO,即非阻塞IO,是从Java 1.4开始引入的新的IO API,用以取代标准Java IO和网络API,当然,N

继续阅读 »

Java核心基础加强系列-序列化和反序列化

序列化和反序列化的概念 所谓序列化,即将一个Java对象的状态序列化成一串二进制流,从Java层面来说,即序列化成一个字节数组byte[]。 反序列化,即将字节数组重新还原成Java对象。 那么到底为什么要这么做呢? 我们知道在Java程序运行时,Java中的对象是保存在堆内存中的,他们的生命周期随着jvm的关闭而结束,但是往往我们有一些需求,在jvm停止时,需要将对象的状态信息保存下来,在程序

继续阅读 »

Java核心基础加强系列-java异常体系

相信大家在编程时都遇到过异常,出现异常是我们不想看到的,不过正是因为其会影响程序的正常运行,所以我们应当理解Java的异常体系,并知道怎样去优雅地处理异常,本文将聚焦这些内容。 Java的异常体系 先来展示一张大图: 想必Java程序员对这张图都非常熟悉,这张图展示了Java异常体系的继承关系。 Throwable类是整个Java异常体系的顶级父类,其有两个子类:Error和Exception

继续阅读 »

Java核心基础加强系列-内部类

2019是个学习之年,之前列出了一些需要加强的Java核心基础点,详情可参考文章 致敬2019 ,本篇文章是Java核心基础加强系列的第一篇文章。 内部类的定义 顾名思义,所谓内部类,是定义在一个类里面的类。 class OutterClass{ private String outterName; class InnerClass{ private String innerN

继续阅读 »

Java核心基础加强系列-反射

反射概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 这是每本Java书都会写的一段介绍,那么到底什么是反射,我们可以这样理解,针对Java程序中的每个类,都会存在这样一个名为Class的对象,该对象保存着类中所有的信息,包括属性,

继续阅读 »

重复造轮子系列之BeanUtils.copyProperties()的实现

前言 相信大家在开发中一定都用过Spring框架提供的一个小工具类:BeanUtils,特别是其中的copyProperties()方法,它可以将一个对象中的属性复制到另一个对象中,不过复制的前提是两个对象中的属性的名称和类型要一样,在开发中大量使用了这个工具类,所以想着探究一下实现原理,要是你说你没用过,那我也不知道说啥,不管别人信不信,反正我是不信。 反射 可能你会说,Java里边有一套很厉

继续阅读 »