3.spring mvc 怎么接受http ?post 方式提交過來的xml數據?servlet中怎么接受?
?@RequestMapping(value="/jsonPrase",?headers = {"content-type=application/json","content-type=application/xml"})?
?? ???? @ResponseBody?
?? ???? public Object addUser(@RequestBody MsgTip tip) {?
4.8個常用的http狀態嗎及其含義
?成功2××? ?? ?? ? 成功處理了請求的狀態碼。
200? ?? ?? ?? ?? ?? ? 服務器已成功處理了請求并提供了請求的網頁。
204? ?? ?? ?? ?? ?? ? 服務器成功處理了請求,但沒有返回任何內容。? ?? ?? ?? ?? ?? ?? ?? ??
重定向3××? ?? ? 每次請求中使用重定向不要超過 5 次。
301? ?? ?? ?? ?? ?? ? 請求的網頁已永久移動到新位置。當URLs發生變化時,使用301代碼。搜索引擎索引中保存新的URL。
302? ?? ?? ?? ?? ?? ? 請求的網頁臨時移動到新位置。搜索引擎索引中保存原來的URL。
304? ?? ?? ?? ?? ?? ? 如果網頁自請求者上次請求后沒有更新,則用304代碼告訴搜索引擎機器人,可節省帶寬和開銷。
客戶端錯誤4××??表示請求可能出錯,妨礙了服務器的處理。
400? ?? ?? ?? ?? ?? ???服務器不理解請求的語法。
403? ?? ?? ?? ?? ?? ???服務器拒絕請求。
404? ?? ?? ?? ?? ?? ???服務器找不到請求的網頁。服務器上不存在的網頁經常會返回此代碼。
410? ?? ?? ?? ?? ?? ???請求的資源永久刪除后,服務器返回此響應。該代碼與 404(未找到)代碼相似,但在資源以前存在而現在不存在的情況下,有時用來替代404 代碼。如果資源已永久刪除,應當使用 301 指定資源的新位置。
服務器錯誤5××? ?表示服務器在處理請求時發生內部錯誤。這些錯誤可能是服務器本身的錯誤,而不是請求出錯。
500? ?? ?? ?? ?? ?? ?? ?服務器遇到錯誤,無法完成請求。
503? ?? ?? ?? ?? ?? ?? ?服務器目前無法使用(由于超載或停機維護)。通常,這只是暫時狀態。
5.說說對java nio的理解
Java NIO 由以下幾個核心部分組成:
- Channels
- Buffers
- Selectors
6.mysql 的jdbc driver 是怎么注冊到DriverManager中的
7.dubbo中異步調用怎么配置?怎么取消依賴服務的啟動時檢查?
<dubbo:reference?id="demoServicemy2"???interface="com.test.dubboser.ServiceDemo2"> ?
?????<dubbo:method?name="getPerson"?async="true"?/> ?
</dubbo:reference> ?
關閉某個服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:reference interface="com.foo.BarService" check="false" />
關閉所有服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:consumer check="false" />
關閉注冊中心啟動時檢查:(注冊訂閱失敗時報錯)
<dubbo:registry check="false" />
?
8.怎么通過zookerper 實現leader選擇?請寫出步驟
具體步驟
9.maven profile怎么配置?引用場景是什么?
? ?mvn clean package -Pdev即構建出生產環境需要的war包
10.MAVEN中怎么實現在發布時候編譯測試代碼?但不執行測試用例?
在編譯的時候,加上"-Dmaven.test.skip=true"參數就好了
如果是eclipse執行maven命令,可以配置該命令:Run as->Run Configurations->勾上Skip Tests
11.git中怎么修改最后一次提交點的說明信息
11.linux中怎么殺死占用80端口的進程
第一步,輸入命令:netstat -tlnp
列出系統里面監聽網絡的TCP連接和相應的進程PID。
參數說明:
-t:表示列出TCP連接
-l:表示列出正在網絡監聽的服務
-n:表示以端口號來顯示
-p:表示列出進程PID
kill -9 某個PID
12.kill 1234 ?kill -0 1234 kill -3 1234 kill -9 1234 區別
kill 殺死進程
命令格式 kill -3 pid
kill -3 pid)用來打印Java進程trace,并不會影響程序運行,不用擔心他把程序殺死了;
kill -10 pid可觸發進程進行一次強制GC。
kill?-0 pid 不發送任何信號,但是系統會進行錯誤檢查。
所以經常用來檢查一個進程是否存在,存在返回0;不存在返回1 ?
kill -9強行殺死進程
13 。前序 中序 然后答后序 ? 前序是:根左右 中序: 左根右 后序:左右根
14.redis注意事項redis擊穿和redis高并發處理
緩存擊穿:
查詢一個數據庫中不存在的數據,比如商品詳情,查詢一個不存在的ID,每次都會訪問DB,如果有人惡意破壞,很可能直接對DB造成過大地壓力。
緩存擊穿的解決方案:
當通過某一個key去查詢數據的時候,如果對應在數據庫中的數據都不存在,我們將此key對應的value設置為一個默認的值,比如“NULL”,并設置一個緩存的失效時間,這時在緩存失效之前,所有通過此key的訪問都被緩存擋住了。后面如果此key對應的數據在DB中存在時,緩存失效之后,通過此key再去訪問數據,就能拿到新的value了。
緩存失效:
在高并發的環境下,如果此時key對應的緩存失效,此時有多個進程就會去同時去查詢DB,然后再去同時設置緩存。這個時候如果這個key是系統中的熱點key或者同時失效的數量比較多時,DB訪問量會瞬間增大,造成過大的壓力。
緩存失效的解決方案:
- 將系統中key的緩存失效時間均勻地錯開,防止統一時間點有大量的key對應的緩存失效;
- 重新設計緩存的使用方式,當我們通過key去查詢數據時,首先查詢緩存,如果此時緩存中查詢不到,就通過分布式鎖進行加鎖,取得鎖的進程查DB并設置緩存,然后解鎖;其他進程如果發現有鎖就等待,然后等解鎖后返回緩存數據或者再次查詢DB。
熱點key:
緩存中的某些Key(可能對應用與某個促銷商品)對應的value存儲在集群中一臺機器,使得所有流量涌向同一機器,成為系統的瓶頸,該問題的挑戰在于它無法通過增加機器容量來解決。
熱點key的解決方案:
- 客戶端熱點key緩存:將熱點key對應value并緩存在客戶端本地,并且設置一個失效時間。對于每次讀請求,將首先檢查key是否存在于本地緩存中,如果存在則直接返回,如果不存在再去訪問分布式緩存的機器。
- 將熱點key分散為多個子key,然后存儲到緩存集群的不同機器上,這些子key對應的value都和熱點key是一樣的。當通過熱點key去查詢數據時,通過某種hash算法隨機選擇一個子key,然后再去訪問緩存機器,將熱點分散到了多個子key上。
15.JVM oom內存溢出怎么處理
? ?
三,常見內存溢出錯誤解決辦法
1,???OutOfMemoryError異常
除了程序計數器外,虛擬機內存的其他幾個運行時區域都有發生OutOfMemoryError(OOM)異常的可能,
Java Heap 溢出
一般的異常信息:java.lang.OutOfMemoryError:Java heap spacess
java堆用于存儲對象實例,我們只要不斷的創建對象,并且保證GC Roots到對象之間有可達路徑來避免垃圾回收機制清除這些對象,就會在對象數量達到最大堆容量限制后產生內存溢出異常。
出現這種異常,一般手段是先通過內存映像分析工具(如Eclipse Memory Analyzer)對dump出來的堆轉存快照進行分析,重點是確認內存中的對象是否是必要的,先分清是因為內存泄漏(Memory Leak)還是內存溢出(Memory Overflow)。
如果是內存泄漏,可進一步通過工具查看泄漏對象到GC Roots的引用鏈。于是就能找到泄漏對象時通過怎樣的路徑與GC Roots相關聯并導致垃圾收集器無法自動回收。
如果不存在泄漏,那就應該檢查虛擬機的參數(-Xmx與-Xms)的設置是否適當。
2,???虛擬機棧和本地方法棧溢出
如果線程請求的棧深度大于虛擬機所允許的最大深度,將拋出StackOverflowError異常。
如果虛擬機在擴展棧時無法申請到足夠的內存空間,則拋出OutOfMemoryError異常
這里需要注意當棧的大小越大可分配的線程數就越少。
3,???運行時常量池溢出
異常信息:java.lang.OutOfMemoryError:PermGen space
如果要向運行時常量池中添加內容,最簡單的做法就是使用String.intern()這個Native方法。該方法的作用是:如果池中已經包含一個等于此String的字符串,則返回代表池中這個字符串的String對象;否則,將此String對象包含的字符串添加到常量池中,并且返回此String對象的引用。由于常量池分配在方法區內,我們可以通過-XX:PermSize和-XX:MaxPermSize限制方法區的大小,從而間接限制其中常量池的容量。
4,???方法區溢出
方法區用于存放Class的相關信息,如類名、訪問修飾符、常量池、字段描述、方法描述等。
異常信息:java.lang.OutOfMemoryError:PermGen space
方法區溢出也是一種常見的內存溢出異常,一個類如果要被垃圾收集器回收,判定條件是很苛刻的。在經常動態生成大量Class的應用中,要特別注意這點。
?
16.cdn怎么加速和怎么緩存
動態內容分發與復制技術
? ? ??大家都知道,網站訪問響應速度取決于許多因素,如網絡的帶寬是否有瓶頸、傳輸途中的路由是否有阻塞和延遲、網站服務器的處理能力及訪問距離等。多數情況下,網站響應速度和訪問者與網站服務器之間的距離有密切的關系。如果訪問者和網站之間的距離過遠的話,它們之間的通信一樣需要經過重重的路由轉發和處理,網絡延誤不可避免。一個有效的方法就是利用內容分發與復制技術,將占網站主體的大部分靜態網頁、圖像和流媒體數據分發復制到各地的加速節點上。所以動態內容分發與復制技術也是CDN所需的一個主要技術。
緩存技術
? ? ? ?緩存技術已經不是一種新鮮技術。Web緩存服務通過幾種方式來改善用戶的響應時間,如代理緩存服務、透明代理緩存服務、使用重定向服務的透明代理緩存服務等。通過Web緩存服務,用戶訪問網頁時可以將廣域網的流量降至最低。對于公司內聯網用戶來說,這意味著將內容在本地緩存,而無須通過專用的廣域網來檢索網頁。對于Internet用戶來說,這意味著將內容存儲在他們的ISP的緩存器中,而無須通過Internet來檢索網頁。這樣無疑會提高用戶的訪問速度。CDN的核心作用正是提高網絡的訪問速度,所以,緩存技術將是CDN所采用的又一個主要技術。
17.分布式鎖
?