SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
クラスローダーについて

   わかる! JVM
 あらかわ (@ashigeru)
本日の内容
 クラスロードの仕組み
 クラスローダーの名前空間
 リローディングの技術
 その他の話題
  アンロードの条件
  パッケージプライベート
  シリアライゼーション




          2010/08/06 #jvmjvm   2
2.17.2 Loading
5 Loading, Linking, and Initializing
5.3.2 Loading Using a User-defined Class Loader

クラスロードの仕組み


                      2010/08/06 #jvmjvm          3
クラスローダーの作り方
  1.   java.lang.ClassLoaderのサブクラスを定義
  2.   findClass()をオーバーライド
  3.   クラスファイルをdefineClass()に食わせる
  4.   結果のjava.lang.Classを返す

public class MyClassLoader extends ClassLoader {
  @Override
  protected Class<?> findClass(String name) throws … {
      byte[] content = …;
      Class<?> aClass = defineClass(name, content, 0, content.length);
      return aClass;
  }
  …

                              2010/08/06 #jvmjvm                    4
ロード処理の委譲
 ロード中に他のクラスローダーを利用できる
  loadClass()は最初に委譲先からクラスを検索
  委譲先になければfindClass()を起動




            2010/08/06 #jvmjvm   5
“推奨”の委譲スタイル
 すでにロード済みのクラスがあればそれを返す
 委譲先(親クラスローダー)でロード
 委譲先でロードできなければ自身でロード




         2010/08/06 #jvmjvm   6
“推奨”委譲スタイルの問題
 委譲先(親)とライブラリが衝突する
  親のライブラリの内容が優先される
  パッケージ名変更で乗り切るバッドノウハウ




          2010/08/06 #jvmjvm   7
現実の委譲スタイル
 某アプリケーションサーバー (PARENT_LAST)
   委譲先(親)を最後に検索する
    自身のクラスローダーをまず最初に検索
    親のライブラリに影響を受けにくい
 OSGi
   パッケージごとにクラスの公開/非公開を選べる
    委譲しても非公開クラスはロードできない
    「親の親」はデフォルトで非公開扱い
   複数の委譲先を持てる
    必要なライブラリだけを選べる

            2010/08/06 #jvmjvm   8
ここまでのまとめ
 java.lang.ClassLoaderを継承してカスタムクラ
  スローダーを作成
  findClass()をオーバーライドする
  defineClass()にクラスファイルバイナリを渡す
 他のクラスローダーにロードを委譲できる
  通常は委譲先から順にクラスを探索




              2010/08/06 #jvmjvm   9
5.3 Creation and Loading (defining loaders)
5.4.3.1 Class and Interface Resolution

クラスローダーの空間


                      2010/08/06 #jvmjvm      10
同じ名前のクラス
 同じ名前のクラスは単一JVM上に存在できる?
  WARなどが典型的




           2010/08/06 #jvmjvm   11
定義ローダー
 同じ名前でも定義ローダーが違えば別クラス
  defineClass()を実行したローダーのこと
  Class.getClassLoader()はこれを返す




              2010/08/06 #jvmjvm   12
参照先のロード
 自身の定義ローダーで参照先をロード
  下記のような依存関係は解決できない




          2010/08/06 #jvmjvm   13
PARENT_LASTの挙動
 子が定義ローダーになりライブラリが共存可能
  子になければ親のライブラリを利用




          2010/08/06 #jvmjvm   14
ドッペルゲンガー (1)
 PARENT_LASTでcommons-loggingを利用
  commons-loggingは親子ともに所持
  子のLogFactoryが優先される




              2010/08/06 #jvmjvm   15
ドッペルゲンガー (2)
 commons-loggingの実装を探しにいく
  子には特別の実装が無いため次に親を探す




             2010/08/06 #jvmjvm   16
ドッペルゲンガー (3)
 LogFactoryの実装にLog4jFactoryを利用
   Log4jFactoryの定義ローダーはCL1




