webservice是一種跨編程語言和跨操做系統的遠程調用技術,遵循SOPA/WSDL規範。html
springcloud是一個微服務框架,並提供全套分佈式系統解決方案。支持配置管理,熔斷機制,leader選舉,服務治理,分佈式session,微代理,控制總線,智能路由,一次性token。程序員
每一個線程都有本身的棧內存,用於存儲本地變量,方法參數和棧調用,一個線程中存儲的變量對其它線程是不可見的。而堆是全部線程共享的一片公用內存區域。對象都在堆裏建立,爲了提高效率線程會從堆中弄一個緩存到本身的棧,若是多個線程使用該變量就可能引起問題,這時volatile 變量就能夠發揮做用了,它要求線程從主存中讀取變量的值。web
堆:(對象)ajax
引用類型的變量,其內存分配在堆上或者常量池(字符串常量、基本數據類型常量),須要經過new等方式來建立。spring
堆內存主要做用是存放運行時建立(new)的對象。sql
(主要用於存放對象,存取速度慢,能夠運行時動態分配內存,生存期不須要提早肯定)數據庫
棧:(基本數據類型變量、對象的引用變量)編程
基本數據類型的變量(int、short、long、byte、float、double、boolean、char等)以及對象的引用變量,其內存分配在棧上,變量出了做用域就會自動釋放。json
(1)Singleton:一個Spring容器中只有一個Bean的實例,此爲Spring的默認配置,全容器共享一個實例。跨域
(2)Prototype:每次調用新建一個Bean實例。
(3)Request:Web項目中,給每個 http request 新建一個Bean實例。
(4)Session:Web項目中,給每個 http session 新建一個Bean實例。
(5)GlobalSession:這個只在portal應用中有用,給每個 global http session 新建一個Bean實例。
所謂事務的傳播行爲是指,若是在開始當前事務以前,一個事務上下文已經存在,此時有若干選項能夠指定一個事務性方法的執行行爲。在TransactionDefinition定義中包括了以下幾個表示傳播行爲的常量:
Struts2是類級別的,Spring是方法級別的
spring事務能夠分爲編程式事務和聲明式事務
參考: http://blog.csdn.net/chenleixing/article/details/44570681
① Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截
② SpringMVC的方法之間基本上獨立的,獨享request response數據
③ 因爲Struts2須要針對每一個request進行封裝,把request,session等servlet生命週期的變量封裝成一個一個Map,供給每一個Action使用,並保證線程安全,因此在原則上,是比較耗費內存的
④ 攔截器實現機制上,Struts2有以本身的interceptor機制,SpringMVC用的是獨立的AOP方式
⑤ SpringMVC的入口是servlet,而Struts2是filter
⑥ SpringMVC集成了Ajax
⑦ SpringMVC驗證支持JSR303,處理起來相對更加靈活方便,而Struts2驗證比較繁瑣,感受太煩亂
⑧ Spring MVC和Spring是無縫的。從這個項目的管理和安全上也比Struts2高
⑨ Struts2更加符合OOP的編程思想, SpringMVC就比較謹慎,在servlet上擴展
⑩ SpringMVC開發效率和性能高於Struts2
主要思想是IOC控制反轉,DI依賴注入,AOP面向切面
1.ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
2.對於隨機訪問get和set,ArrayList以爲優於LinkedList,由於LinkedList要移動指針。
3.對於新增和刪除操做add和remove,LinedList比較佔優點,由於ArrayList要移動數據。
(1):Vector是線程安全的,源碼中有不少的synchronized能夠看出,而ArrayList不是。致使Vector效率沒法和ArrayList相比;
(2):ArrayList和Vector都採用線性連續存儲空間,當存儲空間不足的時候,ArrayList默認增長爲原來的50%,Vector默認增長爲原來的一倍;
HashMap和Hashtable都實現了Map接口,但決定用哪個以前先要弄清楚它們之間的分別。主要的區別有:線程安全性,同步(synchronization),以及速度。
線程安全就是多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其餘線程不能進行訪問直到該線程讀取完,其餘線程纔可以使用。不會出現數據不一致或者數據污染。(Vector,HashTable)
線程不安全就是不提供數據訪問保護,有可能出現多個線程前後更改數據形成所獲得的數據是髒數據。(ArrayList,LinkedList,HashMap等)
進程和線程都是一個時間段的描述,是CPU工做時間段的描述,不過是顆粒大小不一樣;
(1)進程是資源的分配和調度的一個獨立單元,而線程是CPU調度的基本單元
(2)同一個進程中能夠包括多個線程,而且線程共享整個進程的資源(寄存器、堆棧、上下文),一個進行至少包括一個線程。
(3)進程的建立調用fork或者vfork,而線程的建立調用pthread_create,進程結束後它擁有的全部線程都將銷燬,而線程的結束不會影響同個進程中的其餘線程的結束
(4)線程是輕兩級的進程,它的建立和銷燬所須要的時間比進程小不少,全部操做系統中的執行功能都是建立線程去完成的
(5)線程中執行時通常都要進行同步和互斥,由於他們共享同一進程的全部資源
(6)線程有本身的私有屬性TCB,線程id,寄存器、硬件上下文,而進程也有本身的私有屬性進程控制塊PCB,這些私有屬性是不被共享的,用來標示一個進程或一個線程的標誌
黑盒測試關注程序的功能是否正確,面向實際用戶;
白盒測試關注程序源代碼的內部邏輯結構是否正確,面向編程人員;
灰盒測試是介於白盒測試與黑盒測試之間的一種測試。
單元測試(Unit Testing)是對軟件基本組成單元進行的測試,如函數或是一個類的方法。這裏的單元,就是軟件設計的最小單位。
使用讀寫分離技術(
讓主數據庫(master)處理事務性增、改、刪操做(INSERT、UPDATE、DELETE),而從數據庫(slave)處理SELECT查詢操做
)
簡單回答springbean生命週期:
(1)實例化(必須的)構造函數構造對象
(2)裝配(可選的)爲屬性賦值
(3)回調(可選的)(容器-控制類和組件-回調類)
(4)初始化(init-method=" ")
(5)就緒
(6)銷燬(destroy-method=" ")
1A)客戶端發出http請求,只要請求形式符合web.xml
文件中配置的*.action的話,就由DispatcherServlet
來處理。
1B)DispatcherServlet再將http請求委託給映射器
的對象來將http請求交給對應的Action來處理
2)映射器根據客戶的http請求,再對比<bean name="/hello.action
若是匹配正確,再將http請求交給程序員寫的Action
3)執行Action中的業務方法,最終返回一個名叫ModelAndView
的對象,其中封裝了向視圖發送的數據和視圖的邏輯名
4)ModelAndView對象隨着響應到到DispatcherServlet中了
5)這時DispatcherServlet收到了ModelAndView對象,
它也不知道視圖邏輯名是何意,又得委託一個名叫
視圖解析器的對象去具體解析ModelAndView對象
中的內容
6)將視圖解析器解析後的內容,再次交由DispatcherServlet
核心控制器,這時核心控制器再將請求轉發到具體的
視圖頁面,取出數據,再顯示給用戶
Servlet 經過調用 init () 方法進行初始化。
Servlet 調用 service() 方法來處理客戶端的請求。
Servlet 經過調用 destroy() 方法終止(結束)。
最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的
參考:http://blog.csdn.net/u014727260/article/details/72793459
① 代理(經過後臺操做)
② JSONP(添加響應頭,容許跨域 )
addHeader(‘Access-Control-Allow-Origin:*’);//容許全部來源訪問
addHeader(‘Access-Control-Allow-Method:POST,GET’);//容許訪問的方式
③ 在ajax的dataType方式改成「jsonp」
① 普通索引
② 惟一索引
③ 主鍵索引
④ 組合索引
⑤ 全文索引
參考:http://www.javashuo.com/article/p-cswecvft-bb.html
① 作分佈式下的服務發現仍是使用eureka更好,也就是AP特性的分佈式協調工具(zookeeper由於網絡故障就沒法返回可用的主機)
② zookeeper技術更加成熟,資料更多
③ Eureka。是spring cloud之下一個專門負責微服務服務註冊和發現的組件,Eureka就是爲了服務發現而設計的
④ Zookeeper。是用來保證分佈式一致性的一個軟件。不是爲了服務發現註冊而設計的,只不過它的特性也能夠被二次開發成服務發現註冊中心罷了
Spring Cloud爲微服務架構開發涉及的配置管理,服務治理,熔斷機制,智能路由,微代理,控制總線,一次性token,全局一致性鎖,leader選舉,分佈式session,集羣狀態管理等操做提供了一種簡單的開發方式。
組件列:
transient(瞬時狀態),persistent(持久化狀態)以及detached(離線狀態)
轉換:update() saveOrUpdate() lock()