在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念、用法等不再赘述了,直接结合面试问题来加深对异常的理解吧。
在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念、用法等不再赘述了,直接结合面试问题来加深对异常的理解吧。
这里涉及网络编程的基本知识以及HTTP协议的基本认识,下面来一步一步实现一下最简单的一个web服务器。
代理模式可以说是经常面试被问的一个东西,因为spring aop的实现原理就是基于它,关于它,只要记住,它是运行时动态生成的一个代理类。在这个基础上,再去看看它底层源码,其实JDK已经帮我们最大程度上封装成简单的函数了,我们只需要传入几个参数就可以生成对应的代理对象。
注解是一系列元数据,它提供数据用来解释程序代码,注释是给人看的,注解是给编译器看的,因此注解只在编译器有效。注解的实现原理涉及反射和动态代理,关于反射已经在前面说过,动态代理还没说,留在下一节。
本篇文章是罗列一些关于java基础的核心点,这些点是基础中的基础,也是重点中的重点。为什么本篇文章叫做冰川表面呢?我想表达的意思是,这些基础只是一个引子,背后牵扯出来的东西可能会很多,面试往往都是从基础的知识点慢慢深入挖掘的,所以千万不能忽视对于它们的复习。
在线程间通信方式总结中有一个需求:轮流打印奇数和偶数,我们用wait和notify实现了一下,但是这种方式存在弊端,就是不能精确控制唤醒哪个线程,比如现在有一个需求是轮流打印ABC该怎么办呢?
无论是面试还是工作中,生产者和消费者模式一直是一个比较常见的问题,今天,我们用各种方式来实现它。
在前面的文章中已经介绍了wait和notify的基本知识,我们知道了他们都是Object这个基类中的方法,因此每个对象都天生拥有这两个方法,可见其重要性,在多线程的学习中,他们两兄弟可以实现线程之间的通信,当然了,还有许多其他的方式实现线程间通信,下面逐一击破。
在之前的线程池原理介绍中,我们了解到在核心线程被全部占用并且没有空闲线程的时候,就会把后续的线程任务先放入一个队列结构中,然后按照队列的方式去消化任务。虽然队列有很多种,但是他们都有一个共同的名字叫做阻塞队列,本文来逐个击破揭开他们的面纱。
JUC组件拓展-ForkJoin简介,本文只是初步认识认识一下ForkJoin是什么,不深究里面的原理。