DB

検索と挿入/削除のコストで考えるB+木とLSM木の違い

MySQLやPostgreSQLで使用しているB+木と、SpannerやTiDBで使用されているLSM木の違いについて、検索と挿入/削除の何が違うのかをコストの観点で解説をしていきます。検索と挿入/削除はトレードオフの関係B+木とLSM木な...
Go言語

Goで学ぶファイルディスクリプタ

今回はファイルディスクリプタの解説をしていきます。こちらを読むことで、プログラムからファイルを操作がどのようにされているか理解することができます。ファイルディスクリプタとは?ファイルディスクリプタとはプログラムからファイルを操作する際に、操...
Go言語

Goのメモリ管理:アロケータ、ガベージコレクション

開発をしていてあまりに気にしないが重要なアロケータや、ガベージコレクションについて解説をしていきます。アロケータGoのアロケータはオブジェクトを操作するのに必要なメモリブロックを動的に割り当てられ、ロックや断片化を回避してOSヘの遅いシステ...
Go言語

なぜGoは並行処理に優れているか?

Goがなぜ並行処理に長けているのか、Gorutineのどのような部分が良いのかについて解説をしていきます。スタック、ヒープGoroutineの良さを知るためにはまずスタック、ヒープを知っておく必要があります。スタックは引数や変数、返り値、静...
Linux

仮想記憶について

仮想記憶について解説をしていきます。プログラムでどのようにメモリが管理されているか学べるようになっています。仮想記憶とは仮想記憶はプロセスがメモリにアクセスをする時に、物理的なメモリに直接アクセスしないで、仮想アドレスというアドレスを使って...
Linux

プロセス管理について

プロセスの知識はプログラミングをする上でも必要になってきます。今回はプロセスとは何か?プロセスがどのように管理されているのかについて解説をしていきます。これらを学ぶことで、どのようにプログラムが動いているかを理解を深めることができます。プロ...
OS

カーネルやシステムコールについて

カーネルやシステムコールはプログラムが機能を提供する上でなくてはならない存在です。これらを理解することで、プログラムでどのようにデバイス操作や、ファイルシステムの操作をしているかがわかるようになります。カーネルとはカーネルはOSの基本機能の...
低レイヤー

CPUとメモリについて

プログラムを書く時に、あまりCPUやメモリなど低レイヤーについて考えることが少ないと思います。低レイヤーの技術を学ぶことで、プログラムがどのように動いているかを理解して、内部構造を知ることで技術の向上、障害発生時に調査する時に役立ちます。今...
API

[開発者必読]REST Clientを使って、HTTPリクエストを送る方法

REST Clientを使って、HTTPリクエストを送る方法を紹介。こちらを参考にすれば大体のAPIのリクエストを作成できます。
Go言語

go-cmpで便利なOptionを使って、テスト結果を簡単に比較しよう

go-cmpを使ってテスト結果と期待値を比較することができますが、さらにOptionを使うことで単純に比較すること以外もできるようになります。そんなOptionでよくテストで使う方法について紹介をしていきます。