自定义博客皮肤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)
  • 收藏
  • 关注

转载 用最直接的大白话来聊一聊Java中的反射机制

这是一篇关于反射机制的,非常有益的技术博客,希望大家在看完后能够有所收获。思考:在讲反射之前,先思考一个问题,java中如何创建一个对象,有哪几种方式?Java中创建对象大概有这几种方式:1、使用new关键字:这是我们最常见的也是最简单的创建对象的方式2、使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去3、使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象上边是Java中常见的创建对象的三种方式

2020-09-27 23:23:35 218

原创 String类

1、String类是一个用final修饰的类,不能被继承。2、字符串一旦创建,字符串对象是不能被改变的,但它的引用可以被重新赋值。3、java字符串中任何一个字符对应16位(2个字节)的定长Unicode编码。4、String常量池为了提高性能,静态字符串(字面量)/常量/常量连接的结果,在常量池中创建,并且尽量的使用同一个对象,重用静态字符串。对于重复出现的字符串直接量,jvm会首先在常量池中查找,如果存在就返回该对象。经典面试题:String str = new String(“ABC”);

2020-09-24 23:13:54 93

原创 事务的特性以及事务的隔离级别

一、事务的四大特性1、原子性原子性是只事务所包含的所有操作是不可分割的整体。要么全部成功,要么全部失败。不会部分成功,部分失败。2、一致性一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说事务提交前和事务提交后都必须是处于一致性状态。例如:A账户和B账户的钱总共有10000元,那么两个账户之间无论进行多少次互转,总金额都应该是10000元。3、隔离性隔离性是指当多个事务并发访问数据库操作某一个表的时候,每个事务的操作是独立的,不能被其他事务所干扰,多个并发的事务之间相互

2020-09-23 22:52:47 139

原创 设计模式之——代理模式

一、什么是代理模式?在代理模式中,一个类代表另一个类的功能。这种设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。二、代理模式简介1、主要解决的问题:直接访问对象存在一些问题,比如说:要访问的对象在远程的机器上。在面向对象的系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。为其他对象提供一种代理以此控制对这个对象的访问。

2020-09-22 22:18:49 74

原创 设计模式之——中介者模式

一、什么是中介者模式?中介者模式是用来降低多个对象和类之间的通信复杂性的。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。二、中介者模式简介1、主要解决的问题:对象和对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂。用一个中介类来封装一系列的对象之间的交互,它可以使得各个对象之间没有显式的相互引用,从而达到松耦合的作用,而且可以独立的改变他们之间的交互。同时一个对象如果发生改变,我们需要跟踪与之想关联的对象,同时做出相应的处

2020-09-21 22:10:28 71

原创 什么是转发?转发和重定向的区别。

什么是转发?一个web组件将未完成的工作交给另一个web组件,web组件(Servlet和jsp),通常情况下是在servlet里面获取数据,然后把数据交由jsp显示。如何实现转发?1、把数据绑定到request对象上,可以绑定多个数据request.setAttribute(“A”,a);2、得到转发器,并调用forward()方法RequestDispatcher dis=request.getRequestDispatcher(“userlist.jsp”);//得到转发器dis.forw

2020-09-20 22:13:00 2523

原创 设计模式之——观察者模式

一、什么是观察者模式?当对象之间存在一对多的关系时,则使用观察者模式。比如:当一个对象修改时,会自动通知依赖它的其他对象。观察者模式属于行为型模式。二、观察者模式简介1、主要解决的问题:定义对象间一对多的关系,一个对象(被观察者)的状态发生改变时,自动通知其他依赖它的对象(观察者)。2、核心代码:在抽象类里有一个ArrayList,用于存放观察者们。3、应用实例:例如拍卖时,拍卖师观察最高标价,然后通知给其他竞价者竞价。4、优点:a.观察者和被观察者是抽象耦合的;b.建立触发机制,实现一个对

2020-09-19 20:59:39 207

原创 servlet的生命周期

什么是servlet的生命周期?servlet的生命周期是指:servlet对象什么时候实例化,什么时候初始化,什么时候调用方法,什么时候销毁。 实例化: servlet的实例化有两种情况: (1)默认情况下servlet是在请求的时候实例化; (2)web容器启动的时候实例化。这种情况需要在web.xml中配置<load-on-starup>1</load-on-starup>,数值越小表示优先级越高。 初始化:

2020-09-18 22:06:12 150

原创 关于死锁