               2010/08/06 #jvmjvm   17
ドッペルゲンガー (4)
 Log4jFactoryは親のLogFactoryを継承
   定義ローダーの関係で親のものを利用する
   LogFactoryが二つ出現




               2010/08/06 #jvmjvm   18
ドッペルゲンガー (5)
 Log4jFactoryをLogFactory(CL2)に変換失敗
   2つのLogFactoryは完全に別物
   推奨の移譲スタイルはそれなりに意味がある




               2010/08/06 #jvmjvm     19
ここまでのまとめ
 同じクラスでも定義ローダーが違えば別物
  ドッペルゲンガーが出現することも
 参照先のクラスは定義ローダーを使う
  PARENT_LASTなどと組み合わせると混乱する




           2010/08/06 #jvmjvm   20
クラスローダーを利用した擬似的なクラスリローディング

リローディングの技術


            2010/08/06 #jvmjvm   21
リローディングの技術
 JVMを立てたままクラスをリロードして即座に
  変更を反映
  JUnit 3系 – GUIについてたアレ
  Seasar 2 – Hot Deploy
  他にもいろいろあると思う




              2010/08/06 #jvmjvm   22
リローディングの仕組み (1)
 リローディング用のクラスローダーを子に作成
  親には利用したいクラスローダーを指定




          2010/08/06 #jvmjvm   23
リローディングの仕組み (2)
 親からクラスファイルのバイナリを拝借
  parent.getResourceAsStream() など




                2010/08/06 #jvmjvm   24
リローディングの仕組み (3)
 リローディング用のクラスローダーで定義
  親を探しに行かない
  普通はパッケージを限定する




          2010/08/06 #jvmjvm   25
リローディングの仕組み (4)
 リクエストごとにクラスローダーを作り直す
  リクエストごとにクラスをリロード
  クラスの更新を反映させられる




          2010/08/06 #jvmjvm   26
リローディングとセッション
 セッション情報でドッペルゲンガー




          2010/08/06 #jvmjvm   27
ここまでのまとめ
 定義ローダーを毎回捨ててリローディング
  強制的に自分が定義ローダーになるようにする
 モデルの引継ぎが意外と大変
  自作するとたいていハマる




          2010/08/06 #jvmjvm   28
2.17.8 Unloading of Classes and Interfaces
5.3 Creation and Loading (runtime packages)
(Object Serialization Specification)

その他の話題


                     2010/08/06 #jvmjvm       29
ネタ
 アンロードの条件
 パッケージプライベート
 シリアライゼーション




          2010/08/06 #jvmjvm   30
アンロードの条件 (1)
 このプログラムはどうなる?
  C0, C1, C2, …は全てロード可能とする



ClassLoader cl = new InfiniteClassLoader();
for (long i = 0; i < Long.MAX_VALUE; i++) {
   cl.loadClass("C" + i);
}




                    2010/08/06 #jvmjvm        31
アンロードの条件 (2)
 クラスローダーがGCで回収可能になるまで、ク
  ラスは一つもアンロードされない
  先ほどの例は80,000~くらいでメモリ枯渇した

 インスタンスやjava.lang.Classを保持している
  とクラスローダーがGC回収可能にならない
  一つでもリークしたら全てのクラスがリーク
  共有空間でキャッシュしてたりすると大変
  ライフサイクルの管理が重要になる


             2010/08/06 #jvmjvm   32
アンロードの条件 (3)
 クラスをアンロードさせたい場合には定期的に
  クラスローダーを捨てる
  キャッシュするならライフサイクルに注意
  特に共有空間に漏れないように
  動的クラス生成を行うフレームワークは要注意
  アスペクトウィービング
  スクリプト言語のJITコンパイラ
 ただし、アンロードは「最適化」という扱い
  メモリ効率の向上
  アンロード自体に対応していない可能性も

           2010/08/06 #jvmjvm   33
アンロードの条件 (4)
 2,000,000クラスまで確認 (飽きた)
   クラスローダーを毎回捨てている




ClassLoader cl = new InfiniteClassLoader();
for (long i = 0; i < Long.MAX_VALUE; i++) {
   ClassLoader cl = new InfiniteClassLoader();
   cl.loadClass("C" + i);
}


