<noscript id="fyakh"><blockquote id="fyakh"><rt id="fyakh"></rt></blockquote></noscript>
    <strong id="fyakh"><tr id="fyakh"><wbr id="fyakh"></wbr></tr></strong>
    <strong id="fyakh"><samp id="fyakh"><source id="fyakh"></source></samp></strong>
    <li id="fyakh"></li>

        并發編程

          在過去的30年里,計算機的性能是在摩爾定律的推動下,從現在開始,這將由Amdahl定律決定。編寫代碼,有效地利用多個處理器可以是非常具有挑戰性的。" -Doron Rajwan  

        Amdahl's Law每個程序都分為串行與并行部分,降低串行的比重,可提高程序的效率。

         

          進行多核多服務器時代,并行并發模式更是對程序員的挑戰,現在所謂的Thread Programmer世界上也是為數不多,因為線程表面上好像很容易,但在實際應用中真正應付大負荷運算時,原來的線程設計方案漏洞百出。

           并發concurrency屬于問題域(problem domain), 并行parallelism屬于( solution domain)。并行和并發的區別在于有無狀態,并行計算適合無狀態應用,而并發解決的是有狀態的高性能; 有狀態要著力解決并發計算,無狀態要著力并行計算,云計算要能做到這兩種計算自動伸縮擴展。

          并發主要是要解決資源爭奪,并發一般發生在數據聚合的地方,只要有聚合,就有爭奪發生,傳統解決爭奪的方式采取線程鎖機制,這是強行對CPU管理線程人為干預,線程喚醒成本高,新的無鎖并發策略來源于Java的NIO或Node.js,通過隊列+單線程操作資源的方式巧妙避免了多線程,由于只有一個線程,在多核情況下增加了并行計算的機會。

          并發模型分兩種,并發基礎線程和并發組件模型,并發組件模型讓使用者接觸不到基礎線程概念,是一種簡化。作為一個高級集成架構師,應該在程序范式的高級層次定義并發,基于組件級別的并發,并且盡可能地避免涉及線程概念以及線程池等底層概念。

          實現并發的途徑有兩種,基于線程和基于事件,基于線程與基于事件的并發編程之爭

         

        數據庫

        什么是數據庫ACID

        業界最大謊言:大部分關系數據庫并不真的支持ACID

        Java持久鎖總結

        數據庫系統并發控制原理

        PostgreSQL、Oracle/MySQL和SQL Server的MVCC實現原理方式

        最終一致性其實比MVCC簡單

        線性化與串行化比較

        ACID和CAP的詳盡比較

        更多事務專題

        替代傳統事務的并發建議

         

        多線程并發

        多線程常見面試題

        Java多線程設計編程

        Java多線程并發最佳實踐

        Java Collection集合面試題

        什么使得并行編程變得很難?

        多線程讓可擴展性走進了死胡同

        JVM內存模型和性能優化

        jvm是如何處理鎖的?

        Java三種常見鎖性能對比

        可擴展的并發架構

        并發應用中不可變數據結構

        Java硬件事務內存

        Doug Lea談JDK7的Fork/Join框架

        線程池與ForkJoin比較

        使用future實現內置異步API

        不可變真的意味線程安全?

        不變性immutablity設計 

        無堵塞的并發編程 

        actor并發模型&基于共享內存線程模型

        使用Java8的Lambda簡化ReadWriteLock

        Java 8 LongAdders

        Java 8的StampedLocks

        Java: CyclicBarrier解釋

        有關Java其他多線程方面文章。點按進入

        ExecutorService - 10個技巧和竅門

        Java8的CompletableFuture

        多線程并發編程中的初始化問題

         

        并發教程與源碼

        死鎖詳解研究

        隱藏的線程死鎖

        單獨寫原則

        semaphore使用案例源碼

        JPA/Hibernate:基于版本的樂觀鎖并發控制

        數據庫死鎖問題

        什么是數據庫ACID?

        針對多核可擴展的計數器源碼下載

        簡單輕量池Pool實現源碼下載

        使用Guava Striped類實現高并發源碼

        什么時候使用Reentrant鎖

        非堵塞異步Java 8 和 Scala的Try/Success/Failure

        使用Executors 和 ThreadPoolExecutor實現Java線程池案例

        使用Guava為并發應用實現基于對象的微鎖

        Hazelcast入門教程

        Java并發隨機數的產生

        Java8流和forkjoin并行計算

         

        Disruptor

        Disruptor專題

        LMAX架構

        如何讓Java以光的速度跨線程通信?

         

        NIO

        Reactor模式和NIO

        Java NIO原理和使用

        Netty原理和使用

        用Java NIO開發高性能聊天系統

        Vert.x編程

         

        Reactive與Actors

        事件驅動編程

        go reactive宣言

        Rx (Reactive Extensions)介紹

        RxJava教程

        RxJava專題

        AKKA框架

        Actors模型

        Reactive編程專題

         

         

        Goroutine與Channel

        Actor模型和CSP模型的區別

        Go語言Goroutine與Channel內存模型

        Go語言是徹底的面向組合的并發語言

        Go 1.5的并發特性與案例(事件與轉賬)

        Go語言專題

         

        Rust語言并發模型

        參考相關:

        并行計算

        并發策略可以解決延遲

        領域事件和EventSourcing

        并發討論專題

        異步編程模型

        性能主題

        高性能

        性能調優

        性能測試

        EDA

        一级黄色录像影片 夫妻性生活影片 免费在线观看 一级a做爰片