一、什么是死锁在计算机中有许多互斥的资源(比如打印机,绘图仪等)或者软件资源(如进程表,临界区等),若果两个进程同时使用打印机,或者同时进入临界区必然会出现问题。所谓的死锁就是指两个以上的进程互相都要求对方已经占有的资源,而导致无法继续运行下去的现象。二、死锁产生的原因和必要条件产生死锁的原因是进展资源及进程推进顺序非法。当系统中有多个进程所共享的资源不足以同时满足他们的需求时,将引起他们对资源的竞争导致死锁。进程推进顺序非法,是指进程在运行过程中请求和释放资源的顺序不当,导致进程死锁。产生死锁的4

2020-09-17 23:59:09 99

原创 垃圾处理机制(2)

三、有哪些垃圾回收算法?1、标记-清除算法将无用的对象做标记,然后进行清除。这种算法实现简单,不需要移动对象,但是标记和清除效率不高,还会在内存中产生许多不连续的存储空间,这种算法无法清除垃圾碎片。2、复制算法在内存中开辟出两块同样大小的内存空间,使用其中一块,清理垃圾时,将使用这一块内存中存活的对象复制到另外一块内存中去,然后清除原来已使用的那一块的垃圾,如此循环。这种算法效率高,也没有垃圾碎片,但是内存的使用效率低,只有原来的一半。3、标记-整理算法在内存中标记出无用的对象,将存活的对象往内

2020-09-16 22:34:40 84

原创 垃圾处理机制(1)

一、为什么要回收垃圾?如果不进行垃圾回收,内存会很快被消耗完。内存资源非常宝贵,任意分配内存资源而不对内存进行及时的清理回收,会很快耗尽内存。所以要及时的回收垃圾。二、哪些内存需要被回收?需要被清理的垃圾是指哪些不可能再被使用的对象,清理掉这些对象就是回收这些对象占用的内存资源。那么要怎样判断一个对象是不是可清理的垃圾呢。 1、引用计数法: 给对象添加一个引用计数器,每当一个引用指向这个对象时计数 器+1,每当一个引用失效时计数器-1,当计数器的数值为0时,说明这个对象没有被

2020-09-15 23:53:31 406

原创 简述servlet的执行过程

1、浏览器发出请求时,将请求数据按照http协议规则打包;2、当web服务器接收到请求时,通讯模块会先解析请求,将请求参数封装到一个Request对象中,并且创建一个Response对象;3、web容器根据请求的url去web.xml中查找地址对应的Servlet,然后通过反射机制实例化这个Servlet,同时将Request对象和Response对象作为参数传递给Servlet;4、在Servlet中写业务逻辑代码,根据业务需要,如果需要返回数据使用Response对象(设置相应数据类型等等…),再

2020-09-14 22:03:55 1441

原创 集合接口Collection和ArrayList的常用方法

java.util.Collection是一个接口,所有的集合都实现了这个接口,在该接口中规定了很多操作集合的方法。其中常用的子接口有java.util.List和java.util.Set。其中List是可重复集且有序,Set是不可重复集。ArrayList的常用方法:1、add(E e):将指定的元素加到集合的尾部;2、addAll(Collection c):将集合c中所有的元素加到调用该方法的集合中去;3、clear():清空集合;4、contains(Object o):若调用该方法的集

2020-09-13 08:36:23 203

原创 创建一个线程的两方法

一、什么时候使用线程: 1、一个程序中需要同时完成多个任务时,我们可以将每一个任务定义为一个线程,使他们可以一同工作; 2.某项工作单线程可以完成,但是多线程更快时, 也可以使用多线程,比如文件下载。二、多线程运行的并发原理: 多个任务“同时”执行只是我们感官上的效果,实际上线程是并发运行的,而不是同时运行。OS将时间片尽可能均匀的分配给每一个线程,获取时间片的线程被cpu运行,此时其他线程处于等待状态。三、创建线程1、继承Thread,并且重写run()方法 写法如下: .

2020-09-13 08:14:22 296

原创 区别get请求和post请求,以及各自的应用场景

get请求和post请求一、get请求 1、get请求的特点: 请求参数在请求地址后面,提交的数据量较小,安全性较差,不建议用来提交敏感信息(地址栏中会显示,并且有可能被保存请求地址); 2、get请求的应用场景: 地址栏中直接发起的请求都是get请求,form表单的默认提交方式也是get请求,超链接发起的也是get请求;二、post请求 1、post请求的特点: 请求参数放在请求体中提交,提高的数据量大小没...

2020-09-12 00:06:14 1934

原创 int类型和Integer类型的比较

int类型和Integer(理解基本数据类型和引用数据类型在内存中的存储方式)一、int是基本数据类型,Integer是包装类,是继承了抽象类Number的引用数据类型;二、int作为基本数据类型不能被赋值为null,Integer可以被赋值为null;三、两个int类型的变量进行比较是值的比较; 从java 5.0以后有了autoboxing功能,int类型的变量和Integer类型的变量进行比较时,Integer会进行自动拆箱,也就是说int类型和Integer类型可以直接用...

