ExecutorService的invokeAll方法无法抛出异常 最近在线上发现一个多线程查询有问题,始终查询不到数据,但是查看线上日志又未发现报错日志,经过排查发现是由于...

ExecutorService的invokeAll方法无法抛出异常 最近在线上发现一个多线程查询有问题,始终查询不到数据,但是查看线上日志又未发现报错日志,经过排查发现是由于...
多线程之——wait,notify,notifyAll使用 我们在使用 synchronized 的时候,被阻塞的线程什么时候被唤醒,取决于获得锁的线程什么时候执行完同步代码...
多线程之——synchronized基本原理 提起synchronized大家都知道它是通过加锁且是加了重锁来实现线程安全,但是随着JDK的发展,尤其在JDK1.6之后syn...
多线程之——synchronized基本使用 在展示synchronized的用法之前,以抢票为例,我们看看在多线程的情况下,如果不加锁会发生怎么样的线程安全问题 运行结果(...
JDK8新特性之Optional Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException),Optional<T>类在java.u...
JDK8新特性之Stream API(三) JAVA8中有两个最为重要的改变第一个是Lambda表达式,这个在JDK8新特性之Lambda表达式(一)[https://www...
JDK8新特性之方法引用(二) 在看方法引用之前我推荐大家去看下我之前写的JDK8新特性之Lambda表达式(一)[https://www.jianshu.com/p/c61...
JDK8新特性之Lambda表达式(一) 函数式接口 在了解Lambda表达式之前我们必须了解一下函数式接口,Lambda表达式实际上是依赖于函数式接口的。 定义 如果一个接...
数据库设计三大范式 一个设计合理的表,能给服务器性能带来很大的提高,因此如何设计出比较合理的表就比较重要了,设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别...
HashMap在JDK1.8和JDK1.7的区别 结论 先说结论,HashMap在1.7和1.8中最大的区别就是底层数据结构的变化,在1.7中HashMap采用的底层数据结构...
Class类下的getResource和ClassLoader类下的getResource方法使用和区别 通过getResource(String name)方法,我们能获得...
java.io.IOException: UT010029: Stream is closed 记录一次项目中的异常,在做下载文件时,文件虽然能够导出来但是系统中却出现了一堆...
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有类的一个包装。...
适配器模式 适配器模式介绍 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。举个简...
模板模式 首先来看一下模板模式的简介:模板模式(Template Pattern),一是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板方法使得子类可以在不改...
委派模式和策略模式 委派模式 什么是委派模式? 维基百科对委派模式的解释是:委派模式(delegation pattern)是软件设计模式中的一项基本技巧。在委派模式中,有两...
代理模式浅析 1.什么是代理模式 什么是代理模式呢,首先举个简单的例子,张三(用户)想要一张演唱会的门票但是自己没有渠道购买,这时他的朋友李四(代理人)说他能够买到演唱会的门...
错误重现 运行结果: java.lang.NullPointerException 装箱和拆箱 在JDK1.5以后基本数据类型和对应的包装类做比较时会自动拆箱和装箱,我们以I...