1、java常见的异常:
- 分为Error和Exception,都是继承于Throwable。
- Error类及其子类是由java虚拟机产生并抛出给系统的,有内存溢出错误、栈溢出错误、动态链接错误等,通常这些错误不由编程者直接处理,一般交由系统处理。
- Exception及其子类是用户能够捕捉到的异常。
- Runtime_Exception:运行时异常,Exception的一个子类。运行异常类对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常。运行异常可能出现在任何地方,且出现频率很高,因此为了避免巨大的系统资源开销,编译器不对异常进行检查。
- Non_RuntimeException:非运行时异常,也是Exception的一个子类。这类异常时在程序运行过程中由环境因素造成的异常,这类异常必须用过try...catch... 将其捕获并处理,否则不能通过编译。
2、java继承:
- 子类不能将父类中的方法、属性的作用域变小,因为可能会造成方法的“失传”(孙子辈继承父类时,如果父类将爷爷辈的方法的作用域改小了,孙子辈可能继承不了该方法);但是可以把父类的作用域扩大。
- 子类不能抛出比父类更多的异常
3、死锁:
- 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
- java死锁产生的4个必要条件:
(1)资源互斥:即当资源被一个线程使用(占有)时,别的线程不能使用
(2)不可剥夺:资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
(3)请求、保持:即当资源请求者在请求其他的资源的同时保持对原有资源的占有。
(4)循环等待:即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路。
4、synchronized:java多线程同步机制:
- 一段synchronized的代码被一个线程执行之前,改线程要先拿到执行这段代码的执行权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等待(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中 等待的某个线程就可以拿到锁执行同步代码了。这样就保证了同步代码在统一时刻只有一个线程在执行。
- synchronized可以对属性、方法、对象、代码块进行同步。
- 应用场景:模拟买票系统,对票的总数进行synchronized同步。
5、ArrayMap和HashMap区别:
- map的特点:包含键值对,键唯一
- hash:也可以称为“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。不同的输入可能会散列成相同的输出(也就是多对一的关系)。
- hashmap:内部是使用一个默认容量为16的数组来存储数据的,数组中每一个元素是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表),这种存储数据的方法叫做拉链法 。
- hashmap每一个节点的值都是Entry,Entry存储的内容有key、value、hash值、和next指针。那么,这些Entry数据是按什么规则进行存储的呢?就是通过计算元素key的hash值,然后对Hash值取余得到在数组中对应的位置,如果有多个元素对应同一个位置的话,采取链表的方式,把之后加进来的元素加入链表末尾。
- Arraymap:一个<key,value>映射的数据结构,它设计上更多的是考虑内存的优化,内部是使用两个数组进行数据存储,一个数组记录key的hash值,另外一个数组记录Value值。它会对key使用二分法进行从小到大排序,在添加、删除、查找数据的时候都是先使用二分查找法得到相应的index,然后通过index来进行添加、查找、删除等操作
- Arraymap应用场景:数据量不大,最好在千级以内、数据结构类型为Map类型
6、java反射:
- Java反射就是在运行状态时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态语言的一个关键性质。
- 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。那么我们便可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等;但是需要注意的是反射使用不当会造成很高的资源消耗!
7、HTTP状态码 :
- 200:请求成功
- 301:永久性重定向
- 302:临时性重定向
- 304:资源未改变
- 400:请求有误
- 403:服务器拒绝此请求
- 404:资源找不到
- 405:客户端的请求方法被禁止
- 500:服务器报错
- 503:服务器超载或在维护
网友评论