自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 JDK8新特性之Optional(四)

JDK8新特性之OptionalOptional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException),Optional类在java.util包下,是一个容器类,它可以保存类型T的值,代表这个值存在;或者仅仅保存null,表示这个值不存在。原来用null表示一个值不存在,现在Optional可以更好的表达这个概念,并且可以避免空指针异常。Optional类的javadoc描述如下:这是一个可以为null的容器对象,如果值存在则ispresent()会返回true,调用get

2021-09-19 19:45:15 222

原创 JDK8新特性之Stream API(三)

JDK8新特性之Stream API(三)JAVA8中有两个最为重要的改变第一个是Lambda表达式,这个在JDK8新特性之Lambda表达式(一),JDK8新特性之方法引用(二)这两篇文章中介绍过,另一个则是Stream API。Stream API 介绍Stream API(java.util.stream)是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射等操作,简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。St

2021-09-18 17:48:57 346

原创 Feign调用开启Hystrix时无法获取ThreadLocal

Feign调用开启Hystrix时无法获取ThreadLocal解决方法将hystrix的enabled设为false,feign.hystrix.enabled=false将ThreadLocal换成InheritableThreadLocal,也就是ThreadLocal threadLocal = new InheritableThreadLocal<>();事情起因在微服务项目中使用threadLocal存放了用户信息,在使用feign调用的时候需要将用户参数发送给另一个微

2021-09-18 17:06:59 1267

原创 JDK8新特性之方法引用(二)

JDK8新特性之方法引用(二)在看方法引用之前我推荐大家去看下我之前写的JDK8新特性之Lambda表达式(一),因为方法引用是基于Lambda的,如果对函数式接口和Lambda表达式还不是特别理解的话对于方法引用可能理解起来有一定难度。方法引用介绍当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用方法引用可以看做是Lambda表达式深层次的表达,换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个

2021-09-17 09:45:40 176

原创 JDK8新特性之Lambda表达式(一)

JDK8新特性之Lambda表达式(一)函数式接口在了解Lambda表达式之前我们必须了解一下函数式接口,Lambda表达式实际上是依赖于函数式接口的。定义如果一个接口中,只声明了一个抽象方法,那么这个接口就成为函数式接口。我们一般使用@FunctionalInterface来标注,这个注解的作用是检验一个接口是否是函数式接口,这个注解是非必须的,换句话说如果一个不加这个注解但是只有一个抽象方法那么这个接口仍然是函数式接口。但是但最好在接口上使用注解@FunctionalInterface进行声明

2021-09-17 09:41:49 194

原创 数据库设计三大范式

数据库设计三大范式一个设计合理的表,能给服务器性能带来很大的提高,因此如何设计出比较合理的表就比较重要了,设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则 就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式,一般我们设计数据库表的时候只要满足第三范式(3NF)就够了,下面就对这几种范式进行简单讲解。概念在介绍三大范式之前我们先要了解几种概念:键字=码字,所以 主键=主码=主关键字,候选键=候选码=

2021-09-16 10:38:40 241

原创 HashMap在JDK1.8和JDK1.7的区别(详解)

HashMap在JDK1.8和JDK1.7的区别结论先说结论,HashMap在1.7和1.8中最大的区别就是底层数据结构的变化,在1.7中HashMap采用的底层数据结构是数组+链表的形式,而在1.8中HashMap采用的是数组+链表+红黑树的数据结构(当链表长度大于8且数组长度大于等于64时链表会转成红黑树,当长度低于6时红黑树又会转成链表),红黑树是一种平衡二叉搜索树,它能通过左旋、右旋、变色保持树的平衡,关于红黑树大家想了解的可以自行百度,这里不再讲述。之所以用红黑树是因为他能够大大提高查找效率,

2021-09-16 10:38:00 3796 1

原创 Class类下的getResource和ClassLoader类下的getResource方法使用和区别

