
基础
way_more
You can be way more.
展开
-
泛型是什么?泛型T,E,K,V又是什么?这篇文章告诉你
目录前言泛型带来的好处泛型通配符**?和 T 的区别**Class和Class<?>区别前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知转载 2020-12-24 21:30:23 · 2061 阅读 · 0 评论 -
@Resource和@Autowired的共同点与不同点
目录共同点:不同点:共同点:@Resource和@Autowired都是用于bean的注入@Resource和@Autowired都可以标注在字段和方法上不同点:@Autowired为Spring提供的注解,导入的依赖为org.springframework.beans.factory.annotation.Autowired@Resource由J2EE提供,导入的依赖为javax.annotation.Resource@Autowired注解默认是按照类型(byType)装配依赖对象,如果原创 2020-12-06 21:14:33 · 390 阅读 · 0 评论 -
AOP如何对方法入参和出参进行增强处理,看完你就懂了
目录前言前提AOP增强入参和出参前言很多时候,我们会需要对方法的入参或者出参进行一些额外的处理,这时候使用AOP可以很好的满足我们的需求。因为AOP的侵入性较低,与业务逻辑的代码耦合度低,并且有较好的可重用性,开发效率较高。下面摘抄一些关于AOP的介绍AOP意为面向切面编程,AOP是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,利用AOP可以对业务逻辑的各个部分进行隔离,从原创 2020-12-02 21:41:27 · 7726 阅读 · 0 评论 -
List去除重复数据的五种方式
目录前言1.使用LinkedHashSet删除arraylist中的重复数据2.使用java8新特性stream进行List去重3.利用HashSet4.利用List的contains方法5.双重for循环去重前言在很多时候,我们都需要对List里的数据进行去重,下面我们就介绍下List去除重复数据的五种方式1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:1、转载 2020-11-23 22:29:44 · 13246 阅读 · 1 评论 -
Java中数组转List的三种方法优劣对比
目录前言二.数组转为List后,支持增删改查的方式三.通过集合工具类Collections.addAll()方法(最高效)四.Java8可通过stream流将3种基本类型数组转为List额外前言本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。关键代码:List list = Array转载 2020-11-23 21:00:52 · 390 阅读 · 0 评论 -
BigDecimal的舍入模式
目录前言舍入模式前言在对BigDecimal的计算中,我们可能会用到BigDecimal的舍入模式例:bigDecimal.divide(bigDecimal2,2, RoundingMode.DOWN);下面我们就来看一下BigDecimal 的舍入模式,在旧版本舍入模式是在BigDecimal中用常量表示,例:BigDecimal.ROUND_DOWN。在新版本中,舍入模式是放在了枚举类RoundingMode中如下:public enum RoundingMode { UP(原创 2020-10-26 20:47:35 · 383 阅读 · 0 评论 -
看完你就懂什么是序列化和反序列化了
序列化和反序列化序列化:把对象转换为字节序列的过程称为对象的序列化.反序列化:把字节序列恢复为对象的过程称为对象的反序列化.什么时候需要用到序列化和反序列化呢?当我们只在本地JVM里运行下Java实例, 这个时候是不需要什么序列化和反序列化的, 但当我们需要将内存中的对象持久化到磁盘, 数据库中时, 当我们需要与浏览器进行交互时, 当我们需要实现RPC时, 这个时候就需要序列化和反序列化了.前两个需要用到序列化和反序列化的场景, 是不是让我们有一个很大的疑问? 我们在与浏览器交互时, 还有将内存转载 2020-10-26 20:39:38 · 1514 阅读 · 1 评论 -
JAVA中try、catch、finally带return的执行顺序总结
目录前言一、try中带有return二、catch中带有return三、finally中带有return总结:前言异常处理中,try、catch、finally的执行顺序,大家都知道是按顺序执行的。即,如果try中没有异常,则顺序为try→finally,如果try中有异常,则顺序为try→catch→finally。但是当try、catch、finally中加入return之后,就会有几种不同的情况出现,下面分别来说明一下。也可以跳到最后直接看总结。一、try中带有return private转载 2020-09-14 21:36:32 · 914 阅读 · 0 评论 -
解析@RequestBody和@ResponseBody 注解
@RequestBody作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上; ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。使用时机:A) GET、POST方式提时, 根据request header Content-Type的值来判断:1、application/x-www-form-urlencoded转载 2020-08-24 20:37:18 · 494 阅读 · 0 评论 -
获取随机数的n种方法,你知道几种
目录前言1、使用Math.random()方法2、Random类3、ThreadLocalRandom4、UUID5、 获取字母和数字的随机数前言在项目中,我们常常会用到随机数,那你知道几种随机数的生成方法呢,在这里,分享一下我知道的随机数生成方法1、使用Math.random()方法Math.random() 产生的随机数是0-1之间的一个double数值,有15位小数,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机Math.random()获取到的随机数如下0.619原创 2020-07-15 19:39:02 · 21016 阅读 · 0 评论 -
正则表达式原来这么强大,还不赶紧学一学
正则表达式正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:runoo+b,可以匹配 runoob原创 2020-06-21 16:39:36 · 793 阅读 · 0 评论 -
这么详细的Java8日期时间API,还不赶紧收藏起来(四):ZoneId和ZonedDateTime
ZoneIdjava.time.ZoneId类表示时区ID声明:public abstract class ZoneId implements Serializable ZoneId可以用于在Instant和LocalDateTime之间转换的规则。 有两种不同类型的ID:固定偏移量 - 从UTC /格林威治完全解析的偏移量,对所有本地日期时间使用相同的偏移量地理区域 - 适用于查找UTC /格林威治的偏移量的特定规则集的区域ZoneId里有一个SHORT_IDS的map,里面包含了我们常用原创 2020-06-19 22:31:48 · 2001 阅读 · 0 评论 -
这么详细的Java8日期时间API,还不赶紧收藏起来(三):Instant
Instant在时间线上的瞬间点,即一个时间的时间戳Instant声明public final class Instant implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable {这个类是不可变的和线程安全的。Instant只有两个字段,一个是seconds,表示1970-01-01T00:00:00Z到现在的秒数,nanos表示秒数后的纳秒数。 /** *原创 2020-06-18 20:10:06 · 623 阅读 · 0 评论 -
这么详细的Java8日期时间API,还不赶紧收藏起来(二):LocalTime和LocalDateTime
LocalTime声明public final class LocalTime implements Temporal, TemporalAdjuster, Comparable<LocalTime>, Serializable LocalTime是一个不可变的时间对象,代表一个时间,通常被看作是小时 - 秒。 时间表示为纳秒精度。 例如,值“13:45.30.123456789”可以存储在LocalTime 。它不存储或表示日期或时区。LocalTime静态方法p原创 2020-06-17 21:40:58 · 472 阅读 · 0 评论 -
这么详细的Java8日期时间API,还不赶紧收藏起来(一):LocalDate
前言只在JAVA8之前,我们常用的时间API一般就是Date,Calendar类,但我们都知道这些类是线程不安全的,而且有时候使用起来也不是很简洁,所以,JAVA8在java.time包出了新的日期时间API。APIjava.time包主要有以下类型:本地日期和时间:LocalDateTime,LocalDate,LocalTime;带时区的日期和时间:ZonedDateTime;时刻:Instant;时区:ZoneId,ZoneOffset;时间间隔:Duration。注意:使用旧的D原创 2020-06-16 21:09:14 · 339 阅读 · 0 评论 -
Java迭代器,就是这么简单
迭代器迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。迭代器模式(Iterator Pattern) :它提供一种方式访问一个容器对象的各个元素,而又不需暴露该对象的内部细节。Java迭代器相关类1.java.util.Iterator在Java中Iter原创 2020-06-03 16:36:14 · 246 阅读 · 0 评论 -
这就是为什么不能用for循环删除集合元素的原因
前言 public void testMethod(){ List<String> list=new ArrayList<String>(); list.add("1"); list.add("2"); for (String s : list) { if ("1".equals(s)){ list.remove(s); }原创 2020-06-03 15:28:35 · 2587 阅读 · 4 评论 -
Java 基础知识易错点,看完不会再犯了
1. 基础1.1. 正确使用 equals 方法Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。举个例子:// 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常String str = null;if (str.equals("SnailClimb")) { ...} else { ..}运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到转载 2020-06-03 11:49:11 · 276 阅读 · 0 评论 -
final,static,this,super 关键字总结
final 关键字final关键字主要用在三个地方:变量、方法、类。1、对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。2、当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。Java中有许多类是final的,譬如String, Interger以及其他包装类。3、使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修转载 2020-06-02 16:26:53 · 117 阅读 · 0 评论 -
你必须知道的Java反射机制
反射JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。反射可以用来生成动态代理。反射机制的相关类对于一个字节码文件.class,虽然表面上我们对该字节码文件一无所知,但该文件本身却记录了许多信息。Java在将.class字节码文件载入时,JVM将产生一个java.lang.Class对象代表该.class字节码文件,从该Class对象中原创 2020-06-02 15:47:35 · 226 阅读 · 0 评论