new演算子、継承、スタックとヒープ、シリアライズコピーとシャローコピー

new演算子の内部仕組み new演算子はオブジェクトをインスタンス化し、新しいオブジェクトを返します。コンストラクタ関数内のthisはインスタンスに参照されます。 new演算子の内部プロトタイプ var p1 = {} で新規オブジェクトを作成し、メモリ空間を確保します。 Person.call(p1) を使用して、Person関数内のthisをp1に変更します。 p1.__proto__ == Person.prototype ...

6月26日 17:55 投稿

ヒープ構造の理解と実装:データ構造入門から実践まで

前書き コンピュータサイエンスにおいて、ヒープ(Heap)は優先度付きキューの実装や効率的なソートアルゴリズム(ヒープソート)に使われる重要なデータ構造です。ヒープは完全二分木をベースにしており、配列による順序表現が可能で、メモリ効率と操作速度のバランスに優れています。 1. 木構造の基礎 1.1 木とは 木は非線形データ構造で、ノードの階層的集合です。根( ...

5月16日 12:26 投稿

滑動窓最大値と上位K頻度要素のアルゴリズム実装

LeetCode 239. スライディングウィンドウ最大値 問題リンク:239. スライディングウィンドウ最大値 - LeetCode ​アプローチ: ウィンドウの左端が常に最大値となるように維持し、popleft操作で自動的に最大値を取得できるようにする。 # Pythonで双端キューを使用した実装 class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: ...

5月16日 02:53 投稿

JVMのメモリモデル

JVMメモリ構造の概要 JVMのランタイムデータ領域はいくつかの部分に分かれますが、オブジェクトのデータを主に格納するのはヒープ領域とメソッド領域(非ヒープ領域)です。これらの領域はスレッド間で共有されます。一方、スタック(仮想マシンスタック、ネイティブメソッドスタック、プログラムカウンタ)は各スレッドごとに独立しています。 ヒープ領域は主に以下の部分 ...

5月16日 00:20 投稿