自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小泽

java

  • 博客(70)
  • 收藏
  • 关注

原创 什么是类加载器,类加载器有哪些?

权限定名:包名和类名

2020-03-22 20:53:35 1661

原创 什么是类加载器?类加载器有哪些

2020-03-22 20:51:22 759

原创 volatile关键字和AtomicInteger

在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包,JDK 1.5开始出现的。下面一起来看看它怎么使用。一、volatile关键字与内存可见性1、内存可见性:先来看看下面的一段代码:上图中这段代码很简单,就是一个ThreadDemo类继承R...

2020-03-22 16:25:05 1561

原创 键值的 key 和 value 允许为null吗

maP

2020-03-22 10:15:54 1245

原创 HashMap和ArrayList初始大小和扩容后的大小

创建HashMap对象默认情况下,数组大小为16。开始扩容的大小=原来的数组大小*loadFactor。扩容后大小是原来的2倍,其中加载因子loadFactor的默认值为0.75,这个参数可以再创建对象时在构造方法中指定。例如:16*0.75=12,默认创建一个map对象数组大小是16,当map添加12个元素到的时候就发生扩容,创建新的数组的大小2*16=32,然后重新计算每个元素...

2020-03-22 09:49:08 677 1

原创 HashMap默认大小和扩容后的大小

put添加的元素Entry就是数组中的元素,每个Map.Entry其实就是一个key-value对,它持有一个指向下一个元素的引用,这就构成了链表。创建HashMap对象默认情况下,数组大小为16。开始扩容的大小=原来的数组大小*loadFactor。扩容后大小是原来的2倍,其中加载因子loadFactor的默认值为0.75,这个参数可以再创建对象时在构造方法中指定。例如:16...

2020-03-22 09:08:54 3743

原创 集合和数组的区别

集合和数组的区别数组是固定长度的;集合可变长度的。数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。...

2020-03-21 21:51:54 291

原创 如何实现数组和 List 之间的转换?

数组转 List:使用 Arrays. asList() 进行转换。List 转数组:使用 List 自带的 toArray() 方法

2020-03-21 21:32:14 1064

原创 BeanFactory与FactoryBean的区别

spring不允许我们直接操作 BeanFactory bean工厂,所以为我们提供ApplicationContext 这个接口 此接口继承BeanFactory 接口,ApplicationContext包含BeanFactory的所有功能,同时还进行更多的扩展。BeanFactory是个Factory,也就是IOC容器或对象工厂。在Spring中,所有的Bean都是由BeanFac...

2020-03-21 21:16:01 181

原创 启动项目出现com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常解决方法

