- 博客(14)
- 收藏
- 关注
原创 http的GET请求和POST请求的区别
1、get请求在回退时没有影响,post请求在回退时会重新提交请求。2、get请求中的参数会被浏览器主动缓存,post请求需要手动设置。3、get请求中的参数会被完整地记录在浏览器的历史记录里,post请求不会。4、get请求只能进行url编码,而post请求支持多种编码。5、get请求中的参数有长度限制,最大2kb,post请求没有限制,对于参数的数据类型,get请求只支持ascii编码,post请求没有限制。6、get请求没有post请求安全,get请求的参数会被明文暴露在url上,post请
2021-01-20 23:47:43
127
原创 模板方法设计模式详解
模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。
2021-01-14 15:19:15
186
原创 简述synchronized和java.util.concurrent.locks.Lock的异同
相同点:Lock能完成synchronized所能实现的所有功能不同点:Lock有比synchronized更精确的线程语义和更好的性能,synchronized自动释放锁,而Lock需要程序员手动释放,而且必须在finally语句块中释放,Lock还有更强大的功能,比如它的tryLock方法可以非阻塞方式拿锁。...
2021-01-06 20:52:09
260
原创 线程的基本概念、线程的基本状态以及状态之间的关系?
线程:一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段代码同时执行,每个程序至少有一个线程,即main方法执行的线程。基本状态:就绪、运行、阻塞、挂起、结束,wait()必须在同步代码块中使用。关系:调用线程的start()方法后使线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞状态,当线程获得锁后,转为运行状态,在运行状态可以调用wait()方法转为挂起状态,当线
2021-01-06 20:39:15
190
原创 当一个线程进入一个对象的一个synchronized方法后,其他线程是否可以进入此对象的其他方法?
普通方法肯定是可以进入的,所以这里假设所有的方法都是同步方法应该分情况讨论:1、其他方法如果都是synchronized修饰的方法,则不能,因为对象锁已经被占用。2、如果有static synchronized修饰的方法,则可以,因为static synchronized是将类的字节码作为锁,和对象锁并不是同一把锁。3、如果本方法中调用了wait()方法,则可以,因为wait()方法会释放当前锁并使线程进入阻塞状态。...
2021-01-06 20:21:19
759
原创 多线程有几种实现方法?同步有几种实现方法?
多线程有四种实现方法1、继承Thread类2、实现Runnable接口3、实现Callable接口4、通过线程池创建同步有三种实现方法1、使用sychronized关键字2、在变量上使用volatile关键字3、在类中加入重入锁...
2021-01-05 22:59:35
266
1
原创 同步和异步的区别?什么情况下分别使用它们?
同步就是指某一段代码从开始到结束只能由单个线程执行异步就是指某一段代码可以有多个线程同时执行当程序中的数据有共享情况时推荐使用同步机制,例如一个数据在写的时候可能会被其他线程读,或者在读的时候可能会被写,这种线程不安全的情况推荐使用同步,反之使用异步。同步使数据更安全,但异步效率更高。...
2021-01-05 22:47:31
1284
原创 sleep()和wait()的区别
sleep()就是当前线程进入阻塞状态,cpu不会继续执行当前线程,直到指定的时间超过才会重新执行当前线程,这个过程中不会释放对象锁,如果当前线程持有对象锁,那么其他需要此对象锁才能运行的线程就无法继续。wait()是指在一个已经进入了同步代码块的线程让cpu停止执行当前线程转去执行其他线程,并且将当前线程所持有的对象锁释放,让其他需要此对象锁的线程能够正常运行,当其他线程调用notify()或notifyAll()时才会唤醒当前线程,但是并不会马上获得对象锁,只是进入就绪状态,准备抢锁。sleep(
2021-01-05 22:38:30
145
原创 Java语言如何进行异常处理,try、catch、finally、throw、throws的意义?
在Java中通过面向对象的方法进行异常处理,将不同的异常进行分类,并提供良好的接口。Java中每一个异常都是一个对象,是Throwable类或其子类的实例,当一个方法出现异常时会抛出异常对象,其中封装了异常的信息,将其捕获后就可以进行处理。try:指定一段可能会出现异常的代码catch:指定异常的类型并将其捕获finally:无论是否出现异常都会执行finally中的代码throw:手动抛出一个异常对象,可以在try、catch、finally中的任何地方throws:在方法上声明抛出的异常类
2021-01-05 22:15:20
322
原创 抽象类和接口的区别
从语法上的区别来看:1、抽象类定义为abstract class,接口为interface2、抽象类中可以有构造方法,接口中没有3、抽象类中可以有抽象方法和非抽象方法,接口中只能有抽象方法4、抽象类可以有变量和常量,接口中只能有常量5、抽象类中成员的访问类型可以是public、protected、默认,接口中成员的访问类型只能是public6、抽象类中可以有静态方法,接口中不能有静态方法(JDK1.8之前)7、一个类只能继承一个抽象类,但可以实现多个接口从应用上的区别来看:1、接口更多在系
2020-12-30 21:02:59
148
原创 Java中实现多态的机制是什么
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,在程序调用方法时,程序在运行期间才会将方法和实例对象进行动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存中在运行的对象的方法,而不是引用变量的类型中定义的方法。...
2020-12-30 20:37:42
309
原创 static方法中是否可以调用非static方法
首先,肯定是不可以的。 因为非static方法是需要实例对象来调用的,必须创建一个实例对象后通过实例对象来调用,而static方法在调用时不需要创建实例对象,所以在调用static方法时有可能还没有创建过实例对象,所以这个非static方法是由哪个对象来调用的呢,这在逻辑上显然不合理,所以在static方法中无法发出对非static方法的调用。...
2020-12-28 21:50:00
1768
原创 静态变量和实例变量的区别
1、 从语法上来看,静态变量需要static修饰,而实例变量不需要。2、 从程序运行时的区别来看,实例变量是属于某一个对象的,需要创建一个实例对象,才会给其分配内存空间,需要通过实例对象调用实例变量,创建多个实例对象会创建多个实例变量,而静态变量是不属于任一实例对象的,静态变量是属于类的,所以也称为类变量,在程序加载类的字节码时,会给其分配内存空间,可以直接通过类名.变量名调用。 &nb
2020-12-28 21:44:41
1096
原创 ==和equals的区别
1、==可以比较基本数据类型和引用数据类型,而equals只能比较引用数据类型。2、在比较String类型时,是比较两个对象的内存地址是否一致,是则返回true,否则返回false,使用equals是比较两个对象指向的内存地址中的内容是否一致,是则返回true,否则返回false。3、在比较其他引用数据类型时,当其重写了equals方法时,用户可以在重写的equals方法中自定义比较规则判断两个对象是否相等,比如两个学生对象的学号相等则判断这两个学生对象相等,返回true,当其没有重写equals
2020-12-28 21:31:24
507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人