今日总结4.11

1.volatile关键字的特点

(1)保证线程之间的可见性,当一个线程对共享变量进行了修改,其他线程能够通过此关键字发现这个修改

(2)禁止指令重排序,编译器在编译过程中会对程序进行优化,在保证结果不变的前提下,调整指令执行的顺序,提高执行效率,如果加了volatile关键字,则会禁止指令重排序

(3)不能保证原子性

2.Java为什么会指令重排序

java中源代码文件会被编译成.class的字节码文件,字节码指定在执行之前,jvm底层有内置的对字节码的优化策略,也就是指令重排机制,会调整指令执行顺序,目的是加快执行速度

3.悲观锁和乐观锁的区别

悲观锁:无论读还是更改对象都要加锁,所以慢,但是安全

乐观锁:读不加锁,更改对象加锁,所以快,但是没有悲观锁安全

4.什么是Java序列化,如何实现序列化?

序列化:就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,可以对流化的内容进行读写操作,也可以将流化后的对象传输于网络之间,序列化的目的是解决在对对象流进行读写操作是所引发的内容

实现:

将需要被序列化的类实现Serializable接口,该接口没有需要被实现的方法,实现Serializable接口只是为了标注该对象是可以被序列化的,然后使用一个输出流入(如:FileOutPutSream)来构造一个ObjectOutoputSream(对象流)对象,接着,使用ObjectOutPutStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(及保存其状态),要恢复的话则用输入流。

5.http有多少类响应码?分别是什么含义?

响应码由三位十进制数字组成,他们出现在由HTTP服务器发送响应的第一行。

响应码分为五种类型,由他们的第一位数字表示

1xx:信息,请求收到,继续处理

2xx:成功,行为被成功的接受、理解和采纳

3xx:重定向,为了完后请求,必须进一步执行的动作

4xx:客户端错误,请求包含语法错误,或者请求五法实现

5xx:服务器错误,服务器不能实现一种明显无效的请求

6.tomcat的实现原理!tomcat如何进行优化?

tomcat是一个基于JAVA  EE中的Servlet与jsp规范,与Nginx Apache服务器不同在于:一般用于动态请求处理。在架构设计上采用面向组件的方式设计。即整体功能是通过组件的方式拼装完成,另外每个组件都可以被替换以保证其灵活性

实现的原理

Tomcat是运行在jvm中的一个进程,他定义为中间件,顾名思义是在一个java项目与jvm之间的中间容器。

Web项目的本质是一大堆的资源文件方法,Web项目没有入口方法(即没有main方法),这意味着Web项目中的方法不会自动运行起来。Web项目部署进TomCat得到Webapp中的目的是很明确的,那就是希望Tomcat去调用写好的方法去为客户端返回需要的资源和数据。

Tomcat可以运行起来,并且调用写好的方法,那么,Tomcat有一个main方法,对于Tomcat而言,它并不知道用户会有什么样的方法,这些都只是在项目被部署进webapp中之后才确定的。由此可知,Tomcat用到了Java的反射来实现类的动态加载、实例化、获取方法、调用方法。但是部署到Tomcat中的web项目必须是按照规定好的接口来编写,以便进行调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值