isEmpty和isBlank区别前言小编在刚接触Java时一般是用equals方法来进行判断是否为空,有点笨拙,效果还不是太好,现在在项目中大家一般都是用StringUtils类下的isEmpty和isBlank进行空值判断,那么它们又有什么区别呢?一、通过源码比较public static boolean isEmpty(String str) { return str == n...
【转载】Java锁知识总结(二)1. 锁类型可重入锁:广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁。即在执行对象中所有同步方法不用再次获得锁。ReentrantLock和synchronized都是可重入锁。举个简单的例子,当一个线程执行到某个synchronized方法时,比如说...
Spring知识总结(一)1. 什么是Spring?Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO为基础的编程模型促进良好的编程风格。2. Spring有哪些优点?轻量级:Spring在大小和透...
Java锁知识总结前言本篇在网上总结了一下关于Java锁的一些相关概念,希望可以给大家带来一点帮助1. 什么是线程安全,如何保证线程安全?1.线程安全:就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后 更改数据造成所得到的...
【转载】并发问题是怎样造成的我们的程序要运行,离不开CPU、内存、IO设备,但是他们三者之间的执行速度是有差异的。CPU 的执行速度最快,内存的速度次之,IO设备的速度最慢。一、为什么会有内存缓存CPU执行一条指令非常快,但是他从内存中读取某个数据时,就需要等待很长的时间,为了弥补速度上的巨大差距,让CPU不被内存拖垮,所以在CPU上增加了缓存。当CPU请求内存中的数据时,会先查看缓存中是否...
HashMap、Hashtable、ConcurrentHashMap的原理与区别前言本篇简单讲述HashMap、Hashtable、ConcurrentHashMap的原理,并对它们之间的区别做一个简单对比,并不从源码层面上做讲解一、基础概念HahTable1.继承于Dictionary,现了Map、Cloneable、java.io.Serializable接口2.底层是数组+链表实现,...
GET和POST两种基本请求方法的区别最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。一般面试当面试官问时,我们的答案可能是这样的:GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而P...
死锁编码及定位分析概念死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。代码示例class DeadLockResource implements Runnable{ private String LockA; ...
post请求方式分析前言大家一般都喜欢用postman工具来测试接口的连通性,今天通过postman的一些传参方式对post请求做一个简单分析一、post请求Params和Data传参的区别postman工具对于post请求在传参时,既可以使用Params传参,又可以使用Data传参。那么,这两种传参方式有什么区别呢?对于GET方式的请求,浏览器会把http header和data一并发送出...