面試中不會的題目19.3.13

1、HTTP和HTTPS的區別:

http:

  • 無狀態,一次請求要三至四次握手。
  • 數據不加密。安全性差
  • 不能區別是否已經響應過請求------無辨識度

https:

  • 通過ssl/tls協議加密
  • 身份驗證
  • 保護數據完整度
  • 內容加密

2、多線程的運用環境:

從用戶的角度考慮,就是爲了得到更好的系統服務;從程序自身的角度考慮,就是使目標任務能夠儘快的完成,更有效的利用系統資源。綜合考慮,一般一下場景使用多線程:

  • 程序包含複雜的計算任務時(花費很多時間),主要是利用多線程獲取更多的CPU時間
  • 處理速度較慢的外圍設備,比如打印時,網絡程序、設計數據包的收發,時間因素不定。(爲了等待網絡,文件系統、用戶或其他IO響應而耗費大量的執行時間)使用獨立的線程處理這些任務,可使程序無需專門等待結果。
  • 程序設計自身的需求,WINDOWS系統是基於消息循環的搶佔式多任務系統,爲使消息循環系統不至於阻塞,程序需要多個線程來共同完成某些任務。

3、break、return、continue區別

  • break:多用於循環中,僅退出當前循環
  • return:從當前的方法中退出,返回到該調用的方法的語句處,繼續執行

當try-catch中涉及到return時:https://blog.csdn.net/qq_30816657/article/details/80297646

  • continue:終止當前循環,但是不跳出循環(再循環中continue後面的語句是不會執行了),繼續往下根據循環條件執行循環。

4、Filter

介紹:filter過濾器對web服務器管理的所有web資源,例如JSP、Servlet、靜態文件等進行攔截。從而實現URL級別的權限控制、過濾敏感詞彙、壓縮響應信息等一些高級功能。

實現方式:implement Filter接口,重寫doFilter方法。

package me.gacl.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
* @ClassName: FilterDemo01
* @Description:filter的三種典型應用:
*                     1、可以在filter中根據條件決定是否調用chain.doFilter(request, response)方法,
*                        即是否讓目標資源執行
*                     2、在讓目標資源執行之前,可以對request\response作預處理,再讓目標資源執行
*                     3、在目標資源執行之後,可以捕獲目標資源的執行結果,從而實現一些特殊的功能
* @author: 孤傲蒼狼
* @date: 2014-8-31 下午10:09:24
*/ 
public class FilterDemo01 implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("----過濾器初始化----");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        
        //對request和response進行一些預處理
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        
        System.out.println("FilterDemo01執行前!!!");
        chain.doFilter(request, response);  //讓目標資源執行,放行
        System.out.println("FilterDemo01執行後!!!");
    }

    @Override
    public void destroy() {
        System.out.println("----過濾器銷燬----");
    }
}

在web.xml中配置filter

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!--配置過濾器-->
  <filter>
      <filter-name>FilterDemo01</filter-name>
      <filter-class>me.gacl.web.filter.FilterDemo01</filter-class>           

    <!--配置FilterDemo02過濾器的初始化參數-->
           <init-param>
                  <description>配置FilterDemo01過濾器的初始化參數</description>
                  <param-name>name</param-name>
                  <param-value>gacl</param-value>
           </init-param>
  </filter>
  
  <!--映射過濾器-->
  <filter-mapping>
      <filter-name>FilterDemo01</filter-name>
      <!--“/*”表示攔截所有的請求 -->
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  
</web-app>

具體可參考:https://www.cnblogs.com/xdp-gacl/p/3948353.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章