私の名前はGolovach Ivanです。小さな教育会社を率いています。 オンラインプログラミングコースを実施しています 。
オンライン教育プラットフォームudemy.comでScala for Java Developersコースも教えています(Coursera / EdXに似ています)。
コミュニティの意見を聞きたい
- コースプログラム「Javaでのマルチコアプログラミング」
 - コースの文学
 
コースの概要:
コースプログラム
モジュール#1:ハードウェアと数学、プリミティブの間
-   「鉄」 
      
- 最新のプロセッサ、キャッシュのアーキテクチャ
 - メモリバリア、読み取り/書き込みの並べ替え、キャッシュコヒーレンスプロトコル
 
 -   「数学」/ Javaメモリモデル 
      
- 新しいJMM-指紋の説明
 - Thread.start()/ join()、volatile、final、CAS、lazySet、weakCompareAndSet、jucからのクラスの保証
 - 新しいJMM形式仕様:エッジの前に起こる、コミットメントプロトコル
 
 -  プリミティブ/コンストラクト 
      
- ダブルチェックロック(破損)、安全な公開
 - synchronized + Object.wait()/ notify()/ notifyAll()-HotSpotに実装されている使用方法、保証内容
 - 独自の実装:Dekkerのアルゴリズム、Petersonのアルゴリズム、Lamport Bakery algotithm
 
 
モジュール#2:java.util.concurrent(Java 5)
-  マルチスレッドコレクション 
      
- BlockingQueue-s
 - ConcurrentMap-s:ConcurrentHashMap、ConcurrentSkipListMap
 - コピーオンライト構造:CopyOnWriteArrayList、CopyOnWriteArraySet
 
 -   「シンクロナイザー」 
      
- ロック、条件、ReentrantLock、ReentrantReadWriteLock、セマフォ
 - CountDownLatch、CyclicBarrier、Exchanger、Phaser
 
 -  スレッドプール+未来 
      
- エグゼキューター、ExecutorService、ThreadPoolExecutor、ScheduledExecutorService、ScheduledThreadPoolExecutor
 - callable、future、jucFutureに欠けているもの
 
 -   jucコア:AbstractQueuedSynchronizer + LockSupport 
      
- jucAQS内部デバイス
 - jucAQS + LockSupportでプリミティブを構築する
 
 
モジュール#3:Fork / Join Framework(java 7)+ Parallel Streams(Java 8)
-  フォーク/結合フレームワーク 
      
- 再帰的並列化のスタイルで問題を解決します
 - イディオムと典型的なタスク
 - フォーク/参加フレームワーク-内部にあるもの
 
 -  並列ストリーム 
      
- Java 8-java.util.Streamを介したデータの操作
 - java.util.Stream.parallel()-その「内部」
 
 
モジュール#4:「非古典的なアーキテクチャ」
-  ノンブロッキングアルゴリズム 
      
- jucatomicパッケージ:AtomicXXX、AtomicXXXArray、AtomicXXXFieldUpdater、AtomicStampedReference、AtomicMarkableReference
 - 分類:ブロッキング、ノンブロッキング、ロックフリー、ウェイトフリー、障害物なし
 - 基本データ構造のノンブロッキング実装:スタック、キュー、デキュー、ハッシュテーブル、ツリーマップ
 
 -  メッセージングベースのアーキテクチャ(Akka) 
      
- あっか図書館
 - 基本的なテンプレート、典型的なアーキテクチャ
 - メッセージングベースのアーキテクチャの長所と短所
 
 -  ソフトウェアトランザクションメモリ(Clojure) 
      
- clojure.langライブラリ*
 - トランザクションメモリアーキテクチャの長所と短所
 
 -  永続的なデータ構造 
      
- 永続的なデータ構造の長所と短所
 - 基本的なデータ構造の永続的な実装:スタック、キュー、デキュー、ハッシュテーブル、ツリーマップ
 - ライブラリ:clojure.lang。*、pcollections
 
 
文学
本
- ブライアンゲッツ他、 「Java並行性の実践」
 - Doug Lea、 「Javaでの並行プログラミング:設計原則とパターン」
 - Maurice Herlihy、Nir Shavit、 「マルチプロセッサプログラミングの技術」
 
記事
- マーティントンプソンなど、 「ディスラプター:同時スレッド間でデータを交換するための境界キューの高性能な代替品」
 - Ulrich Drepper、 「すべてのプログラマーがメモリについて知っておくべきこと」
 - ダグリー、 「コンパイラライター向けJSR-133クックブック」
 - ブライアンゲッツ、 「ダブルチェックロック:賢いが壊れている」
 - 「ダブルチェックロックが壊れています」宣言
 - Jeremy Manson、Brian Goetz、 「JSR 133(Java Memory Model)FAQ」
 - ダグリー、 「コンパイラライター向けJSR-133クックブック」
 - ダグ・リー、 「java.util.concurrent Synchronizer Framework」
 - ダグリー、 「Javaフォーク/参加フレームワーク」
 
ブログ
連絡先
Javaトレーニングをオンラインで行い( プログラミングコースはこちら) 、Java Coreコースの再設計の一環としてトレーニング資料の一部を公開しています 。 この記事では、視聴者の講義のビデオ録画をyoutubeチャンネルで見ることができます。おそらく、 チャンネルのビデオがより体系化されています 。
スカイプ:GolovachCourses
メール:GolovachCourses@gmail.com