启动SpringBoot项目失败mysql连接错误2020-03-21 20:16:25.193 INFO 8204 --- [ main] com.cnadmart.ApiApplication : Starting ApiApplication on DESKTOP-NFT332E with PID 8204 (D:\gunangpinhui...

2020-03-21 20:27:50 3647 1

原创 Cannot access repo1 (http://repo1.maven.org/maven2) in offline mode and the

我在maven打包的时候出现问题,报错如下:解决方法:方法一:如果你出现了如上错误,是因为你的离线模式而导致的依赖的jar包或者需要的插件不能够联网下载箭头处按钮不能点,点击后表示离线模式方法二:idea里面点击File,然后点击Settings,选择maven,那个Work offine不能打勾,把勾去掉...

2020-03-21 18:47:40 1375

原创 IOC和DI是什么?

IoC (Inversion of Control) 控制反转 什么是控制反转?控制反转是就是应用本身不负责依赖对象的创建和维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就有应用转移到了外部容器,控制权的转移就是控制反转。DI (Dependency Injection) 依赖注入 什么是依赖注入?依赖注入是指:在程序运行期间,由外部容器动态地将依赖对象注入到组件中如:...

2020-03-21 11:27:32 118

原创 Java中三种Set的实现类的用法和区别

Java为开发者提供了大量的工具类,这给开发人员带来了很大方便,但是选择多了也有困扰,究竟用哪个类;我想选择什么,一是看自己具体需求,二是类本身的性能和用法;Java中提供了HashSet、TreeSet、LinkedHashSet三种常用的Set实现,以下具体分析它们的用法和性能。我们使用Set的原因是Set集合不包含重复元素,HashSet、TreeSet和LinkedHashSet三种类...

2020-03-19 23:56:45 2166

原创 怎么确保一个集合不能被修改?

我们很容易想到用final关键字进行修饰,我们都知道final关键字可以修饰类,方法,成员变量,final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的成员变量必须初始化值,如果这个成员变量是基本数据类型,表示这个变量的值是不可改变的,如果说这个成员变量是引用类型,则表示这个引用的地址值是不能改变的,但是这个引用所指向的对象里面的内容还是可以改变的。那么,我们怎么确保一个...

2020-03-19 22:59:40 3618

原创 Collection和Collections区别

1.Collection:是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作。Collection接口是Set接口和List接口的父接口Collection接口的方法2.CollectionsCollections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作。最根本的是Collec...

2020-03-19 21:15:35 289

原创 迭代器(Iterator)遍历的两种方法(for和while)

一般遍历list的时候,我们习惯下面的写法,但这种写法有缺陷,不能及时释放iterator的内存while循环遍历@Testpublic void testIteratorWhile(){ ArrayList<String> lists = new ArrayList<>(); lists.add("A"); lists.add("B"...

2020-03-19 17:26:49 2093

原创 循环的时候去删除集合中的元素 java.util.ConcurrentModificationException

使用for循环,删除集合中的元素,会报错 java.util.ConcurrentModificationException只能通过迭代器iterator删除1:在while循环中使用iterator迭代器删除集合中元素2:在for循环中使用iterator迭代器删除集合中元素3:使用for循环集合中元素的时候,可以使用Copy...

2020-03-19 17:12:35 269

原创 Java中异常

首先我们要知道RuntimeException与Exception之间的关系与他们分别的含义:①在Java中异常的基类为Throwable,他有两个子类Exception与Errors,同时RuntimeException就是Exception的子类;②RuntimeException,即运行时异常,为非受检(UNCHECKED)异常;③Exc...

2020-03-19 14:59:49 108

原创 JDK动态代理

JDK动态代理在继续探究前,先简单带过一下动态代理。 代理模式主要功能是为了增强一个类中的方法诞生的一种设计模式。 而代理模式分为动态代理和静态代理,动态代理的代理类是在运行时生成的,而静态代理是在编译时生成的。动态代理可以分为基于接口的JDK动态代理和基于类的Cglib动态代理。下面讲解一下基于JDK的动态代理: 在 java 的java.lang.reflect包下提供了一个Proxy...

2020-03-18 15:46:45 91

原创 MQ削峰

2020-03-17 21:39:10 225

原创 使用MQ进行异步化

2020-03-17 21:09:51 751

原创 如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)

分析:这个问题其实换一种问法就是,如何保证消息队列的幂等性?这个问题可以认为是消息队列领域的基本问题。换句话来说,是在考察你的设计能力,这个问题的回答可以根据具体的业务场景来答,没有固定的答案。回答:先来说一下为什么会造成重复消费?其实无论是哪种消息队列,造成重复消费原因其实都是类似的。正常情况下,消费者在消费消息的时候,消费完毕后,会发送一个确认消息给消息队列,消息队列就知...

2020-03-17 14:27:23 892

原创 Spring中Bean的作用域都有哪些?

2020-03-16 15:11:02 614

原创 BeanFactory和ApplicationContext有什么区别?

BeanFactory:是Spring里面最底层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能ApplicationContext:应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;1:国际化(MessageSource)2:访问资源,如URL和文件(ResourceLoader)3:载入...

2020-03-16 12:47:45 125

原创 同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier

如果一个接口有2个以上不同的实现类, 那么如何Autowire一个指定的实现1:首先,UserService接口有两个实现类 UserService1和 UserService2UserService接口2:以下是UserService接口的两个实现类UserService1和UserService2,请注意@service注解的使用方式,这里给每个实现类标注了不同的...

2020-03-16 12:30:41 2506

原创 docker安装Sentinel

1:拉取镜像:docker pull bladex/sentinel-dashboard2:启动docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard3:访问http://公网ip:88584:登录,用户名和密码都是sentinel...

2020-03-15 21:25:47 2020

转载 Sentinel介绍和Windows下安装Sentinel-dashboard

Sentinel 是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下...

2020-03-15 13:01:37 4542 3

原创 static用途

static关键字的用途一句话描述就是:方便在没有创建对象的情况下进行调用(方法/变量)。显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static可以用来修饰类的成员方法、类的成员变量,另外也可以编写static代码块来优化程序性能static方法static方法也成为静态方法,由于静态方法不依赖于任何对象...

2020-03-14 17:01:54 77

原创 抽象类能使用 final 修饰吗?

抽象类就是要被继承的,不能用final声明,final声明的类不可继承

2020-03-14 11:44:48 418

原创 普通类和抽象类有哪些区别?

抽象类不能被实例化 抽象类可以有抽象方法,抽象方法只需申明,无需实现 含有抽象方法的类必须申明为抽象类 抽象类的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类 抽象方法不能被声明为静态static 抽象方法不能用 private 修饰,因为抽象类的方法是需要继承之后让子类去实现的,如果为Private,则无法被子类继承,子类也无法实现该方法,JDK 1.8以前,抽象类的方法默认...

2020-03-14 11:25:33 425

原创 抽象类必须要有抽象方法吗?

答案是:不必须。这个题目主要是考察对抽象类的理解。说一下我个人的理解吧。1.如果一个类使用了abstract关键字修饰,那么这个类就是一个抽象类。2.抽象类可以没有抽象方法3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。抽象类只能用其子类(该子类不能是抽象类)去创建新对象。...

2020-03-14 11:13:06 4021

原创 String str="Hello" 与 String str=new String(“Hello”)一样吗?

为什么会输出上边的结果呢,String x = "Hello" 的方式,Java 虚拟机会将其分配到常量池中,而常量池中没有重复的元素,比如当执行“Hello”时,java虚拟机会先在常量池中检索是否已经有“Hello”,如果有那么就将“代理”的地址赋给变量,如果没有就创建一个,然后在赋给变量;而 String z = new String(“Hello”) 则会被分到堆内存中,即使内容一样还...

2020-03-14 10:51:22 680

原创 final 在 java 中有什么作用?

final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。特征:凡是引用final关键字的地方皆不可修改!(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。相信大家都具备基本的常识: 被final修饰的变量是不能够被改变的. 但是这里的"不能够被改变"对于不同的数据类型是有不同...

2020-03-14 09:48:49 1101

原创 说一下 runnable 和 callable 有什么区别?

主要区别Runnable 接口 run 方法无返回值;Callable 接口 call 方法有返回值,支持泛型 Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call 方法允许抛出异常,可以获取异常信息RunnableCallable...

2020-03-13 17:25:05 2262

原创 线程和进程的区别?

进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。一个程序至少有一个进程,一个进程至少有一个线程。

2020-03-13 17:08:25 77

原创 并行和并发有什么区别?

并发:是指多个线程任务在同一个CPU上快速地轮换执行,由于切换的速度非常快,给人的感觉就是这些线程任务是在同时进行的,但其实并发只是一种逻辑上的同时进行; 并行:是指多个线程任务在不同CPU上同时进行,是真正意义上的同时执行。下面贴上一张图来解释下这两个概念:上图中的咖啡就可以看成是CPU,上面的只有一个咖啡机,相当于只有一个CPU。想喝咖啡的人只有等前面的人制作完咖啡才能...

2020-03-13 17:05:05 5884 2

原创 Java哪些集合类是线程安全的?

Hashtable:就比Hashmap多了个线程安全,Hashtable加了synchronized关键字Vector:就比Arraylist多了个同步化机制(线程安全)。ConcurrentHashMap:是一种高效但是线程安全的集合。Stack:栈,也是线程安全的,继承于Vector...

2020-03-13 16:56:13 867

原创 Iterator与ListIterator有什么区别

Iterator与ListIterator区别如下:1、Iterator是ListIterator的父接口。2、Iterator是单列集合(Collection)公共取出容器中元素的方式。对于List,Set都通用。而ListIterator是List集合的特有取出元素方式。3、Iterator中具备的功能只有hashNext(),next(),remove();ListIterato...

2020-03-13 16:44:29 3318

原创 怎么确保一个集合不能被修改

集合(map,set,list)都是引用类型,所以我们如果用final修饰的话,集合里面的内容还是可以修改的。可以使用 Collections. unmodifiableCollection(Collection c) 方法来创建一个只读集合,这样改变集合的任何操作都会抛出 Java. lang. UnsupportedOperationException 异常。示例代码:...

2020-03-13 16:35:39 252 1

原创 学习笔记~~~~~Set接口实现

Java中提供了HashSet、TreeSet、LinkedHashSet三种常用的Set实现,以下具体分析它们的用法和性能。我们使用Set的原因是Set集合不包含重复元素,HashSet、TreeSet和LinkedHashSet三种类型什么时候使用它们,使用哪个这是一个很重要的选择性问题,正确的选择会大大提升程序运行效率;总结一下,如你的需求是要一个能快速访问的Set,那么就要用HashS...

2020-03-13 13:52:26 167

空空如也

空空如也

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

TA关注的人

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