Template MethodパターンとStarategyパターンについて
2024年4月17日概要 GoFの振る舞いに関するパターンであるTemplate MethodパターンとStrategyパターンについてまとめる。 Template Methodパターンとは 大枠の処理を上位のクラスで決めておき、具体的な処理の流れを下位のクラスに任せる設計パターン。 package main type Game interface { Init() Start() End(...
概要 GoFの振る舞いに関するパターンであるTemplate MethodパターンとStrategyパターンについてまとめる。 Template Methodパターンとは 大枠の処理を上位のクラスで決めておき、具体的な処理の流れを下位のクラスに任せる設計パターン。 package main type Game interface { Init() Start() End(...
概要 docker-composeで構成されている個人開発のアプリケーションをKubernetes(k3s)へ移行するという試みの際に、multipassを使ってみたのでそれについてメモを残す。 結局移行はしなかったが... k3sはCNCFに認証されたKubernetesディストリビューション。IoTやエッジコンピューティング用途向け。メモリを節約したい、Kubernetesほどのスケールは不要...
概要 gRPCとProtocol Buffersについて改めておさらいしておきたかった。 リンク gRPC grpc.io 公式ドキュメント zenn.dev - 作ってわかる! はじめてのgRPC まだ読んだことなかったので読んでみたのだが大変勉強になった。日本語情報はまずこれ読んでみると良いかも。 www.wantedly.com - gRPC Internal - gRPC の設計...
概要 グラフを表現するためのデータ構造である隣接リストと隣接リストについてまとめる。 隣接リストや隣接行列は有向グラフでも無向グラフでも利用できる。 隣接リスト(Adjacency List) 各頂点(ノード)ごとに隣接する頂点をリストとして持つデータ構造。 // 無向グラフの例 A---B | / | | / | C---D // 隣接リストで表現すると、次のような形になる A: [B...
概要 二分探索木とは どのノードにおいても、左の子ノード<親ノード<右の子ノードとなるような木。 ex. 5 / \ 3 8 / \ / \ 1 4 6 9 探索パターン 深さ優先探索(DFS: Depth first search) それぞれのノード探索順はwww.momoyama-usagi.com - うさぎでもわかる2分探索木 後編 2分探索木における4つの...
Goでスタックとキューをそれぞれ実装してみた。 スライスを使ったパターンと連結リストを使ったパターンをそれぞれ実装している。 個人的にはスライスを使ったパターンの方が実装は楽かなと思う。 スタックのpush、pop、キューのenqueue、dequeueの時間計算量はそれぞれO(1)で実装できるが、一部サボってO(N)になってしまっているものがある。 スタック ソースコード:stack 連結リスト...
連結リストの走査で役立つランナーテクニックについてまとめる。 世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法で紹介されていて初めて知った。 ランナーテクニックとは 連結リストの先頭から走査していくポインタと、そのポインタより先から走査していくポインタの2種類を用意して、同時に走査していく方法。 これが何に役立つかというと、例えば次のような例題を解くのに役立つ。 例題 単...
再帰処理はプログラマーの嗜み!エレガントにかけて当たり前!・・・と自信を持って言いたいところだが、自分は正直なところ苦手である。 日頃再帰処理を書く機会といえばコーディングクイズくらいで実際のところあまり書く機会がない.. 再帰処理はケースによってはメモ化や末尾最適化までエレガントにやらないと計算量が大きくなったり、メモリを食うだけのコードになってしまうが、アルゴリズムによってはシンプルなコードに...