死锁&线程锁

216 阅读3分钟

1、Collections.sort 内部是Arrays.sort

不论是Collections.sort方法或者是Arrays.sort方法,底层实现都是TimSort实现的,这是jdk1.7新增的,以前是归并排序。TimSort算法就是找到已经排好序数据的子序列,然后对剩余部分排序,然后合并起来


0、

(1TB=1024GB)(2的40次方字节) 
(1GB=1024MB)(2的30次方字节) 
(1MB=1024KB)(2的20次方字节) 
(1KB=1024B)(2的10次方字节) 
 1字节(Byte)= 8位(bit) 
 字节也叫Byte,是计算机数据的基本存储单位,在电脑里一个中文字占两个字节。

一、死锁

1、死锁产生的4个必要条件 

  •  1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。 
  •  2、占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。
  •  3、不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。 
  •  4、循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。 当以上四个条件均满足,必然会造成死锁,发生死锁的进程无法进行下去,它们所持有的资源也无法释放。这样会导致CPU的吞吐量下降。所以死锁情况是会浪费系统资源和影响计算机的使用性能的。那么,解决死锁问题就是相当有必要的了。

2、死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,

若无外力作用,它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。

产生死锁的原因主要是:

  • 因为系统资源不足。

  • 进程运行推进的顺序不合适。

  • 资源分配不当等。

3、数据库死锁及解决方法

摘自:数据库死锁及解决方法 重点看



2、mvc涉及到的注解

@ResponseBody

  • 作用:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
  • 使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

@RequestBody

作用:

i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

@RequestMapping 

@RequestMapping就是用于配置哪个请求对应哪个业务方法的!

使用 @RequestMapping 来映射 Request 请求与处理器

可使用@RequestMapping 来映射URL 到控制器类,或是到Controller 控制器的处理方法上。