自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BeanFactory和ApplicationContext有什么区别?

首先,ApplicationContext是BeanFactory的子接口ApplicationContext提供了更完整的功能:①继承MessageSource,因此支持国际化。②统一的资源文件访问方式。③提供在监听器中注册bean的事件。④同时加载多个配置文件。⑤载入多个(有继承关系)上下文,使得每一个上下文都专注于一个特定的层次,比如应用的web层。BeanFactory采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载

2021-10-22 20:46:57 143

原创 线程中sleep()、wait()、join()、yield()的区别

须知概念1.锁池所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。2.等待池当我们调用wait()方法后,线程会放到等待池当中,等待池的线程是不会去竞争同步锁。只有调用了notify()或notifyAll()后等待池的线程才会开始去竞争锁,notify()是随机从等待池中选出一个线程放到锁池,而notifyAll()是将等待池的.

2021-10-22 15:40:42 428

原创 线程的生命周期?线程有几种状态?

在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。 尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。1.线程通常有5种状态:创建、就绪、运行、阻塞和死亡状态。(1)新建状态(NEW):新建一个线程对象。(2)就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start方法。该状态的线程位于可运行线程池中

2021-10-22 14:32:59 3913

原创 谈谈对AOP的理解

系统是由许多不同的组件所组成,每一个组件各负责一块特定功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责,例如日志、事务管理和安全,这样的系统服务经常融入到自身具有的核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为它们会跨越系统的多个组件。理解:我们有一个旅游网站项目,包含订单接口、支付接口等等,订单接口中可以进行订单的查询的功能,除了这个核心功能外,系统还需做其他的一些事情,如日志和异常处理,但这些与我们的核心逻辑无关。当我们需要为分散的对象引入公共行为的时候,OOP则显得无

2021-10-21 11:15:17 208

原创 Spring是什么?

