Goにおける変数のライフサイクルとメモリ管理
変数の有効期間とメモリ割り当ての仕組み
Go言語では、変数のライフサイクル(生存期間)がそのメモリ割り当て場所(スタックまたはヒープ)に直接影響します。変数がいつ、どこでどのように確保されるかを理解することで、パフォーマンスの最適化や不要なガベージコレクション(GC)負荷の低減が可能になります。
スタックとヒープの違い
スタック: 関数呼び出し時に ...
7月24日 21:19 投稿
CentOS7.9 で io.Copy がハングする:splice システムコールと古い Linux カーネルの相性問題
事象の概要
Go 1.21.0〜1.21.4 でコンパイルした TCP プロキシが CentOS 7.9(カーネル 3.10.0)上で動作中、io.Copy が永遠に戻らなくなるケースが発生しました。
原因は net.TCPConn.ReadFrom が内部的に使う splice が SPLICE_F_NONBLOCK フラグを失ったことで、ノンブロッキング動作が無効になり、古いカーネルでブロックしていたためです。
Go 1.21.5 で該当フラグが ...
7月23日 22:50 投稿
Kubernetes client-go DeltaFIFOのソースコード分析
概要
Queueインターフェース
DeltaFIFO
要素の追加・削除・更新 - queueActionLocked()
Pop()
Replace()
概要
ソースコードのバージョン情報
プロジェクト: kubernetes
ブランチ: master
最新コミットID: d25d741c
日付: 2021-09-26
前回の記事「Kubernetes client-goソースコード分析 - 序章」で、カスタムコントローラーが関与するclient-goコンポーネントの全体的な ...
7月23日 16:47 投稿
LedisDBのデータバックアップと復元:dump、load、repairツールの詳細解説
LedisDBのデータバックアップと復元:dump、load、repairツールの詳細解説
1. LedisDBのデータバックアップ:dumpコマンドの詳細
LedisDBは、Go言語で開発された高性能NoSQLデータベースサーバーであり、様々なデータタイプに対応したバックアップ機能を提供しています。これらのコマンドはserver/cmd_migrate.goに定義されており、以下のように分類されます:
dump:KVタ ...
7月21日 23:20 投稿
Go言語のreflectパッケージを使った実行時メタプログラミング実践
実行時に型情報を扱うための3原則
インタフェース値 → reflect.Value / reflect.Type への変換が可能
reflect.Value / reflect.Type → インタフェース値 への復元が可能
reflect.Value で値を書き換えるには「アドレス可能」である必要がある
型システムとreflectの関係
Goでは変数は「静的型」と「実行時型(コンクリート型)」を持つ。
静的型はソースコード上で宣言 ...
7月20日 17:30 投稿
Elasticsearchの災害復旧システム構築:Infini Gatewayを用いた堅牢なアーキテクチャ
Elasticsearchを中心とした基幹システムにおいて、障害発生時の業務継続性を確保するための効果的な災害復旧(DR)ソリューションが求められています。本記事では、Infini Gateway(旧称:极限网关)を活用し、アプリケーション側の改修を最小限に抑えたまま、データの複製とフェイルオーバーを実現するアーキテクチャについて解説します。
アーキテクチャ概要
本ソリュー ...
7月18日 21:23 投稿
Charles ライセンスキー生成メカニズムの解析
基本的なアクティベーション方法
Charlesでアクティベーションを行うには、メニューから Help -> Register Charles を選択します。
表示されたダイアログの Registered Name に任意の名前を、生成された License key に入力して Register をクリックします。
以下に、このライセンスキーを計算するためのJavaおよびGoによる実装例を示します。
Java による実装
import ...
7月17日 19:37 投稿
ローカル大規模言語模型の実行環境構築:Ollama 活用ガイド
Ollama の概要
Ollama は、Go 言語で構築されたオープンソースのフレームワークであり、ユーザーが自身のマシン上で大規模言語模型(LLM)を容易に実行できるように設計されています。Windows、Linux、macOS といった主要なオペレーティングシステムに対応しており、シンプルなコマンド操作だけでモデルのデプロイから推論までが可能です。また、モデルの量子化(quantizat ...
7月15日 19:48 投稿
Go言語で90%のリンクリスト問題を解決する3つのテクニック:LeetCode-Goでの逆転、環検出、およびマージ
Go言語で90%のリンクリスト問題を解決する3つのテクニック
この記事では、LeetCode-Go を使用して、リンクリストの逆転、環検出、およびマージを行う方法について説明します。これらのテクニックは、インタビューとアルゴリズムの練習で役立つでしょう。
### LeetCode-Goの特徴
LeetCode-Goは、Go言語で書かれたLeetCodeの問題解法集です。全ての問題が100%のテストカ ...
7月11日 21:05 投稿
ターミナル向けカスタムメニュー作成ツール - CmdMenu
CmdMenu は、Go 言語で開発されたオープンソースのコマンドラインベースメニュー作成ツールです。このツールを使えば、Linux、macOS、Windows など複数のプラットフォーム上で動作するカスタムメニューを簡単に構築し、選択に基づいて特定の操作を実行できます。
プロジェクト概要
CmdMenu は軽量なツールであり、ターミナル内で迅速に一連のタスクをインタラクティブに実 ...
7月11日 16:40 投稿