
외워서 끝내는 네트워크 핵심이론 - 기초
널널한 개발자
TCP/IP에서 HTTP까지! 네트워크에 대한 기본 이론이 부족한 분들이 '외워서'라도 전공 이론을 이해하고자 희망하는 분들을 위해 준비한 강의입니다. 할 수 있습니다!
Beginner
네트워크, 프로토콜
初心者脱出の秘訣公開!Javaマルチスレッドプログラミングと同期化技法について徹底解説します!
Javaベースのマルチスレッドプログラミング技法
Javaメモリモデルと同期メカニズム、そしてJVM構造
高性能ロックフリーキューを実装する方法
マルチスレッドプログラミングと同期技術について、専攻者レベルの高い理解を得ることができます。
開発者の競争力は唯一のスキルです。この講義で確実に差別化された競争力を確保しましょう!
1つのプログラムで複数のスレッドを実行し、同時に動作する方法と同期技術について学びます。 synchronized 予約語を使った簡単な方法から JVM 内部構造による特性まで深くしっかり学びます。
Javaマルチスレッド環境では、メモリ領域は、WorkingメモリとMainメモリ領域に分けて管理されます。このプロセスで同期が失敗した場合に発生する可能性のある問題は何であり、どの原則に対応できるかを専攻者レベルで理解できます。
CPUレベルで提供されるCompare And Swap(CAS)コマンドを利用して、スイッチングオーバーヘッドのない高性能同期技術を学びます。さらに、Lock-free Queue構造を直接実装して制御できます。
ADTを超えてデータ型への依存性を極端に下げたジェネリックについて学びます。このジェネリックを利用して再利用性が最大化されたクラスを作成でき、コレクションフレームワークにもきちんと活用できます。
※ここでちょっと! JVMとは?
Java Virtual Machine(JVM)は、Javaプログラムをコンピュータで実行するのに役立つ仮想マシンです。
コードだけがうんざりしている
頭の中に残るものがないと感じたプログラミング入門者
バックエンド開発者として
就職したい就職準備生
たくさん書く言語だから
学んだが本質がよく分からない
1~2年目ジュニア開発者
ひどく始まるJavaシリーズは合計4つのPartから成ります。
別途1,2講義は、Springバックエンド開発者として成長するために一緒に聞くと良い講義です🙂
Part 1: 基本的な文法、手続き型プログラミング
パート2:オブジェクト指向プログラミング+データ構造
Part 3: システム活用プログラムの作成
パート4:Spring Frameworkに進むための準備
別途1:Webインフラストラクチャ技術の理解とDB
別途 2: SQL 拡張
パート3には、マルチスレッドプログラミングと同期技術、CAS(Compare And Swap、Set)、ロックフリー構造、ファイル入出力、ソケットプログラミングなどの高度な開発者になるために知っておくべきことが多数含まれています。扱う内容が多すぎるため、上下に区分されており、上編ではJava Memory ModelとJVMに対する理解を基にマルチスレッドベースのプログラミング手法を深く扱っています。
スレッド同期に関するさまざまな文法がJVM内部でどのような原理で動作するかを具体的に学ぶことができ、競争条件下で発生する可能性のある様々な異常現象や論理エラーに対応できる確かな基盤を整えることができます。
マルチスレッド環境に関して、Java Virtual Machine(JVM)とJava Memory Model(JMM)がどのように機能するかを理解することができます。これを基に、同期失敗による問題に直接対応できる実力を備えることができます。
synchronized予約語が持っている基本的な動作原理を JVM とともに知ることができ、Monitor lock について単純な用語ではなく原理の観点から理解できます。
高性能入/出力システムを実装するために必ず知る必要があるCAS(Compare And Swap、Compare And Set)を利用してSpin lockを実装する方法とLock-freeベースのQueueを自ら実装して活用できます。これは中・高級プログラミング技法でCS専攻者すら容易に近づけないものです。
ジェネリック文法とマルチスレッド環境でコレクションフレームワークを適切に使用する方法を学びます。
Threadクラスを使用することでマルチスレッド環境を作成する方法とともに、なぜマルチスレッド環境が必要なのかを説明します。
GUIベースのアプリケーションの一般的な構造であるEvent-loop構造にマルチスレッドを適用する具体的な例として、関連理論を説明します。
また、競争条件を誘発するデータ構造が存在することになる理由についても学びます。
synchronizedを含むロックベースの同期技術を使用すると、JVM内で何が起こるかを具体的に知ることができます。
OSレベルで提供するカーネルオブジェクトが使用されている場合とそうでない場合などを区別したときにどのようなパフォーマンス向上が期待できるのかがわかります。
JMM(Java Memory Model)について理解し、どのような動作機能があるかを学びます。
各スレッドが独立して使用するWorking Memory領域とJVM全体に適用されるMain Memory間の同期の問題が発生すると、どのような現象が発生するかがわかります。
メモリ領域間の同期が起こる具体的なタイミングと理由を知り、適切なコードを書くことができます。
すべての授業内容はPPT資料に基づいていますが、まるでホワイトボードに板書をするかのように説明が続きます。
これにより、受講者は完成した1つの結果だけを見るのではなく、構造が誕生した背景と理由全体の流れを総合的に理解することができます。
本格的なJavaプログラミングを学ぶ前に、この授業が就職を目指していることを明確に伝えます。そして
講師の長年の経験を踏まえ、明確な学習ロードマップと所要時間を提示します。
間違った選択で時間を無駄にすることがないように、最初から適切な学習配分とスケジュールを確立するように誘導します。
マルチスレッド環境で考慮する必要がある同期の問題とスイッチングオーバーヘッドの深さについて説明します。
同じ環境でさまざまな同期技術を適用したときのパフォーマンスの違いが具体的な数値で表示されます。
高性能ロックフリー構造を適用しても、むしろ効率が急減する状況を直接体験することができます。
高性能システムを構築するために必要なCompare And Swap、SET(CAS)コマンドを使用して、スイッチングなしでスレッドを同期する方法を学びます。
Lock-free Queueを直接実装し、さまざまな状況変化を適用して、どのようなパフォーマンス変化が発生するかを実験を通じて知ることができます。
オペレーティングシステムとバージョン(OS): Windows 11
使用ツール: IntelliJ IDEA 2024.2.3 (Community Edition)
PC仕様:Windows 11 OSとIntelliJが無理なく動作できるレベル
授業に使用されたPPT資料(PDFファイルで提供)
完全な例と必須の練習問題正解(Zip圧縮ファイルとして提供)
「基礎タンタン」はじめて始まるJava Part 1~2
(※基本的な文法やOOPについてすべて知っていると仮定する)
学習対象は
誰でしょう?
就職市場で差別化された競争力を得たい初級Java開発者
JVMの内部構造を基に深くJavaを学びたい方
Javaメモリモデルとマルチスレッド環境について深い理解を得たい方
中級~上級Javaプログラミングのテクニックを学びたい方
前提知識、
必要でしょうか?
厳しく始めるJava Part 2レベルのJVM内部構造の理解
Javaプログラミング
37,008
受講生
2,151
受講レビュー
1,098
回答
4.9
講座評価
24
講座
全体
51件 ∙ (10時間 11分)
講座資料(こうぎしりょう):
6. プロセスとスレッド
21:47
7. コンピューター構造に関する常識
11:52
8. スレッド生成および開始
11:44
9. スレッド属性
16:36
10. マルチスレッド構造が必要な理由
15:20
11. デーモンスレッド
05:00
12. sleep() メソッドと偶然
19:28
13. フラグ変数を使った終了時点の同期
12:35
14. スレッド割り込み
10:09
15. 適切な終了時点の同期
08:00
38. ジェネリック基本理論と必要性
14:26
39. ジェネリックで問題解決
04:18
40. 型パラメーターの命名規則
02:55
41. ジェネリック メソッド
04:57
42. コレクションフレームワーク紹介
07:52
43. 線形構造の紹介
04:50
44. リストコレクションとスレッド
05:37
46. Set インターフェース紹介
07:02
48. オブジェクトの重複判定
08:49
49. マップ活用
04:18
50. 線形非線形混合運用
04:56
51. 授業を終えて…
06:32
全体
23件
5.0
23件の受講レビュー
¥9,046
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!