2020-02-01から1ヶ月間の記事一覧

MediatorとObserverの違い

復習したのでメモ。 Mediator mediatorは状態が変更された時にmediator自身に変更を通知するオブジェクトを返す。 実装のイメージ。コンパイルは通らない。 class mData{ Mediator mediator; change(){ mediator.notify(); } } class Mediator { mData mData…

深さ優先探索の探索順配列モデルの生成

お勉強がてら書いてみた。 こういう数値リストを [5, 20, 22, 35, 64, 71] 組み合わせごとの探索順のツリーにする。 言語はvar_dumpが綺麗なPHPで。

ValueObjectについてのメモ書き

ValueObjectとは? クラスプロパティにプリミティブ型ではなくオブジェクトとして定義する。 class User{ int volume; // プリミティブ型 Volume volume; // ValueObject } メリット整理 型安全、null安全、値安全を構築しやすい コンストラクタでフィルター…

浮動少数と丸め誤差

floatやdouble型をloopカウンタや終了条件にすると意図したループ回数にはならない時もあるので注意。 丸め誤差 限られたビット数で浮動小数点数を表現した時、実際の値と近似した値で誤差が出る。 float f1, f2; f1 = 0.1f; f2 = 0.100000001f; printf( " %…

A Tour of Go - Concurrency : 自分用リファレンスメモ

Goroutines Goroutinesは軽量なスレッド。goと記述するだけで別スレッドで処理が実装される。 go f(x, y, z) Channels channelを使用してgoroutine間でデータの送受信を行える。 channelの生成 ch := make(chan int) channelの送受信 ch <- v // v をチャネ…

Swift ドラッグ可能なView間を線でつなげる

最近、趣味でNeo4jを触ってて、Swift実装でソーシャルグラフのようなView表現を試してみた。 実装のイメージ ※ 何故かXcodeの動画キャプチャがエラー吐きまくりでカクカクになってしまった... まあ、こんなもんかな。strokeした線は消して再描画するみたい p…

A Tour of Go - Method and interfaces 自分用リファレンスメモ

Methods Goには、クラス( class )のしくみはないが、型にメソッド( method )を定義できる。 struct宣言したTyoeにメソッドを追加することでクラス定義と似た振る舞いを記述できる。 type Vertex struct { X, Y float64 } // Vertex型にメソッドを定義 func (…

B木の構造の整理

ノードページの構造 ページバッファに整列済みのデータを配置 { 40 } { 40, 63 } { 24, 40, 63 } { 24, 40, 58, 63 } ページの分割 バッファが溢れた時、ページの分割を行う。 { 24, (+ 31), 40, 58, 63 } ┏ {40} ┓ { 24, 31} {58, 63 } さらにデータを追加 …

2分木のノード削除

binary treeのノード削除 削除対象のノードの子が左右両方にある場合、削除後、親要素にどちらの要素をぶら下げれば良いか? 10 5 15 2 6 17 1 3 というツリーがあった場合、ノード5を削除した場合、どういうツリーになるか?という話し。 答え:子左要素の最…

AVL木の平衡原理

AVL木の平衡原理 AVL木とは どのノードから見ても左右の子ノードの深さの差が1以内のツリー構造を指す。以下はAVL木を保つ為の考え方。 1重回転 例えばこんなbinary treeがあった場合、ノード10から子孫ノードを辿った場合、子孫の高さが2階層以上の差がある…

僕は再帰が書けない

最近、かなーり古いアルゴリズム本でアルゴリズムの復習をしたりしている。 やっぱ再帰は苦手だな〜。という愚痴。 以下はC言語で、要素数4つのint配列、{0, 0, 0, 0}の要素の合計値が1以上4以下になる場合の配列の組み合わせを示したもの。 中々理解出来な…