Spring是轻量级的开源的J2EE框架。Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,用来装javabean(java对象);从大小和开销两方面而言Spring都是轻量级的。通过控制反转(IOC)的技术达到松耦合的目的提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发包含并管理应用对象(Bean)的配置和生命周期,这个意义上是一个容器将简单的组件配置、组合成为复杂的应用,这个意义上是一个框架。它也是一个中间层框架(万能

2021-10-21 10:16:10 51

原创 线程池的相关知识

为什么使用线程池?解释线程池的相关参数?1.降低资源消耗,提高线程的利用率(降低创建和销毁线程的消耗)2.提高相应速度(任务来了,直接有线程可用可执行,而不是先创建线程,再执行)3.提高线程的可管理性(线程是稀缺资源,使用线程池可以统一分配调优监控)corePoolSize:代表核心线程数,也就是正擦情况下创建工作的线程数,这些线程创建后并不会消除,而是一种常驻线程。maxinumPoolSize:代表的是最大线程数,它与核心线程数相对应,表示最大允许被创建的线程数,比如当前任务较多,将核心线程

2021-10-20 21:37:45 98

原创 对线程安全的理解

目前主流操作系统都是多任务的,即多个进程同时运行。为了保证安全,每个进程只能访问分配给自己的内存空间,而不能访问别的进程,这是由操作系统保障的。在每个进程的内存空间中都会有一块特殊的公共区域,通常称为堆(内存)。进程内的所有线程都可以访问到该区域,这就是造成问题的潜在原因。线程安全并不是线程的安全,应该是内存安全,堆是共享内存,可以被所有线程访问。当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的。堆是进程和线程

2021-10-13 21:23:57 61

原创 什么是字节码?采用字节码的好处是什么?

总流程:JAVA源代码–>编译器–>jvm可执行的JAVA字节码(即虚拟指令)–>jvm–>jvm中解释器–>机器可执行的二进制机器码–>程序运行JAVA中的编译器和解释器:java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在java中,这种供虚拟机理解的代码叫做字节码(即

2021-10-12 21:26:59 271

原创 对IOC的理解

容器概念、控制反转、依赖注入ioc容器:实际上就是个map(key,value),里面存的是各种对象(在xml里配置的bean节点、@repository、@service、@controller、@component),在项目启动的时候会读取配置文件里面的bean节点,根据全限定类名使用反射创建对象放到map里,扫描到打上上述注解的类还是通过反射创建对象放到map中。这个时候map里面就有各种对象,接下来我们在代码中需要用到里面的对象时,再通过DI注入(autowired、resource等注解,xm

2021-10-10 20:51:18 526

原创 ArrayList和LinkedList区别

ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问)。扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能、甚至超过linkedList(需要创建大量的node对象)。LinkedList:基于链表,可以储存在分散的内存中,适合做数据插入及删除操作,不适合查询,查询时需要逐一遍历。遍历LinkedList必须使用iterator,不能使用f

2021-10-10 19:57:20 63

原创 接口和抽象类的区别

接口和抽象类的区别抽象类中有抽象成员函数,也可以存在普通成员函数,而接口中只能存在public abstract方法。抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的。抽象类只能继承一个,接口可以实现多个。接口的设计目的:是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为,它只约束了行为的有无,但不对如何实现行为进行限制。抽象类的设计目的:是

2021-10-10 11:05:47 50

原创 Java中List、Set、Map之间的区别

List、Set继承于Collection接口,但Map不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的是零散的且不允许有重复的元素,List是线性结构的容器,适用于按数值索引访问元素的情形。...

2021-05-24 12:50:07 106

原创 重载(Overload)和重写(Override)的区别

方法的重载和重写都是实现多态的方式,区别在于:1.重载实现的是编译时的多态性,而重写实现的是运行时的多态性。2.①重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;②重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,要比父类被重写方法更好访问,但不能比父类被重写方法声明更多的异常(里氏代换原则)。3.重载的方法能否根据返回类型进行区分?重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

2021-05-24 12:07:36 88

原创 Java中final、finally、finalize的区别与用法

1.finalfinal是一个修饰符也是一个关键字。(1)被final修饰的类无法被继承;(2)对于一个final变量,如果是基本数据类型的变量,则其数值一 旦在初始化之后便不能更改;(3)被final修饰的方法将无法被重写,但允许重载;注意:类的private方法会隐式地被指定为final方法2.finallyfinally是一个关键字(1)finally在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出或者捕获,finally块都会执行,通常用于释放

2021-05-24 10:48:03 314

原创 Java中操作字符串都有哪些类?他们之间有什么区别?

String、StringBuffer、StringBuilderString和StringBuffer、StringBuilder的区别在于:String 声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象,而StringBuffer、StringBuilder可以在原有对象的基础上进行操作,所以要经常改变字符串内容的情况下最好不要使用String。StringBuffer和StringBuilder最大的区别在于:①StringBuffer是线程安全的

2021-05-21 17:48:58 146

原创 “==“与“equals“的区别

**public class test { public static void main(String[] args) { String s1="abc"; String s2=s1; String s3=new String("abc"); String s4=new String("abc"); String s5="abc"; System.out.println("s1==s5:"+(s1==

2021-05-21 16:06:26 40

原创 Java运算符优先级及结合性

优先级运算符结合性1()[]从左到右2! +(正) -(负) ~ ++ –从右到左3* / %从左到右4+(加) -(减)从左到右5<< >> >>>从左到右6< <= > >= instanceof从左到右7== !=从左到右8&(按位与)从左到右9^从左到右10|从左到右11&&从左到...

2021-05-21 13:54:01 1125

原创 public,private,protected的区别,继承方法与访问权限

作用域当前类同一package子孙类其他packagepublic✓✓✓✓protected✓✓✓xdefault✓✓xxprivate✓xxx注意:不写默认为default

2021-05-20 15:28:07 70

原创 Java基本数据类型及其封装类

基本类型字节大小默认值封装类byte1(byte)0Byteshort2(short)0Shortint40Integerlong80LLongfloat40.0fFloatdouble80.0dDoubleboolean-falseBooleanchar2\u0000(null)Character

2021-05-19 17:25:23 167

原创 Java语言的三大特性

Java语言的三大特性封装:通俗的理解是把属于同一类事务的共性(包括属性和方法)归到一个类中。属性是指描述同一类事物的特征,方法是指描述一类事物可做的操作。(1)概念:封装也称为信息隐藏,是指利用抽象数据类型将“数据”和“基于数据的操作”封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能的隐藏内部的细节,只保留一些对外接口,用于与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。即用户无需知道对象内部的实现细节,但可以根据

2021-05-19 15:48:05 94

空空如也

空空如也

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

TA关注的人

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