协议、计算机网络、Servlet、Session、Coookie

1. tcp UDP IP是什么意思?

1、TCP(传输控制协议):   
    是互联网协议组的主要协议之一,TCP为通过IP进行网络通信的主机上运行的程序提供了可靠的、有序的且经过错误检查的8字节流传递。万维网、电子邮件和文件的传输等主要都依赖于TCP。

2、UDP(用户数据报协议):

    提供不可靠的数据流服务、无连接的数据报服务。强调降低延迟而不是可靠性。

3、IP(网络互连协议):能使链接到网上的所有计算机网络实现相互通信的一套规则,ip地址具有唯一性

(注:TCP/IP协议不仅仅是指TCP与IP这两个协议,而是指有FTP、SMTP、TCP、UDP、IP等协议构成的协议簇)

    

2. 请描述 七层、五层、四层网络协议?

1、OSI模型(七层网络协议):  是设计和描述计算机网络通信的基本框架。

    分层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

2、TCP/IP模型(四层网络协议):

    分层:网络接口层、网际层、传输层、应用层

3、五层网络协议: 是OSI与TCP/IP模型的综合,是产生的非官方的协议模型。

    分层:物理层、数据链路层、网络层、传输层、应用层

3. 线程有哪几种基本状态?试描述它们之间的转换?

一、线程的生命周期包括种状态:

    新建、等待、就绪、运行、阻塞、死亡。

二、用Java阐述转换关系:
    
    1、新建: 用new语句创建的线程对象出于新建状态,仅分配了内存,跟其他java对象一样。

    2、等待: 线程new之后,并且在调用start()方法前,线程出于等待状态。

    3、就绪:当线程创建后,其他线程开始调用它的start方法,该线程就进入了就绪注状态。出于就绪状态的线程,出于Java虚拟机的可运行池中,等待CPU的使用权。

    4、运行: 出于这个状态下的线程占用CPU,执行程序代码。

    5、阻塞: 该状态是指,线程由于某些原因放弃CPU,暂时停止运行,此时Java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才有机会到达运行状态。

    6、死亡:线程执行完了或者因异常退出了run()方法,该线程结束生命周期

4. 请描述 servlet的生命周期? servlet是单实例还是多实例的?

一、servlet运行在Servlet容器中,其生命周期由容器来管理。

二、并且servlet生命周期通过javax.servlet.Servlet接口中的init()、service()、destroy()方法来表示。

三、生命周期包括:
    
    1、加载和实例化:

        当Servlet容器启动时,或者容器检测到需要响应一个请求时,创建一个Servlet实例。

    2、初始化:
    
        创建Servlet实例后,调用init()方法进行初始化。如,建立数据库连接、获取配置信息等。每一个Servlet实例,init()方法只调用一次。

    3、请求处理:
    
        Servlet容器调用service()方法进行请求处理。在service()方法调用之前,init()方法必须执行成功。Servlet实例通过ServletRequest对象得到客户端相关信息和请求信息,通过ServletResponse对象的方法设置响应信息

    4、服务终止:

        容器检测到Servlet实例应该从服务中移除时,容器就会调用实例的destory()方法,以便让该实例释放资源,保存数据到持久存储设备中去。

5、请描述 struts2工作原理?

一、Struts2是一个基于MVC设计模式的web应用框架。

二、Struts2是Struts1的升级版,但是它提供了更加多的增强和改进。

三、Struts2的控制功能句相当于MVC模式中的Controller的功能。

四、Struts2相当于一个Servlet,实现了Servlet的功能,来进行控制页面的跳转。

五、Struts2的优缺点

    1、优点:
    实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。

    丰富的标签库,大大提高了开发的效率。

    Struts2提供丰富的拦截器实现。

    通过配置文件,就可以掌握整个系统各个部分之间的关系。

    异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。

    Struts2的可扩展性高。

    面向切面编程的思想在Strut2中也有了很好的体现。

    2、缺点:
    Struts2中Action中取得从jsp中传过来的参数时还是有点麻烦。

    校验还是感觉比较繁琐,感觉太烦乱,也太细化了,如果校验出错的只能给用户提示一些信息。

    安全性有待提高。

六、推荐:
    千万不要错过!!!具体详细的Struts2的详细介绍参考网站:        
    https://www.tutorialspoint.com/struts_2/index.htm
   别说英文网站我看不懂,用网页翻译一点没问题!!!

Struts2执行流程图:

 6.  什么是   IOC,  DI,  AOP?

