面試基礎

1、
1.一、提交中文,接受參數會出現亂碼,出現亂碼的緣由是什麼?
1.二、若是使用get方式提交中文,如何保證取到正確的結果?
1.三、若是使用post方式提交中文,如何保證取到正確的結果?
1.四、如何保證jsp頁面上顯示中文不出現亂碼?
1.1    
    Java和JSP文件自己編譯時(Java和JSP編譯成class文件過程當中,使用的編碼方式與源文件的編碼不一致)
    和 Java程序於其餘媒介交互產生的亂碼問題
1.2
    1.2.1 表單方式 get傳值亂碼:
    修改 TOMCAT/conf/server.xml文件
 
     1.2.2 url方式get傳值亂碼:
    首先對中文參數使用URLEcoder編碼爲utf-8,而後在request.getParameter("")接收到參數後再使用URLDecoder還原
1.3
    1.3.1 最好經過過濾器實現每一個頁面都設置爲 request.setCharacterEncoding("UTF-8")
     1.3.2 接收頁面設置request.setCharacterEncoding("UTF-8")
     1.3.3 單個正確的中文字符串:String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;
1.4 jsp的頭部將pageEncoding和contentType的charset的編碼設置爲UTF-8
二.synchronized和lock的異同
所實現的鎖功能是一致的,可是 Lock 的功能更爲強大一些。
Lock 能夠產生多個條件變量,能夠實現多個相似於 wait, notifyAll 的等待及喚醒功能。而 synchronized 只有一個條件變量,也就是鎖對象的 wait 和 notifyAll
synchronized 也有好處的,好比一些性能監控工具,能夠監測到 synchronized 的鎖。沒法監測到 Lock 的鎖定,畢 竟 Lock 的鎖定是經過代碼實現的,而 synchronized 是在 JVM 層面上實現的。要監控工具能監測到 Lock 的鎖定那還須要有一 段時日。
另外,synchronized 在鎖定時若是方法塊拋出異常,JVM 會自動將鎖釋放掉,不會由於出了異常沒有釋放鎖形成線程死鎖。可是 Lock 的 話就享受不到 JVM 帶來自動的功能,出現異常時必須在 finally 將鎖釋放掉,不然將會引發死鎖。Lock 鎖的代碼結構通常是這樣的:
 
lock.lock();
try {
    xxxx;
} finally {
    lock.unlock();
}

三.sleep和wait的區別html

sleep是線程被調用時,佔着cpu去睡覺,其餘線程不能佔用cpu,os認爲該線程正在工做,不會讓出系統資源,
wait是進入等待池等待,讓出系統資源,其餘線程能夠佔用cpu,通常wait不會加時間限制,
由於若是wait的線程運行資源不夠,再出來也沒用,要等待其餘線程調用notifyall方法喚醒等待池中的全部線程,纔會在進入就緒序列等待os分配系統資源,
sleep是靜態方法,是誰掉的誰去睡覺,就算是在main線程裏調用了線程b的sleep方法,實際上仍是main去睡覺,想讓線程b去睡覺要在b的代碼中掉sleep
sleep(100L)是佔用cpu,線程休眠100毫秒,其餘進程不能再佔用cpu資源,wait(100L)是進入等待池中等待,交出cpu等系統資源供其餘進程使用,
在這100毫秒中,該線程能夠被其餘線程notify,但不一樣的是其餘在等待池中的線程不被notify不會出來,
但這個線程在等待100毫秒後會自動進入就緒隊列等待系統分配資源,

換句話說,sleep(100)在100毫秒後確定會運行,但wait在100毫秒後還有等待os調用分配資源,因此wait100的中止運行時間是不肯定的,但至少是100毫秒。
四.struts2中如何國際化 考慮幾種狀況 js jsp action 普通java類
1:java內置的國際化 http://www.educity.cn/wenda/64473.html
java內置的國際化,以java.util.ResourceBundle和java.util.Locale兩個類爲中心,其中 java.util.Locale負責選擇合適的語言,
而java.util.ResourceBundle負責根據注入的 java.util.Locale對象來選擇國際化信息的來源,返回國際化信息。
package com.capinfotech.util;

import java.util.Locale;
import java.util.ResourceBundle;

public class Language {

    public static void main(String[] args) {
        
        Locale local1= Locale.SIMPLIFIED_CHINESE;
        ResourceBundle bundle1 = ResourceBundle.getBundle("message", local1);
        System.out.println("bundle=" + bundle1.getString("labela"));
        
        Locale enLocal = Locale.US;
        ResourceBundle bundle2 = ResourceBundle.getBundle("message", enLocal);
        System.out.println("enBundle=" + bundle2.getString("labela"));
        
        Locale franceLocal = Locale.FRANCE;
        ResourceBundle franceBundle = ResourceBundle.getBundle("message", franceLocal);
        System.out.println("franceLocal=" + franceBundle.getString("labela"));
        
    }
}
Locale local1= Locale.SIMPLIFIED_CHINESE;
        ResourceBundle bundle1 = ResourceBundle.getBundle("message", local1);
        String message = bundle1.getString("labela");
        String[] params = new String[2];
        params[0] = "Petter";
        params[1] = "20100000000";
        //將參數合成進讀出的國際化信息
        String info = MessageFormat.format(message, params);
        System.out.println(info);

2.jspjava

    首先包含國際化資源文件message.properties, message_zh_CN.properties, message_en_US.propertiesapi

    而後在struts.xml中設置一個常量:<constant name="struts.custom.i18n.resource" value="message" />jsp

<s:text name="labela" />    
    <br>
    <s:text name="labelb" >
        <s:param>ok</s:param>
    </s:text>
    <br>
    <s:i18n name="com.capinfotech.action">
        <s:text name="labela" />
    </s:i18n>
    
    <s:form>
        <s:textfield name="name1" key="labela" />
    </s:form>

3.action工具

        System.out.println(this.getText("labela"));  //訪問默認的國際化信息
        System.out.println(this.getText("labelb", null, "ok")); //訪問默認的國際化信息並傳入參數值爲ok

        ResourceBundle bundle = this.getTexts("message"); //訪問名爲message的全局國際化信息
        System.out.println(bundle.getString("labela"));

五java中異常處理機制的簡單原理和應用post

 http://www.blogjava.net/b47617/archive/2006/03/04/33561.html性能

相關文章
相關標籤/搜索