                    2010/08/06 #jvmjvm           34
パッケージプライベート (1)
 パッケージプライベートのアクセス制御は?
     package a;
     public class Hoge {
       /*package*/ int foo() {
           return 100;
       }
     }

     package a;
     public class HogeTest {
       @Test
       public void about_package() {
           Hoge hoge = new Hoge();
           assertThat(hoge.foo(), is(100));
       }
     }

                  2010/08/06 #jvmjvm          35
パッケージプライベート (2)
 同じパッケージで別のクラスローダー
  OSGi環境でのテストでよくやる




           2010/08/06 #jvmjvm   36
実行時パッケージ
 実行時パッケージごとにプライベート
  クラスの定義ローダーごとに別パッケージ扱い
  先ほどの例は “IllegalAccessError”




            2010/08/06 #jvmjvm   37
シリアライゼーション
 ObjectInputStreamが使うクラスローダーは?




             2010/08/06 #jvmjvm   38
ObjectInputStream (1)
 一番近いユーザー定義クラスローダーを利用
  コールスタック上のクラスの定義ローダー
  この例ではBarのCL1を利用してデシリアライズ




           2010/08/06 #jvmjvm   39
ObjectInputStream (2)
 親ローダーにシリアライゼーションフレームワ
  ークを置いても使いにくい
  フレームワーククラスの定義ローダーを常に利用
  ObjectInputStreamにはクラスローダーを指定
   できない
 以下のメソッドを上書きすれば対応は可能
  resolveClass
  resolveProxy




                  2010/08/06 #jvmjvm   40
ObjectInputStream (3)
 以下の組み合わせは怪しい
  カスタムクラスローダー
  オブジェクト永続化 (XML, JSON等も含む)

 OSGi + Object DBは個人的に鬼門
  どのクラスローダーでロードすれば?
  クラスローダーをまたいでネストしたモデルは?
  あまりいい思い出がない



              2010/08/06 #jvmjvm   41
参考文献
 Java仮想マシン仕様 第2版
    ISBN: 4-89471-356-X
 Java言語仕様 第3版
    ISBN: 4-89471-715-8
 JSR 202: Java Class File Specification Update
    http://jcp.org/en/jsr/summary?id=202
 “オブジェクト直列化形式”
    http://java.sun.com/javase/ja/6/docs/ja/techno
     tes/guides/serialization/



                      2010/08/06 #jvmjvm          42

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web ServiceアプリケーションAngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
Metaspace
MetaspaceMetaspace
Metaspace
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Consistent hash
Consistent hashConsistent hash
Consistent hash
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 

Andere mochten auch

GCについて
GCについてGCについて
GCについて
cactusman
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
chonaso
 

Andere mochten auch (17)

java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajo
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
GCについて
GCについてGCについて
GCについて
 
GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門
 
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
 
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
 
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
 
JVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweepJVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweep
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
 
新版 OutOfMemoryErrorを知る
新版 OutOfMemoryErrorを知る新版 OutOfMemoryErrorを知る
新版 OutOfMemoryErrorを知る
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 

Ähnlich wie クラスローダーについて

Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義
JPCERT Coordination Center
 
Layout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用についてLayout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用について
kimukou_26 Kimukou
 
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分HadoopClojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Toshiaki Maki
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
Nobuhiro Sue
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
 
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
 

Ähnlich wie クラスローダーについて (20)

Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義
 
Layout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用についてLayout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用について
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分HadoopClojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loading
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
Java 7
Java 7Java 7
Java 7
 
Lombok java
Lombok javaLombok java
Lombok java
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
Spock's world
Spock's worldSpock's world
Spock's world
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
 
gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門
 
Mavenへのはじめの一歩
Mavenへのはじめの一歩Mavenへのはじめの一歩
Mavenへのはじめの一歩
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Next
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
 
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 

Kürzlich hochgeladen

Kürzlich hochgeladen (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

クラスローダーについて