自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (1)
  • 收藏
  • 关注

原创 自定义Ribbon负载均衡定义名称错误问题处理{Invalid bean definition with name....}

Invalid bean definition with name 'mySelfRule' defined in com.atguigu.MyLb.MySelfRule: Bean name derived from @Bean method 'mySelfRule' clashes with bean name for containing configuration class; please make those names unique!@Configuration里含有@Component

2021-06-04 20:14:56 1338 1

原创 设计模式之建造者模式

建造者模式定义产品的组成部分是不变的,但每一部分是可以灵活选择的。模式的结构与实现建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。模式的结构建造者(Builder)模式的主要角色如下。产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。具体

2021-05-30 15:55:22 101

原创 设计模式之原型模式

场景案例原型(Prototype)模式的定义如下:​ 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。深拷贝案例:public class AppTest { public static void main(String[] args) throws CloneNotSupportedException { Student student1 = new Student(); student1.setAddress("山东"

2021-05-30 15:47:19 84

原创 设计模式之工厂模式

学习工厂设计模式,必须知道的相关概念:1.产品:类2.抽象产品:抽象类、接口3.产品簇4.产品等级简单工厂把代码分为服务端和客户端代码//客户端public class AppTest { public static void main(String[] args) { Food food = new Hamburger(); food.eat(); }}//=======================================

2021-05-28 14:54:52 144

转载 设计模式六大原则(1)单一职责原则

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。​ 说到单一职责原则,很多人都会不屑一顾。因为它太简单了。稍有经验的程序员即使

2021-05-27 22:58:01 78

原创 ArrayList详解

ArrayList底层数据结构默认初始化容量为10的数组(底层先创建一个长度为0的数组,当添加第一个元素的时候,初始化容量为10)ArrayList是线程非安全的Arraylist集合的扩容:增长到原容量的1.5倍。Arraylist集合底层是数组,怎么优化?尽可能少的扩容。因为数组扩容效宰比较低,建议在使用ArrayList集合的时候预估计元素的个数,给定一个初始化容量。数组优点:检索效率比较高。( 每个元素占用空间大小相同,内存地址是连续的,知道首元素内存地址,然后知道下标,通

2021-03-26 00:10:30 357

原创 阻塞队列

阻塞队列介绍线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素当阻塞队列是空时,从队列中获取元素的操作将会被阻寒。当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。试图往己满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程从列中移除一个或者多个元素或者完全清空队列后使队列重新变得空闲起来并后续新增为什么用?有什么好处?在多线程领域:​ 所谓阻塞,在某些情况下会挂起线程(即阻塞),

2021-03-25 00:13:14 179 1

原创 计数器

CountDownLatch让一-些线程阻塞直到另一些线程完成一 系列操作后才被唤醒CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。public class TestCountry { public static void main(String[] args) {

2021-03-25 00:09:42 108

原创 CAS

CASCAS—>UnSafe —>CAS底层思想—> ABA —>原子引用更新—>如何规避ABA问题CAS是什么?比较并交换 compareAndSet,比较第一次读取的值和期望值是否相同,相同的话就进行交换。public class Test01 { public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger(5);

2021-03-25 00:05:18 90

原创 AQS

可重入锁显示锁ReentrantLock和隐显锁synchronized 都是可重入锁,可重入锁从一定程度上可以避免死锁package ss;import java.util.concurrent.locks.ReentrantLock;/** * 肥蛋 * 2021/3/24 */public class RLock { static ReentrantLock lock = new ReentrantLock(); public static void main(St

2021-03-25 00:02:30 171

原创 java面试 持续更新中

JDK,JRE,JVM的区别jdk是java开发工具包jre是java运行环境jvm是java虚拟机,提供了执行字节码文件的能力jvm是java跨平台的核心,但是jvm本身并不是跨平台的,不同平台需要安装不同的jvm。java源文件-------------》class字节码文件---------》运行到不同操作系统的JVM上==和equals的区别==比较基本数据类型比较的是值,比较引用数据类型比较的是内存地址equals默认比较的是地址,因为最初默认这个方法定义在Object上,比较的是

2021-03-19 00:17:55 151

原创 多线程之线程池

为什么用线程池?优势?线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过重复利用己创建的线;程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还

2021-03-18 00:12:16 201

原创 多线程

多线程的相关概念1进程和线程.1进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。可以把进程简单的理解为正在操作系统中运行的一个程序.1.2线程线程(thread)是进程的一个执行单元.一个线程就是进程中一个单一顺序的控制流, 进程的一个执行分支。进程是线程的容器,一个进程至少有一个线程.一个进程中也可以有多个线程.java程序中最少有两个进程并发,一个是垃圾回收器GC,一个是Main方法执行主线程2主线程和子线程2.1主线程

2021-03-18 00:08:44 200

原创 反射机制

**反射机制的作用:**通过反射机制来访问class文件的java对象的属性,方法,构造方法等获取字节码文件常用的三种方法:第一种:Class c1 = Class.forName(“java.lang.String”);完整包名+类名 静态方法方法参数是一个字符串字符串需要时一个完成的类名 完整的类名必须带有包名第二种:Class c2 = 对象.getClass();第三种方式 java中任何一种类型,都有相对应的class属性。Class z = String.class; Class m

2020-07-07 15:18:46 126

原创 注解

概念:说明程序的。给计算机看的●注释:脑字描述程序的。给程序员看的●定义:注解(Annotation) ,也叫元数据。 一种代码级别的说明。 它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量方法参数等的前面,用来对这些元素进行说明,注释。●概念描述:●JDK1.5之后的新特性●说明程序的●使用注解: @注解名称●作用分类:①编写文档:通过代码里标识的注解生成文档[生成文档doc文档]我们自己不能改的,比如@since②

2020-07-05 12:13:56 89

原创 Date类常用方法

java. util . Date类的toString()方法已经被重写了。输出的应该不是一个对象的内存地址,应该是一个日期字符串。System. out.println(nowTime); //Thu Mar 05 10:51:06 CST 2020日期可以格式化吗?SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss SSS”)将日期类型Date ,按照指定的格式进行转换:Date 转换成具有一定格式的日期字符串–&g

2020-07-05 11:27:54 284

原创 String类和StringBuffer/StringBuilder常用方法

关Java JDK中内置的一个类:java. lang. String的介绍1、String表示字符串类型,属于引用数据类型,不属于基本数据类型。2、在java 中随便使用双引号括起来的都是String对象。例如: “abc”,“def”, “hello world!” ,这是3个String对象。3、java 中规定,双引号括起来的字符串,是不可变的,也就是说"abc"自出生到最终死亡,不可变,不能变成"abcd",也4、在JDK 当中双引号括起来的字符串,例如: “abc” “def” 都是直接

2020-07-04 20:02:08 471

原创 集合继承图集合总结

引用的别人的继承图

2020-06-10 15:35:19 484

原创 集合collection常用的方法和深入remove方法和contains方法

1. Collection中能存放什么元素?没有使用“泛型”之前, Collection中可以存储object的所有子类型。使用了“泛型”之后, Collection中只能存储某个具体的类型。集合后期我们会学习“泛型”语法。目前先不用管。Collection中什么都能存,只要是object的子类型就行。( 集合中不能直接存储基本数据类型,也不能存java对象,只是存储java对象的内存地址。)2. Collection 中的常用方法boolean add(0bject e)向集合中添加元素i

2020-06-01 11:01:51 434

原创 怎么自定义异常类

自定义异常类,手动抛出异常publi class WeaponExpection extends Exception{ public WeaponExpection() { } public WeaponExpection(String message) { super(message); }}在存在报错的地方 throw new WeaponExpection(“字符串”)。...

2020-05-29 11:55:33 141

原创 两种异常解决办法

处理异常的第一种方式:在方法声明的位置上使用throws关键字抛出,谁调用我这个方法,我就抛给谁。抛给调用者来处理。里这种处理异常的态度: 上报。处理异常的第二种方式:使用try… catch语句对异常进行捕捉。这个异常不会上报,自己把这个事儿处理了。异常抛到此处为止,不再上抛了。注意:只要异常没有捕捉,采用上报的方式,此方法的后续代码不会执行。另外需要注意, try语句块中的某-行出现异常,该行后面的代码不会执行。try… catch捕捉异常之后,后续代码可以执行。尝试深入理解try

2020-05-29 11:53:29 218

原创 final finally finalize 的区别是什么

final关键字表示不可变的,最终的。final修饰的类无法继承final修饰的方法无法覆盖final修饰的变量无法重新赋值,引用的值可以修改,但是内存地址不变。finally和try catch连用,并且一定会执行,try不可以单独使用,但是可以和finally联合使用(这里指的不用catch)。注意:代码执行顺序从上自下。这个结果输出的是100,并不是101,实际运行中会让int j = i; 然后j ++ 返回i 的值public static int m(){ int i =

2020-05-29 11:45:27 76

原创 异常的基本概念

异常1、什么是异常, java提供异常处理机制有什么用?以下程序执行过程中发生了不正常的情况,而这种不正常的情况叫做:异常java语言是很完善的语言,提供了异常的处理方式,以下程序执行过程中出现了不正常情况,java把该异常信息打印输出到控制台,供程序员参考。程序员看到异常信息之后,可以对程序进行修改,让程序更加的健壮。什么是异常:程序执行过程中的不正常情况。异常的作用:扩强程序的健壮性。2、以下程序执行控制台出现了:Exception in thread “main” java. lan

2020-05-22 19:36:22 320

原创 枚举

枚举:1、枚举是一种引用数据类型2、故举类型怎么定义,语法是?enum 枚举类型名{枚举值1,枚举值2}3、结果只有两种情况的,建议使用布尔类型。结果超过两种并且还是可以一枚-枚列举出来的,建使用枚举类型。例如:颜色、四季、星期等都可以使用枚举类型注意: 一枚一枚可以列举出来的,才建议使用枚举类型。 枚举编译之后也是生成class文件。 枚举也是一种引用数据类型。 枚举中的每一个值可以看做是常量。枚举的基本用法:...

2020-05-22 18:11:05 109

空空如也

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

TA关注的人

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