java面試經常使用問題

MYSQL一個語句很慢,怎麼調優法?
        由於問題是調優,也就是基本不能改變總體的現有實現。下面分析慢的緣由並給出對應可能正確的解決方案
    一、SQL語句自己的優化,好比去掉沒必要要的排序等。
    二、若是是查詢過於複雜,也即包含了邏輯(體如今還須要在Java等代碼中組織數據),這時能夠嘗試編寫存儲過程將這一過程原子化,能夠減小訪問數據庫的次數。
    三、若是SQL已經沒法繼續改進,業務也已固定,那麼從SQL自己是無法優化了,能夠試着使用緩存,前提是數據主要用於讀,而不是頻繁的修改。java

 

線程池的機制是怎麼樣的? 好比 線程池大小爲10, 如今有100個線程等待運行。
    介於這個問題,若是是Java,我就默認樓主說的是FixedThreadPool線程池(定長)了。
    有新的線程就交給線程池,它會負責管理,此處假設設定的最大併發爲10個線程,若是已經有10個線程在執行了,那麼後續的90個線程會進入隊列,直到以前已經開始執行的10個線程中有一個或者多個執行完畢,這90箇中的一個或多個就會被線程池執行。數據庫

 

一個網頁打開很慢,頁面很慢怎麼調優?從哪些方面,具體怎麼調優?
   首先 肯定慢的緣由在哪裏:瀏覽器渲染仍是從服務器獲取數據很慢。
    通常是從服務器獲取數據慢:
    域名解析慢,這個通常不會出現問題,不過不排除
    服務器緣由:
        網絡帶寬過小
        應用服務器性能問題:
    一、是否是數據庫查詢太慢,看下數據庫的慢日誌,如有相關記錄,優化數據庫查詢
    二、獲取數據後通過了一個漫長的處理過程:可能對數據進行了耗時的處理
    三、服務器自己沒什麼問題:高併發致使服務器響應不過來:集羣,使用Nginx負載均衡,使用Redis統一管理Session。依然不行?拆分業務,分佈式處理。瀏覽器

 

MYSQL常見存儲引擎是InnoDB和MyISAM
 InnoDB做爲默認引擎,在高可用性和高性能的折中選擇。
    主要優點:
    支持事物,具備提交,回滾和崩潰恢復能力的事務安全。
    支持行級鎖和​​Oracle風格的讀取增長多用戶的併發性和性能。
    基於主鍵優化數據的查詢。
    支持外鍵。
    能夠自由的組合其餘類型存儲引擎的表,好比查詢時join其餘存儲引擎的表。
    處理大量數據時的InnoDB已被設計爲CPU的效率和最大的性能。
MyISAM
    MyISAM致力於快速查詢,經常是爲了WEB應用而構建。InnoDB和MyIsam,固然還有其餘的,InnoDB支持事務,MyISAM不支持,Innodb支持行級鎖,myisam不支持,主要用於讀寫分離,讀庫可使用myisam存儲引擎,效率更高緩存

 

java死鎖安全

1)緣由服務器

資源有限,刀叉問題。網絡

2)排查併發

    1. 使用jstack打印進程 堆棧信息,搜索關鍵字。找到阻塞線程。可使用tda.bat 查看更詳細的堆棧信息。負載均衡

    2. 使用JDK給咱們的的工具JConsole,能夠經過打開cmd而後輸入jconsole打開。然後點擊檢測死鎖。分佈式

3)解決方案

順序獲取

相關文章
相關標籤/搜索