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 投稿