自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构师:通透,才能写出好代码!

也许当我老了,也一样写代码。不为别的,只为爱好。

  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

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

前言final修饰的变量,很多人第一印象就是不可变三个字。然后以为它只能在申明的时候就必须得赋值,其实不然,本文就重点讲述平时我们用到的final变量的赋值问题。对被final修饰的变量进行赋值的几种方法被final修饰的变量,有三种赋值方式。被final static 修饰的变量,有两种赋值方式在讲解之前,希望读者对静态代码块、构造代码块、构造方法的执行顺序了解清楚。【...

2018-08-26 16:49:22 9887 2

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

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

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

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

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

2018-08-24 17:08:36 18960 22

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

概念解释说这个命题之前,我先解释一下编程里,有状态和无状态都什么意思有状态 有状态就是有数据存储功能,线程不安全无状态 无状态就是一次操作,不能保存数据。线程安全下面我们先看看Srping中的Bean来辅助理解:Spring中的有状态(Stateful)和无状态(Stateless)无状态的Bean适合用不变模式,技术就是单例模式,这样可以共享实例,提高性能。有状态...

2018-08-24 16:11:12 3394 1

原创 【方向盘】MyBatis基础知识33问(详解面试题)

MyBatis面试题33题

2018-08-24 14:23:09 2482

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

java.util.Arrays类能方便的操作数组,它所有的方法都是静态的。Java1.2为我们提供的。其中Java5和Java8都提供了更多增强方法。 Java有个命名习惯或者说是规范,后面加s的都是工具类,比如Arrays、Collections、Executors等等备注:本博文基于JDK8讲解有很多开发了很多年的人,只使用过它的asList方法去快速构建一个List,...

2018-08-23 15:01:50 1125

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

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

2018-08-21 17:02:54 809 1

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

Future模式的设计思想,将在不久的将来大行其道。特别Reactive编程和Spring5的推出,此思想将越来越流行。而Java的Futrue模式属于代码层面的实现案例(也可以说是语法层面。Linux的epoll函数算是操作系统底层的实现)Futrue模式简介Future模式有点类似于网上购物,在你购买商品,订单生效之后,你可以去做自己的事情,等待商家通过快递给你送货上门。Fut...

2018-08-21 16:19:06 1408

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

应该有很多人不知道IdentityHashMap的存在,其中不乏工作很多年的Java开发者,会有很多人以为这是第三方jar包,实际上它是Jdk源码自带的集合类。本文主要讲解IdentityHashMap的使用和他的一些特性。很多场景上使用它,会让你事半功倍。对Map的认识其实我们对Map都有一个通用认知:只要key相同,就不能重复往里面put,但是你真的了解“相同”这两个字吗?看下...

2018-08-21 02:52:58 26051 15

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

Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特点功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。本文讲述System类,需要了解Runtime类的,前往:【小家java】聊聊Java中的Runtime类主要APISystem类提供了代表标准输入、标准输出和错误输出的类变量,并提供一些静态方法用于访问环境变量、...

2018-08-20 23:19:56 1167

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

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

2018-08-20 18:06:04 731

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

源码解释:先贴一下String类的申明代码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}它最大的一个特点是被final修饰了。我们先看看官方怎么解释: Strings are constant; their va...

2018-08-18 18:06:17 1790

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

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

2018-08-18 17:09:18 7007

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

2018年3月20日,Java 10 正式发布,这一次没有跳票它号称有109项新特性,包含12个JEP。需要注意的是,本次Java10并不是Oracle的官方LTS版本,所以咱们可以先了解新特性。然后坐等java11的发布再考虑在生产中使用吧特性列表1、局部变量的类型推断 var关键字这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与...

2018-08-18 14:28:48 4865 1

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

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

2018-08-18 01:07:34 6156 2

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

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

2018-08-17 21:37:52 4317

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

Java6开发代号为Mustang(野马),于2006-12-11发行.评价:鸡肋的版本,有JDBC4.0更新、Complier API、WebSevice支持的加强等更新。十大新特性(其实都比较鸡肋,对开发者来说)1、Web Services优先支持编写 XML web service 客户端程序。你可以用过简单的annotaion将你的API发布成.NET交互的...

2018-08-17 21:13:14 4700

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

特性列表泛型枚举自动装箱拆箱可变参数注解foreach循环(增强for、for/in)静态导入格式化(System.out.println 支持%s %d等格式化输出)线程框架/数据结构 JUCArrays工具类/StringBuilder/instrument1、泛型所谓类型擦除指的就是Java源码中的范型信息只允许停留在编译前期,而编译后的字节码文件中将不再...

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

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

读源码,找根因

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

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

面试题-大杂烩

2018-08-15 23:39:37 1182

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

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

2018-08-15 23:31:57 3391

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

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

2018-08-08 19:47:37 4186 1

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

我们为什么需要 Stream APIStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。 集合讲的是数据,流讲的是计算Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate opera...

2018-08-08 19:04:15 8423 4

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

方法引用的定义简单地说,就是一个Lambda表达式。方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。当Lambda表达式中只是执行一个方法调用时,不用Lambda表达式,直接通过方法引用的形式可读性更高一些。因为我们的Lambda表达式可能仅仅调用一个已经存在的方法(比如只有:System.out.pr...

2018-08-08 18:03:40 1755

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

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

2018-08-08 12:21:26 6251

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

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

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

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

空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很...

2018-08-07 02:54:57 9874 7

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

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

2018-08-05 11:27:28 7230 7

YourBatman的端午节祝福:代码雨可执行jar包

一年一度的端午节到了,基于Java的AWT写了一个“代码雨”,寄托笔者对大家的祝福,这是可执行jar包,下载下来直接执行"java -jar codeRainApp.jar"即可运行看到效果

2022-06-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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