自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YourBatman

专注Java领域分享、成长,拒绝浅尝辄止。公众号搜索:BAT的乌托邦

原创 【小家java】java中为final变量赋值的几种方式

前言 final修饰的变量,很多人第一印象就是不可变三个字。然后以为它只能在申明的时候就必须得赋值,其实不然,本文就重点讲述平时我们用到的final变量的赋值问题。 对被final修饰的变量进行赋值的几种方法 被final修饰的变量,有三种赋值方式。 被final static 修饰的...

2018-08-26 16:49:22 3592 0

原创 【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题

前言 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模...

2018-08-26 16:37:31 11541 2

原创 【小家Java】自定义的线程池需要关闭吗?(局部变量Executors线程池一定要手动关闭)

说在前面 我之前看到很多同事写代码,为了提高效率,采用多线程去优化。由为了提高多线程的性能,用到了线程池。 表面上看起来很高大上了,但其实上发现很多人用到了局部变量的线程池,然后使用过后并没有回收,导致了线程泄漏。 Executors作为局部变量时,创建了线程,一定要记得调用execu...

2018-08-24 17:08:36 9953 17

原创 【小家java】Stream流操作的有状态 vs 无状态

概念解释 说这个命题之前,我先解释一下编程里,有状态和无状态都什么意思 有状态 有状态就是有数据存储功能,线程不安全 无状态 无状态就是一次操作,不能保存数据。线程安全 下面我们先看看Srping中的Bean来辅助理解: Spring中的有状态(Stateful)和无状态(Stat...

2018-08-24 16:11:12 1360 0

原创 【小家MyBatis】MyBatis基础知识33问(详解面试题)

1、什么是mybatis? (1)mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 (2)mybatis通过xml或注解的方式将要执行的各种statemen...

2018-08-24 14:23:09 1250 0

原创 【小家java】聊聊Java中的java.util.Arrays类和java.util.Collections工具类

java.util.Arrays类能方便的操作数组,它所有的方法都是静态的。Java1.2为我们提供的。其中Java5和Java8都提供了更多增强方法。 Java有个命名习惯或者说是规范,后面加s的都是工具类,比如Arrays、Collections、Executors等等 备注:本博文...

2018-08-23 15:01:50 579 0

原创 【小家java】Java中Future模式衍生出来的高级应用---自己手写一个数据库连接池

说在前面 阅读本文之前,请确保你已经了解了Java中Future模式。若没有,ring出门左转,参考博文:【小家java】一个例子让就能你彻底理解Java的Future模式,Future类的设计思想 手动写一个数据库连接池 要求:该连接池能够复用数据库连接,并且能在高并发情况下正常工作 ...

2018-08-21 17:02:54 360 0

原创 【小家java】一个例子让就能你彻底理解Java的Future模式,Future类的设计思想

Future模式的设计思想,将在不久的将来大行其道。特别Reactive编程和Spring5的推出,此思想将越来越流行。而Java的Futrue模式属于代码层面的实现案例(也可以说是语法层面。Linux的epoll函数算是操作系统底层的实现) Futrue模式简介 Future模式有点类似于...

2018-08-21 16:19:06 661 0

原创 【小家java】Java中IdentityHashMap使用详解---允许key重复(阐述和HashMap的区别)

应该有很多人不知道IdentityHashMap的存在,其中不乏工作很多年的Java开发者,会有很多人以为这是第三方jar包,实际上它是Jdk源码自带的集合类。 本文主要讲解IdentityHashMap的使用和他的一些特性。很多场景上使用它,会让你事半功倍。 对Map的认识 其实我们对...

2018-08-21 02:52:58 10619 8

原创 【小家java】聊聊Java中的System类

Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特点功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。 本文讲述System类,需要了解Runtime类的,前往:【小家java】聊聊Java中的Runtime类 主要API...

2018-08-20 23:19:56 462 0

原创 【小家java】聊聊Java中的Runtime类

概述 Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。 我们不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对...

2018-08-20 18:06:04 295 0

原创 【小家java】String类为什么要设计成final?不可变有什么优点?

源码解释: 先贴一下String类的申明代码: public final class String implements java.io.Serializable, Comparable<String&a...

2018-08-18 18:06:17 1060 0

原创 【小家java】交换两个变量数值的方法(四种方法)

推荐阅读 【小家java】java5新特性(简述十大新特性) 重要一跃 【小家java】java6新特性(简述十大新特性) 鸡肋升级 【小家java】java7新特性(简述八大新特性) 不温不火 【小家java】java8新特性(简述十大新特性) 饱受赞誉 【小家java】java9新特...

2018-08-18 17:09:18 3231 0

原创 【小家java】java10新特性(简述十大新特性) 小步迭代

2018年3月20日,Java 10 正式发布,这一次没有跳票 它号称有109项新特性,包含12个JEP。 需要注意的是,本次Java10并不是Oracle的官方LTS版本,所以咱们可以先了解新特性。然后坐等java11的发布再考虑在生产中使用吧 特性列表 1、局部变量的类型推断 v...

2018-08-18 14:28:48 2686 0

原创 【小家java】java9新特性(简述十大新特性) 褒贬不一

经过4次跳票,历经曲折的java 9 终于终于在2017年9月21日发布(距离上个版本足足3年半时间) java 9 提供了超过 150 项新功能特性,包括备受期待的模块化系统、可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有代码,以及安全增强、...

2018-08-18 01:07:34 3398 0

原创 【小家java】java7新特性(简述八大新特性) 不温不火

Java7开发代号是Dolphin(海豚),于2011-07-28发行. 评价:不温不火 特性列表 switch中添加对String类型的支持 数字字面量的改进 / 数值可加下划 异常处理(捕获多个异常) try-with-resources 增强泛型推断 JSR203 NIO2.0(A...

2018-08-17 21:37:52 2358 0

原创 【小家java】java6新特性(简述十大新特性) 鸡肋升级

Java6开发代号为Mustang(野马),于2006-12-11发行. 评价:鸡肋的版本,有JDBC4.0更新、Complier API、WebSevice支持的加强等更新。 十大新特性(其实都比较鸡肋,对开发者来说) 1、Web Services 优先支持编写 XML web...

2018-08-17 21:13:14 2802 0

原创 【小家java】java5新特性(简述十大新特性) 重要一跃

特性列表 泛型 枚举 自动装箱拆箱 可变参数 注解 foreach循环(增强for、for/in) 静态导入 格式化(System.out.println 支持%s %d等格式化输出) 线程框架/数据结构 JUC Arrays工具类/StringBuilder/instrument 1、...

2018-08-17 21:04:24 3799 2

原创 【小家MyBatis】MyBatis封装结果集时,Integer类型的id字段被赋值成了Long类型---读源码找原因

问题背景 为了简化持久层的开发,减少或杜绝重复SQL的书写,提高开发效率和减少维护成本,本人基于MyBatis写了一个操作DB的中间件。为了规范操作,中间件提供了一个带泛型化参数的抽象类供以继承(BaseDBEntity),利用泛型的模版特性,来实现统一控制(包括统一查询、统一分页处理等等)。B...

2018-08-16 00:31:54 4549 2

原创 【小家面试】JavaSE/EE基础面试题、基础知识记录---大杂烩

说在前面 此博文旨在搜集一些JavaSE基础部分的经典面试题,希望能达到一针见血,通过面试题来达到让大家记忆深刻的目的。 持续连载中。。。 案例 1、请补全下面代码,达到所需输出的效果 public static void main(String[] args) throws Exce...

2018-08-15 23:39:37 479 0

原创 【小家java】为什么说Java中的泛型是“假”的?(通过反射绕过Java泛型)

说在前面 泛型是JDK5带给我们的新特性,虽然它处于历史原因,有不完善的地方。但是更多的还是给与我们带来方便的。下面先简要先说说它的优点: 泛型就是参数化类型: 适用于多种数据类型执行相同的代码 泛型中的类型在使用时指定 泛型归根到底就是“模版” 优点:使用泛型时,在实际使用之前类型就...

2018-08-15 23:31:57 1928 0

原创 【小家java】java8新特性之---外部迭代和内部迭代(对比性能差异)

从一个案例开始:遍历一个集合 外部迭代 最传统的方法是用Iterator,当然还以用for i、增强for循环等等。这一类方法叫做外部迭代,意为显式地进行迭代操作,即集合中的元素访问是由一个处于集合外部的东西来控制的,在这里控制着循环的东西就是迭代器。 我们自己定义一个List,叫Con...

2018-08-08 19:47:37 2254 0

原创 【小家java】java8新特性之---Stream API 详解 (Map-reduce、Collectors收集器、并行流、groupby多字段分组)

我们为什么需要 Stream API Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。 集合讲的是数据,流讲的是计算 Java 8 中的 Stream 是对集合(Collectio...

2018-08-08 19:04:15 4066 2

原创 【小家java】java8新特性之---方法引用

方法引用的定义 简单地说,就是一个Lambda表达式。方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。 当Lambda表达式中只是执行一个方法调用时,不用Lambda表达式,直接通过方法引用的形式可读性更高一些...

2018-08-08 18:03:40 909 0

原创 【小家java】java8新特性之---函数式接口(Supplier、Consumer、Predicate、Function、UnaryOperator,通往高阶设计的好工具)

什么是函数式接口? 首先,它还是一个接口,所以必须满足接口最基本的定义。但它是一个特殊的接口:SAM类型的接口(Single Abstract Method)。可以在调用时,使用一个lambda表达式作为参数。 定义要求: 只能有一个抽象方法需要被实现 @FunctionalInter...

2018-08-08 12:21:26 3666 0

原创 【小家java】java8新特性之---lambda表达式的的原理

相关阅读: 使用lambda表达式传参是否有性能问题? 说在前面 本文着眼于lambda表达式的原理部分,至于基本使用层面,本章不做讨论,因为使用起来还是蛮简单的。 为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lam...

2018-08-07 18:23:54 1331 2

原创 【小家java】java8新特性之---Optional的使用,避免空指针,代替三目运算符

空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部...

2018-08-07 02:54:57 4763 4

原创 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势

Java8之前的日期、时间现状 Java三次引入处理时间的API,JDK1.0中包含了一个Date类,但大多数方法在java1.1引入Calendear类之后被弃用了。 它的实例都是可变的,而且它的API很难使用,比如月份是从0开始这种反人类的设置。不止如此,还有如下的一些使用不方...

2018-08-05 11:27:28 3014 3

提示
确定要删除当前文章?
取消 删除