自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 servlet的生命周期

1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet2.创建:通过调用Servlet的构造函数来创建一个Servlet实例3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。4.处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的Service()方法来响应客户端请求(Service方***根据请

2021-09-15 17:23:09 89

原创 Spring MVC工作流程

1、用户发送请求至前端控制器DispatcherServlet2、DispatcherServlet收到请求调用HandlerMapping处理器映射器3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherServlet4、DispatcherServlet调用HandlerAdapter处理器适配器5、HandlerAdapter经过适配调用具体的处理器(controller,也叫后端控制器)6、co

2021-09-11 11:14:18 100

原创 Spring是什么

轻量级的开源J2EE框架,它是一个容器框架,用来装javabean(Java对象),中间层框架可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用,可以让我们企业开发更快、更简洁。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 --从大小与开销方面而言Spring都是轻量级的。 --通过控制反转(IoC)的技术达到松耦合的目的 --提供了面向切面编程的丰富只吃,允许通过分离应用的业务逻...

2021-09-11 09:52:40 132

原创 Spring Bean的生命周期

1、解析得到BeanDefinition;2、如果有多个构造方法,则要推断构造方法;3、确定好构造方法后,进行实例化得到一个对象;4、对对象中的加了@Autowired注解的属性进行属性填充;5、回调Aware方法,比如BeanNameAware,BeanFactoryAware;6、调用BeanPostProcessor的初始化前的方法;7、调用初始化方法;8、调用BeanPostProcessor的初始化后的方法,在这里会进行AOP;9、如果当前创建的bean是单例的则会

2021-09-10 15:53:06 72

原创 ThreadLocal内存泄露

ThreadLocal内存泄露的根本原因:由于ThreadLocalMap的生命周期和Tread一样长,如果没有手动删除对应key,就会造成内存泄露,ThreadLocal的正确使用: 1、每次使用完ThreadLocal的时候调用它的remove()方法清除value数据。 2、将ThreadLocal变量定义成privatestatic,这样就一直存在ThreadLocal的强引用,也就能保证任何时候ThreadLocal的弱引用访问到entry的value值,...

2021-09-10 14:22:34 325

原创 JVM的组成

JVM的组成大体由类装载子系统、字节码执行引擎和运行时数据区三大部分组成,如图:我们先看看运行时数据区,它又由堆(Heap)、虚拟机栈(JVM Stack)、本地方法栈、方法区(Method Area)、程序计数器组成。虚拟机栈又可以称之为线程栈,每个方法都存放在虚拟机栈的栈帧中,比如:main方法就是一个栈帧。每个栈帧都会有局部变量、操作数栈、动态链接和方法出口,我们可以通过javap -c XX.class进行反编译,看到每个字节码文件的含义,局部变量是int a=1中的a...

2021-09-08 18:11:24 477

原创 DCL(Double Check Lock)单例需不需要加volatile?

首先,给个大家肯定的答案:是要加volatile的。我们先写一个DCL,如图:我们可以发现synchronized前后都进行单例是非为空的判断,这就是DCL,那为什么要加violate呢?我们先来看看new一个实例的过程:我们通过new实例的字节码看到,其实new实例有五步: 一、安装对象大小分配一个内存,里面有成员变量,赋给成员变量一个默认的初始值,这一步也可称之为对象实例的半初始化。例如:int类型的最小值是0,就将0赋给m;...

2021-08-24 15:20:52 761

原创 笔试准备:会话跟踪

会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。1).隐藏表单域:<input type="hidden">,非常适合步需要大

2021-08-12 10:17:26 97

原创 笔试准备:数据类型

8种基本类型的大小和封装类:基本类型 封装类型 大小 byte Byte 8位(1字节) short Short 16位(2字节) int Integer 32位(4字节) long Long 64位(8字节) float Float 32位(4字节) double Double 64位(8字节) char Character 16位(2字节) boolean Boole

2021-08-11 21:19:13 62

原创 笔试准备:.exe相关

java.exe是java虚拟机javadoc.exe用来制作java文档jdb.exe是java的调试器javaprof.exe是剖析工具javac.exe编译java成二进制class文件

2021-08-11 20:59:15 53

原创 super和this

1、super()表示调用父类构造函数、this()调用自己的构造函数,而自己的构造函数第一行要使用super()调用父类的构造函数,所以这俩不能在一个构造函数中会出现重复引用的情况2、super()和this()必须在构造函数第一行,所以这一点也表明他俩不能在一个构造函数中3、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块(里面不能使用非static类型的)。...

2021-08-11 20:28:15 62

原创 Compareable和Comparator的作用和区别

Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。 public class Student implements Comparable<Student>{ private int id; private String name; private int age; //get和set省略 ...

2021-08-10 09:55:59 167

原创 抽象类和接口的区别

//抽象类package com.learn;public abstract class AbstractPerson { public AbstractPerson(){ System.out.println("AbstractPerson构造函数"); }}//抽象类的继承类package com.learn;public class Person extends AbstractPerson{ public Person(){

2021-08-09 16:38:57 104 2

转载 JAVA锁机制(三)

在上一部分说到了synchronized和monitor的原理,这一部分我们来看一下synchronized的优化和锁四种状态转换。1、无锁 顾名思义就是没有对资源进行锁定,所有线程都能访问到同一资源,就有两种情况: (1)无竞争:某个对象不会出现在多线程环境下,或者说及时出现再来多线程环境下也不会出现竞争的情况,那么无需对这个对象进行保护,直接给各个线程调用即可; (2)存在竞争,非锁方式:资源会被竞争但是我不想对资源进行锁定,但还...

2021-08-03 22:58:10 67

转载 JAVA锁机制(二)

上一部分讲到了Java锁是什么和对象的构成,这一部分讲一下Synchronized和Monitor。3、Synchronized我们都知道在Java中synchronized关键词可以同步线程,然而synchronized被编译后会生成monitorenter和monitorexit两个字节码指令,依赖这两个字节码指令来进行线程同步。如果你想看monitorenter和monitorexit两个字节码指令,既可以去用javac对.java文件进行编译,然后再使用 javap...

2021-08-03 17:47:03 103

转载 JAVA锁机制(一)

1、什么是锁 在并发环境下,多个线程对同一个资源进行争抢,可能会导致数据不一致的问题,为了解决这个问题,很多编程语言都引入了锁机制。通过一种抽象的锁来对资源进行锁定。2、锁的应用 每个对象都有一把锁,这把锁存放在对象头中。这就得说到对象的结构了,对象由对象头、实例数据和填充字节组成(如图),对齐填充字节是为了满足“Java对象的大小必须是8比特的倍数”这一条街设计的,实际上是一些无用字节。对象头就是锁机制中比较重要的部分了,对象头分为Mark Word和Cla...

2021-08-03 14:34:18 133 1

空空如也

空空如也

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

TA关注的人

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