Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンピュータサイエンスにおけるキューとスタックの解説
Search
Satoshi Kaneyasu
January 28, 2024
Programming
0
760
コンピュータサイエンスにおけるキューとスタックの解説
Satoshi Kaneyasu
January 28, 2024
Tweet
Share
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
今更聞けないセキュリティ用語の基礎知識 2025新春
satoshi256kbyte
0
12
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
76
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
280
おもにクラウドの話してます#4 OPスライド
satoshi256kbyte
0
47
AWS認定資格を勉強した先に何があったか
satoshi256kbyte
2
240
Amazon Aurora Serverless v2のアプデと、Amazon Aurora PostgreSQL Limitless DatabaseのGAについて
satoshi256kbyte
0
140
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
460
Amazon Neptuneで始めてみるグラフDB-OpenSearchによるグラフの全文検索-
satoshi256kbyte
4
490
【5分LT】フロントエンドとバックエンドを繋ぐ認証サービス Amazon Cognito
satoshi256kbyte
2
110
Other Decks in Programming
See All in Programming
Fibonacci Function Gallery - Part 1
philipschwarz
PRO
0
270
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
890
103 Early Hints
sugi_0000
1
330
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
180
情報漏洩させないための設計
kubotak
5
1.2k
月刊 競技プログラミングをお仕事に役立てるには
terryu16
1
1.1k
良いユニットテストを書こう
mototakatsu
11
3.5k
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
400
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
200
命名をリントする
chiroruxx
1
570
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
360
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
270
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
850
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Designing for humans not robots
tammielis
250
25k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
RailsConf 2023
tenderlove
29
960
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
230
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Transcript
コンピュータサイエンスにおける キューとスタックの解説 2024.01.31 SATOSHI KANEYASU
⾃⼰紹介 ⽒名︓兼安 聡 職種︓クラウドエンジニア 最近のお仕事︓DevOpsの推進 趣味︓サックス、筋トレ、CS ゲーム 資格︓ X(Twitter)︓@satoshi256kbyte 1/9
追加
はじめに • また情報処理技術者試験の季節が近づいてきてますね。 • 個⼈の感想ですが、勉強は意味を知らないと頭に⼊りません。 • 昔はピンとこなかった、キューをここ数年使いまくってるので、 その解説をします。 • ついでにスタックも解説します。
キュー(Queue)とスタック(Stack) • どちらもデータの格納・取り出し⽅法の⽤語 • それぞれ、データの格納・取り出しのルールが決まっている • ルールが決まっているのがポイント • ルールが決まっている=保証されている
キュー(Queue) • 先⼊れ先出し⽅と呼ばれるデータ格納⽅式 • First-In-First-Out、略してFIFO • 現実世界で⾔うと、病院の受付番号など • 病院に⾏く •
受付して、受付番号をもらう • 受付番号順に診察
キューは受付番号のようなもの
キューがなかったどうなるか︖ • 同時に対処できる数を超えて訪問者を受けいれてしまう • 訪問者がいつまで待てばいいのかわからない • ↑による焦りから更なる混雑を招く • 多少処理時間が伸びたとしても、 負荷を平準化し安定化させることが必要なシチュエーションがある
スタック(Stack) • 後⼊れ先出し⽅と呼ばれるデータ格納⽅式 • Last-In-First-Out、略してLIFO • 現実世界で例えるのは難しい • ブラウザの戻る •
エディタのUndo機能 • プログラムでエラーが発⽣した時のスタックトレース
ブラウザの戻るの例 番号 訪問履歴 4 https://example.com/page2 3 https://example.com/page1 2 https://example.com/calendar 1
https://example.com 現在のページ︓https://example.com/page3
キューの使⽤例 – キュー未使⽤ DOWNLOAD Server • 画⾯の内容のPDFでダウンロードする機能を考える
キューの使⽤例 – DLする⼈が増えたら DOWNLOAD Server • 受け付けたら⼀気にPDFをDLさせる⽅式だと混雑しやすい • 受け付ける •
PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する ❌ ❌ 重たい処理が、 同時発⽣する混雑する
キューの使⽤例 – 混雑は混雑を⽣む DOWNLOAD Server • 混雑が発⽣すると何度も試す⼈が増えて余計混雑を⽣む • 受け付ける •
PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する • 受け付ける • PDFを作成する ❌ ❌ ❌ ❌ ❌ ❌ ❌
キューの使⽤例 – キューを活⽤する Server • キューを活⽤してDOWNLOADの受付とPDF出⼒を分ける • 受け付ける • PDFを作成する
• 受け付ける • 受け付ける • 受け付ける キュー DOWNLOAD4 DOWNLOAD2 DOWNLOAD2 DOWNLOAD1 4 DOWNLOAD
キューの使⽤例 – システムを分ける Server • キューを活⽤してDOWNLOADの受付とPDF出⼒を分ける • 受け付ける • PDFを作成する
• 受け付ける • 受け付ける • 受け付ける キュー DOWNLOAD4 DOWNLOAD2 DOWNLOAD2 DOWNLOAD1 4 DOWNLOAD
まとめ • キューは先⼊れ先出し、スタックは後⼊れ先出し • 多数の⼈が使うシステムだと、キューはかなり有⽤ • クラウドとも相性が良い • クラウド絡めるとキューはめちゃめちゃ使います。 •
何に使うかわからない技術があれば教えてください できる限り答えられるようにします