Java中的异常:
1. Throwable
Throwable是Java语言中所有错误或异常的超类。Throwable包含两个子类的:一个是Error类,另一个是Exception类;
1其中Error类中包括虚拟机错误和线程死锁,一旦Error出现了,程序就彻底挂了,被称为程序终结者
3Exception类,也就是通常所说的异常。主要指编码、环境、用户操作输入出现问题,Exception主要包括两大类,非检查异常(RuntimeException)和检查异常。
4RuntimeException异常主要包括:空指针异常、数组下标越界异常、类型转换异常、算术异常。RuntimeException异常会由Java虚拟机自动抛出并自动捕获(就算我们没写异常捕获语句运行时也会抛出异常),此类异常的绝大多数是代码本身有问题,应该从逻辑上去解决并改进代码。
5检查异常,引起该异常的原因多种多样,比如说文件不存在、或者是连接错误等待。,该异常我们必须手动在代码里添加捕获语句来处理该异常,
(1)try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。
try块不可以单独存在,必须与catch或者finally块同存
(2)catch块:如何处理?比如发出警告:提示,检查配置,网络连接,记录错误等。执行完catch块之后程序跳出catch块,继续执行后面的代码。
多个catch块处理的异常类,要按照先catch子类后catch父类的处理方式,因为会就近处理异常(由上而下)
(3)finally:最终执行的代码,用于关闭和释放资源。
classnotfound什么异常:最终原因是部署的项目文件中没有这个类包。
String,StringBuffer,StringBuilder,为啥String是常量?
String:字符串常量
StringBuffer:字符串变量
StringBuilder:字符串变量
StringBuilder:线程非安全的
StringBuffer:线程安全的
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
String为什么不可变:虽然String,StringBuffer和StringBuilder都是final类,它们生成的对象都是不可变的,而且他们内部也都是靠char数组实现的,但不同之处在于,String类中定义的char数组是final的,而StringBuffer和StringBuilder都是继承自AbstractStringBuilder类,它们内部的实现都是靠这个父类完成的,而这个父类定义的char数组只是一个普通私有变量,可以用append追加。因为AbstractStringBuilder实现了Appendable接口。
Spring的原理:IOC和AOP
IOC(控制反转):将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合
AOP:将安全,事务等与程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性。
实现的原理:
怎样实现反射:
char 和varchar区别:char的长度是不可变的,而varchar的长度是可变的。也就是说,定义一个char[10]和varchar[10],如果存进去的是‘CSDN’,那么char所占的长度依然为10,除了字符‘CSDN’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型要用trim()去掉多余的空格,而varchar是不需要的。
尽管如此,char的存取速度还是比varchar快很多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,以空间换时间。而varchar是以空间效率为首位的
再者,char的存储方式是,对英文字符(ASCII)占用一个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。两者的存储数据都非unicode的字符数据
在网站中,Http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不知道当前请求是哪个用户。cookie的出现就是为了解决这个问题。第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不会超过4KB。因此cookie只能存储一些小量的数据。
二session:session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存在本地浏览器,而session存储在服务器。存在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些Session信息还是绰绰有余的。
cookie和Session区别:
1、cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务端。
2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
4、Session是保存在服务器上会存在一段时间才会消失,如果Session过多会增加服务器压力。