技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

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

java:walkFileTreeメソッドの使い方

walkFileTreeメソッドとは、ディレクトリ構造を再帰的に走査するメソッドです。Java7で追加されたFilesクラスが提供するメソッドの一つであり、比較的新しいメソッドです。(このメソッドの提供により、ディレクトリ構造については自力でCompositeパターンを…

シーケンス図を書いてマルチスレッドプログラムを整理する

マルチスレッドプログラムを開発していると、どの処理がいつ動くのか把握し辛くなることがあります。そこでシーケンス図を書くと、ややこしいスレッド間の関連をわかりやすく整理することができます。 シーケンス図とは、UMLの一種であり、クラスやオブジェ…

リスコフの置換原則とは

リスコフの置換原則とはオブジェクト指向の設計の原則の一つであり、「基本クラスをサブクラスに入れ替えても問題なく動かなけらばならない」という原則です。もしサブクラスに入れ替えると正しく動かなくなるのであれば、クラスを利用する側はサブクラスを…

単一責任の原則とは

オブジェクト指向の設計ではいくつかの原則があります。その中でも有名な原則の一つが「単一責任の原則」です。 この原則は、その名の通り「一つのクラスに持たせる責任は一つにする」という原則です。この原則が何のために用いられるのかと言うと、複数の理…

C#:セマフォを用いた排他制御

C#

排他制御の仕組みとして先日Mutexを取り上げました(https://akira2kun.hatenablog.com/entry/2020/04/12/170559)。今回は、同じく排他制御で使われるセマフォについて取り上げます。 セマフォがMutexと異なる点は、複数のプロセス・スレッドが資源を取得す…

C言語にはないC++独自の文法の簡単な列挙

C++はC言語を拡張して開発された言語であり、C++ではオブジェクト指向をサポートする文法が追加されています。基本的にC言語で使用していた文法はC++でも使用できるので、学習という面で見るとC言語を扱える方であればC++で追加された文法を覚えればC++も扱…

C#:共有メモリで可変長データを繰り返し送受信する

C#

共有メモリは、同一メモリ上で実行されるプロセス間でデータをやりとりする場合に使用する仕組みです。通常、プロセスで確保しているメモリは他のプロセスから参照することができないのですが、プロセス間で予め共有メモリとして使用するメモリのアドレスを…