Class类下的getResource和ClassLoader类下的getResource方法使用和区别通过getResource(String name)方法,我们能获得一个URL对象读取资源先说结论:1. MyClass.class.getResource(“xxx”)方法中传的参数如果是相对路径,那么传递的路径是相对于MyClass而言2. MyClass.class.getResource("/xxx")方法中传的参数如果是绝对路径,那么传递的路径是相对于classpath而言3.MyCl

2021-09-16 10:36:34 1347

原创 装饰者(装饰器)模式

装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有类的一个包装。装饰器在代码程序中适用于以下场景:用于扩展 一个类的功能或者给一个类添加附加职责动态的给一个对象添加功能,这些功能可以再动态的撤销为什么要用装饰器模式装饰器模式能很好的解决过多的继承所带来的问题,下面我们通过一个例子来看看装饰器模式的作用。生活中我们很多人都很喜欢喝奶茶,只喝奶茶又感觉有点太单调,会加一些配料,比如珍珠、脆啵

2021-09-16 10:35:22 121

原创 适配器模式

适配器模式适配器模式介绍适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。举个简单的例子,现如今许多智能手机为了减小空间的浪费,逐渐取消了3.5mm圆孔的耳机孔,只保留了一个充电和插耳机通用的type-c孔,那么为了能让我们圆形耳机孔能适配type-c口,我们只需要买一个转接头就能将圆孔转换成type-c口就能正常使用圆孔耳机了。适配器适用于以下几种业务场景:1、已经存在的类,它的方法和需求不匹配的情况。2、适

2021-09-16 10:34:50 625

原创 模板模式(Template Pattern)

模板模式首先来看一下模板模式的简介:模板模式(Template Pattern),一是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为性设计模式。模板方法适用于以下应用场景:1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。2、各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。生活中的很多小事都是模板模式的体现,比如我们去医院看病的流程:1.挂号 2.看病3.做检查 4.

2021-09-16 10:27:14 480

原创 委派模式和策略模式

委派模式和策略模式委派模式什么是委派模式?维基百科对委派模式的解释是:委派模式(delegation pattern)是软件设计模式中的一项基本技巧。在委派模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来代理。委派模式的基本作用就是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在Spring中应用非常多,大家常用的DispatcherServlet其实就是用到了委派模式。现实生活中

2021-09-16 10:24:41 361

原创 JDK动态代理和CGLIB动态代理浅析

代理模式浅析1.什么是代理模式什么是代理模式呢,首先举个简单的例子,张三(用户)想要一张演唱会的门票但是自己没有渠道购买,这时他的朋友李四(代理人)说他能够买到演唱会的门票(被代理方法),张三只需要请李四帮忙购买门票即可,至于李四是怎么买的通过什么方式买的张三并不需要知道。代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。使用代理模式主要有两个目的:一是保护目标对象,而是增强目标对象

2021-09-16 10:21:11 195

原创 java.io.IOException: UT010029: Stream is closed

java.io.IOException: UT010029: Stream is closed记录一次项目中的异常,在做下载文件时,文件虽然能够导出来但是系统中却出现了一堆报错信息。java.io.IOException: UT010029: Stream is closed通过报错信息可以看出这个异常是流被关闭了,在我们学JAVA基础时我们知道,使用I/O流时要及时关闭。但是如果关闭的不合理也是有问题的,这个错误是由于这个流被关闭了,而在其他地方又用到了这个流,所以获取不到流就会报错了。定位到了大

2021-09-16 10:17:54 25829

原创 Integer类型和int类型作比较出现空指针异常

错误重现User user =new User();user.setFullName("kobe");user.setMobile("177****8028");user.setCount(null);// 获取count的值Integer num = user.getCount();if(num ==0){System.out.println("相等");}运行结果:java.lang.NullPointerException装箱和拆箱在JDK1.5以后基本

2021-09-16 10:13:38 1774

空空如也

空空如也

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

TA关注的人

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