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