Java ストリーム
ストリームとは
Javaでは、ファイルとデータのやり取りをする場合(データの入出力)、ストリームという考え方を使って行う。
ストリームとは、ファイルの読み書きや書き出しにおけるデータの流れのこと。
データがファイルとプログラムの間を流れていくイメージ。
処理の流れ
データを流すためのストリーム(川)を用意
ファイルからプログラムorプログラムからファイルへデータを流す
ストリームを閉じる
この処理をオブジェクトが仲介役となってデータのやり取りを助けている。
ストリームの種類
入力ストリーム:ファイルやネットワークからデータを受け取る
出力ストリーム:ファイルやネットワークにデータを送り出す
バイトストリーム:バイト単位(バイナリ)でデータを扱う
InputStream/OutputStreamクラス(スーパークラス)
ex) 画像データ文字ストリーム:文字単位でデータを扱う
Reader/Writeクラス(スーパークラス)
ex)テキスト
バッファ
データを一時的に記憶する場所。 これを使うことで、ファイルにいちいちアクセスしなくても、一気にデータを読み込んで溜め込むことができる
S3・CloudFront
S3とは
AWSの中核にあるストレージサービス。
ストレージとは
訳すと貯蔵、保管。
データを保管・保存する場所のこと。
ストレージサービスとは
インターネット上で、ファイル保管用のスペースにデータを保存することができるサービス。
インターネット上にデータを保存できる場所があるってことですかね?
CloudFront
AWSが提供する高速・高パフォーマンスなコンテンツ配信サービス。
CloudFrontの仕組み
オリジンサーバ:配信するオリジナルのファイルを置いておくサーバ。
エッジサーバ:ユーザーへの配信を行うサーバ。
ユーザーをCloudFrontドメインへアクセスさせて、CloudFrontのエッジサーバを経由した配信を行えるようになる。
ユーザーからリクエストを受けたエッジサーバーは、要求されたファイルがキャッシュされているか確認する。
キャッシュされてない
→オリジンサーバからファイルをとって、そのファイルをユーザーに配信する。
ファイルをキャッシュする。
キャッシュされている
→オリジンサーバには見に行かず、エッジサーバでキャッシュされたファイルを配信する。
Apache・nginx
Apache
webサーバーのソフト。
コンピュータにApacheを入れると、そのコンピュータがwebサーバーをしての仕事ができるようになる。
webサーバー
webサーバーとは、ブラウザからページを調べた時に、そのページの情報を返してくれるサーバーのことを指す。
ただ、webサーバーは、本来はただのコンピュータのため、私たちがいつも使っているパソコンと変わらない。
普通のコンピュータにApacheやnginxなどのwebサーバーソフトを入れることによって、webサーバとなる。
nginx
エンジンエックス。
webサーバの一つ。
Apacheは大量の処理ができないため、大量のアクセスを処理できるようなwebサーバが欲しくて作られた。
シンプルな作りになっているため、自分で処理せずに他に割り振ることで、メモリ消費が比較的少ない。