1、Spring--IOC(Inversion of Control,控制反转):

    IOC不是一种技术,而是一种思想,一个重要的面向对象编程的法则,他指导我们设计出低耦合,更加优良的程序。
    
    传统程序都是由我们在类内部主动创建依赖对象,从而导致高耦合,难于测试;而IOC容器,创建和查找依赖对象的控制权交给了容器,you容器进行注入组合对象,实现了对象与对象之间的松耦合。

2、Spring--DI(Dependency Injection,依赖注入):

    在系统运行中,动态的向某个对象提供其所需要的其他对象。Spring通过反射来实现注入的。

3、Spring--AOP(Asepct-Orentid-Programming,面向切面的编程):

    AOP就是把与核心业务逻辑无关的代码全部抽取出来,放置到某个地方集中管理,然后在具体运行时,再由容器动态织入这些共有代码。

    AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。正如Avanade公司的高级方案构架师Adam Magee所说,AOP的核心思想就是“将应用程序中的业务逻辑同对其提供支持的通用服务进行分离”。

7、Cookie与Session是什么?它的生命周期?

一、Session:

    1、定义:在计算机中,尤其是网络应用中,被称为“会话控制”。用来存储特定用户会话所需要的配置信息

    2、生命周期:从用户打开浏览器访问你的Servlet开始直到用户关闭了浏览器结束。

二、Cookie:
    
    1、定义:形象比喻为“网络身份证”。是服务器发送到用户浏览器并保存到本地的一小块数据,它会在浏览器再次向同一服务器发送请求时被携带并发送到服务器上。
            
        用途: <1>会话状态管理  <2>个性化设置  <3>浏览器行为跟踪

    2、生命周期: Cookie在生成时就会被指定一个Expire值,这就是其生命周期。在这个周期内cookie有效,超出周期cookie就会被清除
 
三、Cookie和Session区别:

    1、作用范围(隐私策略)不同:Cookie保存在客户端(浏览器),容易被窃取,复制、修改等,一般要进行加密操作,比如用户名对应的密码加盐,而Session保存在服务器端,数据安全性比较高。

    2、存取方式不同:Cookie只能保存ASCII字符串,存储Unicode字符或者二进制数据,需要先进行编码,不能直接存取java对象,而Session可以存储任意类型的数据,包括javabean乃至任何java类。   
     
    3、有效期不同: Cookie可设置有效时间(通过Expire设置)一般较长,而Session依赖于JSESSIONID的cookie,所以只要关闭浏览器Session就会失效,不能实现永久有效。

    4、存储数据大小不同:单个Cookie保存数据不能超过4K,而Session存储数据远高于cookie

    5、服务器压力不同:在高并发访问下,由于session数据保存在服务器端,所以容易造成服务器耗费大量内存而崩溃,例如Google、Baidu等用Cookie是不错的选择。

    6、跨域支持的不同:cookie支持跨域名访问,而session仅在他所在的域名有效。在实践中Cookie和Session搭配使用会更好。

四、Cookie和Session的关联:
    
    由于浏览器是无状态的HTTP协议,所以要用Cookie与Session搭配使用。

    1、用户第一次请求服务器时,服务器根据用户提供的相关信息,创建一个Session,并请求返回他的唯一标识SessionID,将此信息存入到Cookie中,同时Cookie记录SessionID存在于哪个域名

    2、用户第二次访问服务器时,请求将自动判断此域名是否存在与Cookie中,若存在则自动将信息发送给服务器端,服务器端从Cookie中获取SessionID,再根据SessionID查找对应的信息。

    【SessionID是连接Cookie与Session的桥梁、枢纽】
五、服务器端禁用了Cookie,怎么保证整个机制正常用转:

    1、方案一:
  每次请求中携带一个SessionID,也可以post请求,也可以在请求地址后面接xxx?SessionID=123456...

    2、方案二:利用Token机制。服务器上生成一串字符,作为请求标识。

本文参考自  Cookie与Session

8. 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?

Get与Post请求都是浏览器向网页服务器提交数据的方法。

一、Get把提交的数据编码在URL中,比如 /workinfo.jsp/mianshiti?key1=value1&key2=value2中就编码了键值对key1-value1、key2-value2。受URL长度的限制,get方法能传输的数据有限制,与浏览器相关,如IE是2048。所以数据会显示在浏览器地址栏,不安全。

二、Post把提交的数据放在请求的body中,没有数据大小限制,也不会显示在URL中,所以Post比较安全

9. 什么是事务的ACID特性?

1、原子性(atomic):事务必须是原子操作单元,对于数据修改,要么全部执行,要么全部不执行。

2、一致性(consistent):事物在完成时,必须使所有数据都保持一致状态。

3、隔离性(insulation):并发事务的修改操作相互之间不影响。

4、持久性(duration):事务完成后,对系统影响是永久性的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值