2020-09-10 22:20:52 2061

原创 abstract关键字

关于abstract关键字 一、abstrack关键字用于修饰方法或者类; 二、抽象方法 1、由abstrack修饰的方法,只有方法定义,没有方法体; 2、包含抽象方法的类必须是抽象类,不含抽象方法的类也可以是抽象类; 三、抽象类 1、抽象类不能被实例化; 2、抽象类需要被继承。因为抽象类中的抽象方法是没有方法体的,所以派生类继承抽象类以后通常要重写抽象方法。如果不重写抽...

2020-09-09 23:16:20 1010

原创 简述HashMap的特点

简述HashMap的特点一、HashMap是查询效率最高的数据结构。二、HashMap的内部是使用数组来存储元素的,元素存放的位置是依据key值的hashcode()方法的返回值经散列算法,生成的下标数字来决定的。所以查询元素时,HashMap会依靠给定的key的hashcode()方法返回值来计算出对应的下标,然后直接通过下标去访问相应的元素,这样就省去了遍历数组的过程。HashMap查询数据时不受元素数量的影响。三、由于Map的key的唯一性(key的equals()方法比较来决定是否重复)

2020-09-08 23:44:48 4820

原创 理解内存溢出和内存泄露

内存溢出和内存泄露一、内存溢出 内存溢出可以简单的理解为内存不足。例如基础数据类型中int的存储大小是一定的,超过范围则出现溢出。程序在申请内存空间时,没有足够的内存空间供其使用,就会出现内存溢出;二、内存泄露 程序申请了内存,在使用后没有归还,占用的内存空间无法释放则会出现内存泄露。内存泄露堆积会导致内存逐渐被占满,最终的后果必将会导致内存溢出。例如,在finally块中关闭连接释放资源这些无关对错,但是必须要执行的这类操作,通常就是为了避免内存泄露。...

2020-09-07 23:24:56 269

原创 简单理解JVM内存管理

JVM内存管理一、堆 1、存储所有new出来的对象,包括实例变量; 2、垃圾:没有任何引用指向的对象,垃圾回收器GC不定时的到堆中去清理垃圾,回收过程是不可见的,不一定一发现就立刻回收。通过调用System.gc()方法建议虚拟机尽快调度GC来回收垃圾。 3、内存泄露:不再使用的内存没有被及时的回收。(建议:若对象不再使用时,及时讲引用设置为null)。 4、实例变量的生命周期:创建对象是存储在堆中,对象被回收时一并被回收。二、栈 1、存...

2020-09-06 23:16:34 59

原创 ==和eques()

==和eques()方法:一、== 1、用于比较基本数据类型时比较的是基本数据类型的值是否相等; 2、用于比较引用数据类型时,比较的是引用数据类型的地址;二、eques()方法 1、Object的eques()方法和==一样,可用来检查两个对象是不是同一个; 2、该方法需要重写,例如String重写的eques()方法,用于比较两个字符串的内容是不是相同。 ...

2020-09-05 21:37:50 1176

原创 关于static

关于static static表示静态的,可用于修饰变量,方法。 一、静态变量 1、由static修饰; 2、静态变量是属于类的,它存在与方法区,仅有一份; 3、静态变量通过类名加点“.”来访问; 4、何时使用静态变量:所有对象所共享的数据(例如:图片,音频,视频等)。 二、静态方法 1、由static来修饰; ...

2020-09-04 22:13:27 253

原创 简述面向对象的三大特征

面向对象的三大特征:一、封装 1、类:封装对象的属性和行为(方法); 2、方法:封装的是一段特定的业务逻辑功能; 3、访问控制修饰符:封装具体的访问权限。二、继承 1、作用:代码复用; 2、超类(父类、基类):派生类共有的属性和行为; 派生类(子类):派生类特有的属性和行为; 接口:部分派生类共有的属性和行为。三、多态 1、意义:行为多态,对象多态(抽象方法一定是...

2020-09-03 21:21:44 2375

原创 方法的重写和重载有什么区别

方法的重写和重载有什么区别?一、重写 1、发生在父子类中,方法名相同,参数列表也相同,方法体不同; 2、重写遵循“运行期”绑定,看对象的类型来调用方法。二、重载 1、发生在同一个类中,方法名相同,参数列表不同,方法体不同; 2、重载遵循“编译期”绑定,看参数的类型来调用方法。...

2020-09-02 20:39:44 139

空空如也

空空如也

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

TA关注的人

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