DB検索と挿入/削除のコストで考えるB+木とLSM木の違い MySQLやPostgreSQLで使用しているB+木と、SpannerやTiDBで使用されているLSM木の違いについて、検索と挿入/削除の何が違うのかをコストの観点で解説をしていきます。検索と挿入/削除はトレードオフの関係B+木とLSM木な... 2024.11.24DB
Go言語Goで学ぶファイルディスクリプタ 今回はファイルディスクリプタの解説をしていきます。こちらを読むことで、プログラムからファイルを操作がどのようにされているか理解することができます。ファイルディスクリプタとは?ファイルディスクリプタとはプログラムからファイルを操作する際に、操... 2024.09.05Go言語低レイヤー
Go言語Goのメモリ管理:アロケータ、ガベージコレクション 開発をしていてあまりに気にしないが重要なアロケータや、ガベージコレクションについて解説をしていきます。アロケータGoのアロケータはオブジェクトを操作するのに必要なメモリブロックを動的に割り当てられ、ロックや断片化を回避してOSヘの遅いシステ... 2024.08.29Go言語低レイヤー
Go言語なぜGoは並行処理に優れているか? Goがなぜ並行処理に長けているのか、Gorutineのどのような部分が良いのかについて解説をしていきます。スタック、ヒープGoroutineの良さを知るためにはまずスタック、ヒープを知っておく必要があります。スタックは引数や変数、返り値、静... 2024.08.20Go言語低レイヤー
Linux仮想記憶について 仮想記憶について解説をしていきます。プログラムでどのようにメモリが管理されているか学べるようになっています。仮想記憶とは仮想記憶はプロセスがメモリにアクセスをする時に、物理的なメモリに直接アクセスしないで、仮想アドレスというアドレスを使って... 2024.08.08LinuxOS低レイヤー
Linuxプロセス管理について プロセスの知識はプログラミングをする上でも必要になってきます。今回はプロセスとは何か?プロセスがどのように管理されているのかについて解説をしていきます。これらを学ぶことで、どのようにプログラムが動いているかを理解を深めることができます。プロ... 2024.08.05LinuxOS低レイヤー
OSカーネルやシステムコールについて カーネルやシステムコールはプログラムが機能を提供する上でなくてはならない存在です。これらを理解することで、プログラムでどのようにデバイス操作や、ファイルシステムの操作をしているかがわかるようになります。カーネルとはカーネルはOSの基本機能の... 2024.08.01OS低レイヤー
低レイヤーCPUとメモリについて プログラムを書く時に、あまりCPUやメモリなど低レイヤーについて考えることが少ないと思います。低レイヤーの技術を学ぶことで、プログラムがどのように動いているかを理解して、内部構造を知ることで技術の向上、障害発生時に調査する時に役立ちます。今... 2024.07.27低レイヤー
API[開発者必読]REST Clientを使って、HTTPリクエストを送る方法 REST Clientを使って、HTTPリクエストを送る方法を紹介。こちらを参考にすれば大体のAPIのリクエストを作成できます。 2024.06.20APIGo言語
Go言語go-cmpで便利なOptionを使って、テスト結果を簡単に比較しよう go-cmpを使ってテスト結果と期待値を比較することができますが、さらにOptionを使うことで単純に比較すること以外もできるようになります。そんなOptionでよくテストで使う方法について紹介をしていきます。 2024.05.16Go言語