CodeGym
キャンペーン
学習
コース
課題
アンケート & クイズ
ゲーム
ヘルプ
スケジュール
コミュニティ
ユーザー
フォーラム
チャット
記事
成功事例
アクティビティ
レビュー
サブスクリプション
ライトテーマ

レッスン

  • レビュー
  • 私たちについて
開始
学習開始
今すぐ学習を始める
  • 学習の進捗
  • コース
  • クエストマップ
  • レッスン
  • IO のパフォーマンス問題:ボトルネック

    JAVA 25 SELF
    レベル 41,レッスン 0
    この講義では、入出力における「ボトルネック」とは何か、その見つけ方と解消方法を説明します。ディスクやネットワークの処理が RAM に比べてなぜ大幅に遅いのか、よくあるアンチパターン( read() で 1 バイトずつ読む、同期ログなど)、バッファ( BufferedInputStream、 BufferedReader)、プロファイラ( VisualVM、 JProfiler)や System. currentTimeMillis () による時間計測がどう役に立つかを取り上げます。ファイル "bigfile.txt" の読み取りを使った実験を行い、バッファあり/なしの速度を比較し、SSD/HDD やネットワークの影響を確認し、典型的な誤りを列挙します。
    利用可能
  • NIO チャネルと ByteBuffer

    JAVA 25 SELF
    レベル 41,レッスン 1
    Java NIO のノンブロッキング入出力への実践的イントロ: チャネル Channel とバッファ ByteBuffer がストリーム InputStream/ OutputStream とどう違うのか、 FileChannel を使った読み書き、 position()/ truncate() によるポジショニング、バッファのパラメータ ( capacity, limit, position, mark) の扱い、 allocate() と allocateDirect() の選び方を解説します。ゼロコピー操作 transferTo()/ transferFrom() や、呼び忘れがちな flip()、不適切なバッファモードなどの典型的なミスも紹介します。
    利用可能
  • 大きなファイル: チャンク化パターン

    JAVA 25 SELF
    レベル 41,レッスン 2
    OutOfMemoryError を避けつつ数十GB級のファイルを効率よく処理する方法: チャンク(chunks)に分割し、 RandomAccessFile と FileChannel で位置指定読み取り、 ExecutorService/ ForkJoinPool で並列化。単純コピーには transferTo/ transferFrom によるゼロコピー(zero-copy)を使う。チャンクサイズの選定、行境界、結果の同期、よくあるミスも解説する。
    利用可能
  • 大きなファイルの扱い: chunking と memory mapping

    JAVA 25 SELF
    レベル 41,レッスン 3
    Java で巨大ファイルを安全かつ高速に処理する方法: ストリームとバッファを使って部分読み(chunking)を行い、性能向上のためにバッファサイズを調整し、超高速なランダムアクセスのために MappedByteBuffer と FileChannel を用いたメモリマッピングを使う。memory mapping の長所と短所、リソース管理と並行処理の推奨事項、そして典型的なミス(たとえば OutOfMemoryError、ファイルディスクリプタの閉じ忘れ、検索時のチャンクの重なり)も解説する。
    利用可能
  • アーカイブ/圧縮: java.util.zip

    JAVA 25 SELF
    レベル 41,レッスン 4
    Java におけるアーカイブと圧縮の実践講義: パッケージ java.util.zip、ストリーム ZipInputStream/ ZipOutputStream とランダムアクセス用クラス ZipFile に触れ、 Deflater を使って圧縮レベルを制御します( 0… 9、 DEFAULT_COMPRESSION)。単一ファイル向けの GZIPInputStream/ GZIPOutputStream、 Files.walk と PathMatcher( "glob:**/*.txt")によるフィルタリングを用いたディレクトリの圧縮/展開も扱います。セキュリティについては、パス正規化による Zip Slip 対策や zip bomb に対する容量制限の考え方を議論し、マスク対応のミニ CLI「zip/unzip」も作成します。
    利用可能
  • オブジェクトのシリアライズ入門:なぜ必要か

    JAVA 25 SELF
    レベル 42,レッスン 0
    Java でオブジェクトを「梱包」する目的と方法: ObjectOutputStream/ ObjectInputStream を使ってバイトストリームに変換し、逆方向に戻す。起動間で状態を保存し、ネットワーク経由で送信し、結果をキャッシュする。インターフェース Serializable の役割、キーワード transient の注意点、 "save.dat" のような文字列の扱いを取り上げ、安全性のリスクとバージョン互換性を議論する。実践:ミニゲームのセーブ、クライアント↔サーバーのメッセージ送受信、計算結果のキャッシュ。
    利用可能
  • Serializable インターフェイス:基本原則

    JAVA 25 SELF
    レベル 42,レッスン 1
    Java におけるシリアライズの基礎を解説します。マーカーインターフェイス java.io.Serializable、 implements Serializable でクラスをマークする方法、フィールドに関する要件( static、 transient)、 ObjectOutputStream/ ObjectInputStream を使ったオブジェクトの書き込み・読み出しの手順例、 writeObject/ readObject 呼び出し時に「内部」で何が起きているか、そして典型的な落とし穴(シリアライズ不可のフィールド、内部クラス、 static フィールドの挙動、 serialVersionUID によるクラスのバージョン管理)も扱います。
    利用可能
  • 標準的なシリアライズ形式:バイナリとテキスト

    JAVA 25 SELF
    レベル 42,レッスン 2
    この講義では、Java のバイナリシリアライズ( ObjectOutputStream と ObjectInputStream)とテキスト形式( JSON、 XML)を比較し、動作原理、速度とコンパクトさ、バージョン互換性、セキュリティを解説します。さらに Jackson( Maven 依存関係を含む)を使った実践を示し、どれを選ぶべきかの指針と、よくあるミスについてのアドバイスを提供します。
    利用可能
  • ObjectOutputStream, ObjectInputStream: ストリーム処理

    JAVA 25 SELF
    レベル 42,レッスン 3
    この講義では、Java でペアのストリーム ObjectOutputStream と ObjectInputStream を使ってオブジェクトをシリアライズ/デシリアライズする方法を解説します。マーカーインターフェース java.io.Serializable とは何か、 writeObject() と readObject() がどのように動作するのか、なぜ static と transient フィールドはストリームに含まれないのか、どのような例外が発生し得るか( NotSerializableException、 InvalidClassException)、そして serialVersionUID が何に影響するのかを扱います。実践として、1つのオブジェクトとオブジェクトのリストをファイルにシリアライズし、典型的なエラーも解説します。
    利用可能
  • コレクションのシリアライズ: List, Map, Set

    JAVA 25 SELF
    レベル 42,レッスン 4
    Java におけるコレクションのシリアライズ実践ガイド: List、 Map、 Set を ObjectOutputStream/ ObjectInputStream を通じて保存・復元する方法; なぜ多くのコレクションがすでに Serializable を実装しているのか; 要素に対する要件; HashSet/ HashMap における順序の挙動; 入れ子や空のコレクションの扱い; 落とし穴 ( InvalidClassException、 serialVersionUID、 transient/ static)。最後に「仮想ライブラリ」の完全なサンプルで締めくくります。
    利用可能
  • シリアライズ処理の制御: writeObject, readObject

    JAVA 25 SELF
    レベル 43,レッスン 0
    標準のシリアライズをフックして処理を制御する方法: 厳密なシグネチャを持つ private メソッド writeObject/ readObject( private void writeObject( ObjectOutputStream out) throws IOException)を使い、 defaultWriteObject()/ defaultReadObject() を呼び出し、 transient でフィールドを除外し、チェックサムとログを追加し、 serialVersionUID とバージョン互換性も忘れない。よくあるミス、 ObjectOutputStream/ ObjectInputStream の扱い、実践的な例を解説する。
    利用可能
  • transient フィールド、serialVersionUID

    JAVA 25 SELF
    レベル 43,レッスン 1
    Java におけるシリアライズ実践ガイド: フィールドをストリームから除外するためにいつ・どのように transient を使うか、デシリアライズ時に何が起きるか(デフォルト値)、メソッド readObject で状態をどう復元するか。 serialVersionUID とは何か、その宣言方法( private static final long serialVersionUID = 1L)、いつ変更すべきか、そして明示的に指定するのがなぜ良いか。実用的なサンプル、リスキーなシナリオ、典型的なミスを示します。
    利用可能
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 30
学ぶ
  • 登録
  • Javaコース
  • 課題のサポート
  • 料金
  • ゲームプロジェクト
  • Java構文
コミュニティ
  • ユーザー
  • 記事
  • フォーラム
  • チャット
  • 成功事例
  • アクティビティ
  • アフィリエイトプログラム
会社情報
  • 私たちについて
  • 連絡先
  • レビュー
  • プレスルーム
  • CodeGym for EDU
  • よくある質問
  • サポート
CodeGymCodeGym は、ゼロからJavaプログラミングを学ぶためのオンラインコースです。このコースは初心者がJavaを習得するのに最適です。即時検証付きの1200以上の課題と、Java基礎理論の必要な範囲を含みます。学習の成功を支援するために、クイズ、コーディングプロジェクト、効率的な学習に関するコンテンツ、Java開発者のキャリアに関する機能など、一連のモチベーション機能を導入しています。
フォローする
インターフェース言語
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands
日本語
한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym
MastercardVisa
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym