原创 可承載千萬級用戶的互聯網公司網絡框架詳解

一、架構 二、流程解釋 1.DNS根據域名查詢地址 注:因爲DNS服務器性能數量的原因,有時候公司會選擇讓DNS來承擔一部分分流的任務,在DNS服務器中爲同一個主機名配置多個IP地址,在應答DNS查詢時,DNS服務器對每個查詢將

原创 數據庫——sql優化(百萬數據優化方案)

一、sql數據庫優化 1、索引 建立索引是數據庫優化各種方案之中成本最低,見效最快的解決方案,一般來講,數據庫規模在幾十萬和幾百萬級別的時候見效最快,即便是有不太複雜的表關聯,也能大幅度提高sql的運行效率。  建立索引需要注意的地方 1

原创 雜談——ajax跳轉的一些坑

1.ajax提交請求,被@RequestMapping方法接收,返回ModelAndView對象,想通過視圖解析器返回到相應的視圖解析頁面是不能成功的。因爲之前提交的ajax請求並沒有結束,因此頁面也未關閉,不能跳轉到想要的視圖頁面。 解

原创 可承載千萬級用戶的互聯網ZooKeeper框架結構詳解

一、架構 二、流程解析 1.在zookeeper註冊生產者,給生產者分配標識key 注:不同的生產者可以有不同的key,也可以選擇使用相同的key。一般是類似功能的生產者分配一個key 2.在zookeeper註冊消費者,也給消

原创 數據庫——SQL Server基礎之存儲過程

一:存儲過程概述  SQL Server中的存儲過程是使用T_SQL編寫的代碼段。它的目的在於能夠方便的從系統表中查詢信息,或者完成與更新數據庫表相關的管理任務和其他的系統管理任務.T_SQL語句是SQL Server數據庫與應用程序之間

原创 可承載千萬級用戶的 Redis框架結構詳解

一、架構 數據單片分發 數據多片分發 二、流程解析 數據單片分發 數據分發到一個片上,這是默認的redis分發模式。先分發請求到各個片,再在內存中構成樹結構 數據多片分發 數據分發到多個片,顯著降低數據傳輸速度,但是數據在內存

原创 Java——進程和線程區別(糾正網上幾個常見的誤解)

1.什麼是進程? 當一個程序開始運行時,它就是一個進程,進程包括運行中的程序和程序所使用到的內存和系統資源。 進程由兩部分構成:進程內核對象,地址空間。 每個進程至少由三要素組成:程序塊、數據塊、進程控制塊 進程是系統進行資源分配的一個基

原创 Java——集合和數組的區別

1、數組聲明瞭它容納的元素的類型,而集合不聲明。 2、數組是靜態的,一個數組實例具有固定的大小,一旦創建了就無法改變容量了。而集合是可以動態擴展容量,可以根據需要動態改變大小,集合提供更多的成員方法,能滿足更多的需求。 3、數組的存放的類

原创 HashMap、Hashtable、TreeMap、LinkedHashMap、IdentityHashMap、ConcurrentHashMap和WeakHashMap的區別

一、Map概述 java爲數據結構中的映射定義了一個接口java.util.Map;它有三個實現類,分別是HashMap、Hashtable 和TreeMap. Map是用來存儲鍵值對的數據結構,在數組中通過數組下標來對其內容進行索引的,

原创 鎖的優化——淺談偏向鎖、輕量級鎖、重量級鎖

JavaSE1.6爲了減少獲得鎖和釋放鎖帶來的性能消耗,引入了“偏向鎖”和“輕量級鎖”。 在JavaSE1.6中,鎖一共有4種狀態,級別從低到高依次是:無鎖狀態、偏向鎖狀態、輕量級鎖狀態和重量級鎖狀態,這幾個狀態會隨着競爭情況逐漸升級。

原创 Java——Mybatis二級緩存

一、什麼是二級緩存 二級緩存是mapper級別的緩存,Mybatis默認是沒有開啓二級緩存。多個SqlSession去操作同一個Mapper的sql語句,多個SqlSession可以共用二級緩存,也就是說,二級緩存是跨SqlSession

原创 Java——繼承機制詳談

先給出結論: 子類只能繼承父類的非靜態方法,並可以對之進行覆蓋。 對於父類的成員變量和靜態方法,子類不能夠繼承,但是子類可以訪問到父類的成員變量和靜態方法。如果此時子類中有與父類相同的成員變量或靜態方法,也只是把父類的靜態方法隱藏。 當通

原创 Java——類加載機制詳解

一、什麼是類加載 虛擬機把描述類的數據從class文件(代表類和接口,是一串二進制流)加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的java類型。   二、什麼時候進行類加載 與那些在編譯時需要進行連接工作

原创 Java——Mybatis一級緩存

一、概述 當用戶頻繁查詢某些固定的數據時,第一次將這些數據從數據庫中查詢出來,保存在緩存(內存,高速磁盤)中。當下次用戶再次查詢這些數據時,不用再通過數據庫查詢,而是去緩存裏面查詢。 這麼做的目的,一是提升查詢速度,二是降低數據庫的併發請

原创 Java語言是" 解釋執行" 的語言嗎

先給結論: class(字節碼)文件經過JVM編譯成機器碼進行解釋執行(解釋執行)。對於熱點代碼,JIT(JustInTime)編譯器會在運行時將其編譯爲機器碼執行(編譯運行) 所以在JVM默認的mixed模式下JAVA既不完全是解釋運行