『壹』 在java中並行和並發機制的區別
並發與並行是兩個既相似而又不相同的概念:並發性,又稱共行性,是指能處理多個同時性活動的能力;並行是指同時發生的兩個並發事件,具有並發的含義,而並發則不一定並行,也亦是說並發事件之間不一定要同一時刻發生。
-------------------------------------------------------------
並發和並行的區別僅僅在發生時刻的不同嗎?
舉個例子理解一下,如:
假設有A、B 兩個事件
並行:
如果A和B都在15:30同時發生,A 的運行時間為 5 分鍾,B 的運行時間為 8 分鍾
在前5分鍾是並行,也包括並發,因為他們都是在同一時刻發生的
並發:
如果A在15:30發生,運行3分鍾後,B事件發生,在以後的5分鍾時間里,A和B 是並發的
-------------------------------------------------------------
並發,是在同一個cpu上同時(不是真正的同時,而是看來是同時,因為cpu要在多個程序間切換)運行多個程序。
並行,是每個cpu運行一個程序。
打個比方,並發,就像一個人(cpu)喂2個孩子(程序),輪換著每人喂一口,表面上兩個孩子都在吃飯。
並行,就是2個人喂2個孩子,兩個孩子也同時在吃飯。
並行(Parallel):多條垃圾收集線程並行工作,而用戶線程仍處於等待狀態
並發(Concurrent):垃圾收集線程與用戶線程一段時間內同時工作(交替執行)
並行和並發 與Java無關,這是操作系統級別的概念。並發,就像一個人(CPU)喂 n 個孩子(程序),輪換著每人喂一口,從表面上看兩個孩子都在吃飯;而並行,就是 n 個人(CPU)喂 n 個孩子(程序),n 個孩子也同時在吃飯。
一、開放性
1、SQL Server 只能在windows上運行,沒有絲毫的開放性,操作系統的系統的穩定對資料庫是十分重要的。Windows9X系列產品是偏重於桌面應用,NT server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在處理大資料庫。
2、 Oracle 能在所有主流平台上運行(包括 windows)。完全支持所有的工業標准。採用完全開放策略。可以使客戶選擇最適合的解決方案。對開發商全力支持。
二、可伸縮性,並行性
1、SQL server 並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。
2、Oracle 並行伺服器通過使一組結點共享同一簇中的工作來擴展windownt的能力,提供高可用性和高伸縮性的簇的解決方案。如果windowsNT不能滿足需要,用戶可以把資料庫移到UNIX中。Oracle的並行伺服器對各種UNIX平台的集群機制都有著相當高的集成度。
三、性能
1、SQL Server 多用戶時性能不佳
2、Oracle 性能最高, 保持開放平台下的TPC-D和TPC-C的世界記錄。
四、客戶端支持及應用模式
1、SQL Server C/S結構,只支持windows客戶,可以用ADO、DAO、OLEDB、ODBC連接。
2、Oracle 多層次網路計算,支持多種工業標准,可以用ODBC、JDBC、OCI等網路客戶連接。
五、操作簡便
1、 SQL Server 操作簡單,但只有圖形界面。
2、Oracle 較復雜,同時提供GUI和命令行,在windowsNT和unix下操作相同。
六、使用風險
1、SQL server 完全重寫的代碼,經歷了長期的測試,不斷延遲,許多功能需要時間來證明。並不十分兼容。
2、Oracle 長時間的開發經驗,完全向下兼容。得到廣泛的應用。完全沒有風險。 最後價格上 ORACLE貴過SQLSRVER。
不同的設備肯定session是獨立的。session的實現的機制是,瀏覽器第一次訪問,不包含任何cookie,伺服器隨機生成一個sessionid作為cookie返回客戶端。
之後的訪問,瀏覽器帶上這個cookie,伺服器視作是同一個會話。
可見,如果不同的計算機,session肯定不同。
Hibernate並發機制:
a、Hibernate的Session對象是非線程安全的,對於單個請求,單個會話,單個的工作單元(即單個事務,單個線程),它通常只使用一次,然後就丟棄。
如果一個Session 實例允許共享的話,那些支持並發運行的,例如Http request,session beans將會導致出現資源爭用。
如果在Http Session中有hibernate的Session的話,就可能會出現同步訪問Http Session。只要用戶足夠快的點擊瀏覽器的「刷新」,就會導致兩個並發運行的線程使用同一個Session。
b、多個事務並發訪問同一塊資源,可能會引發第一類丟失更新,臟讀,幻讀,不可重復讀,第二類丟失更新一系列的問題。
使用tornado的前提是你的服務是IO密集型的,並且你得寫非同步api,也可以請參考我簽名中的框架,把tornado改造成eventloop+threadpool (GitHub - nikoloss/iceworld: tonado的multi-thread 多線程封裝)。我們公司的android ios wap後台全是這套框架在提供服務。目前已經切換到一個分布式響應群組裡面了,此時tornado只是作為一個中繼的gateway存在:GitHub - nikoloss/cellnest: 分布式service
在沒有阻塞的情況下,python的性能肯定不如編譯型語言。這種全非同步的模型的優勢也無法體現出來,一旦有IO操作了,這種全非同步模型的第一步apet新連接的操作並不會暫停,也就是只要有內容抵達,至少ioloop這個環節是可以照單全收的,接收之後協程處理,隨著並發量增長它的性能下降是平穩且平滑的。反觀線程模型,如果消費數據趕不上新連接新數據的生產,性能就會直線下降。
你的700qps差不多,你可以換3.1或者3.2的tornado試試,1100~1400應該可以跑出來。當然追求一個靜態文本的輸出性能是否有必要,我覺得實際情況比這種單純的壓測要復雜的多。
1、並發:在操作系統中,是指一個時間段中有幾個程序都處於已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。
2、並行:在操作系統中,一組程序按獨立非同步的速度執行,無論從微觀還是宏觀,程序都是一起執行的。
3、多線程:多線程是程序設計的邏輯層概念,它是進程中並發運行的一段代碼。多線程可以實現線程間的切換執行。
4、非同步:非同步和同步是相對的,同步就是順序執行,執行完一個再執行下一個,需要等待、協調運行。非同步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。線程就是實現非同步的一個方式。非同步是讓調用方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程干其它的事情。
5、非同步和多線程並不是一個同等關系,非同步是最終目的,多線程只是我們實現非同步的一種手段。非同步是當一個調用請求發送給被調用者,而調用者不用等待其結果的返回而可以做其它的事情。實現非同步可以採用多線程技術或則交給另外的進程來處理。
a、Hibernate的Session對象是非線程安全的,對於單個請求,單個會話,單個的工作單元(即單個事務,單個線程),它通常只使用一次, 然後就丟棄。 如果一個Session 實例允許共享的話,那些支持並發運行的,例如Http request,session beans將會導致出現資源爭用。 如果在Http Session中有hibernate的Session的話,就可能會出現同步訪問Http Session。只要用戶足夠快的點擊瀏覽器的「刷新」, 就會導致兩個並發運行的線程使用同一個Session。 b、多個事務並發訪問同一塊資源,可能會引發第一類丟失更新,臟讀,幻讀,不可重復讀,第二類丟失更新一系列的問題。 解決方案:設置事務隔離級別。 Serializable:串列化。隔離級別最高 Repeatable Read:可重復讀 Read Committed:已提交數據讀 Read Unmitted:未提交數據讀。隔離級別最差 設置鎖:樂觀鎖和悲觀鎖。 樂觀鎖:使用版本號或時間戳來檢測更新丟失,在 的映射中設置 optimistic-lock=all可以在沒有版本或者時間戳屬性映射的情況下實現 版本檢查,此時Hibernate將比較一行記錄的每個欄位的狀態 行級悲觀鎖:Hibernate總是使用資料庫的鎖定機制,從不在內存中鎖定對象!只要為JDBC連接指定一下隔 離級別,然後讓資料庫去搞定一切就夠了。類LockMode 定義了Hibernate所需的不同的鎖定級別:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;
『貳』 伺服器地址怎麼填寫
以e- mobile77為例,伺服器地址填寫的方法是輸入OA系統伺服器地址即可。
由於伺服器需要響應服務請求,並進行處理因此一般來說伺服器應具備承擔服務並且保障服務的能力。通常分為文件伺服器(能使用戶在其它計算機訪問文件)、資料庫伺服器、應用程序伺服器、WEB伺服器等。
伺服器的構成包括處理器、硬碟、內存、系統匯流排等,相比通用的計算機架構,在處理能力、穩定性、可靠性、安全性、可擴展性、可管理性等方面要求更高。
(2)伺服器如何並行資源跑代碼擴展閱讀:
按照體系架構來區分,伺服器主要分為兩類:非x86伺服器,包括大型機、小型機和UNIX伺服器,它們是使用ISC(精簡指令集)或EPIC(並行指令代碼)處理器,並且主要採用UNIX和其它專用操作系統的伺服器;
精簡指令集處理器主要有IBM公司 POWERP的和處理器,SUN與富士通公司合作研發的 SPARC處理器、EPIC處理器 Intel主要是研發的安騰處理器等。
這種伺服器價格昂貴,體系封閉,但是穩定性好,性能強,主要用在金融、電信等大型企業的核心系統中。x86伺服器,又稱CISC(復雜指令集)架構伺服器,即通常所講的PC伺服器;
它是基於PC機體系結構,使用或其它兼容x86指令集的處理器晶元和操作系統的伺服器。價格便宜、兼容性好、穩定性較差、安全性不算太高,主要用在中小企業和非關鍵業務中。