deploy: static pages
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
var Entry = (function () {
|
||||
function Entry(val) {
|
||||
this.value = val;
|
||||
}
|
||||
return Entry;
|
||||
}());
|
||||
export { Entry };
|
||||
var LinkedList = (function () {
|
||||
function LinkedList() {
|
||||
this._len = 0;
|
||||
}
|
||||
LinkedList.prototype.insert = function (val) {
|
||||
var entry = new Entry(val);
|
||||
this.insertEntry(entry);
|
||||
return entry;
|
||||
};
|
||||
LinkedList.prototype.insertEntry = function (entry) {
|
||||
if (!this.head) {
|
||||
this.head = this.tail = entry;
|
||||
}
|
||||
else {
|
||||
this.tail.next = entry;
|
||||
entry.prev = this.tail;
|
||||
entry.next = null;
|
||||
this.tail = entry;
|
||||
}
|
||||
this._len++;
|
||||
};
|
||||
LinkedList.prototype.remove = function (entry) {
|
||||
var prev = entry.prev;
|
||||
var next = entry.next;
|
||||
if (prev) {
|
||||
prev.next = next;
|
||||
}
|
||||
else {
|
||||
this.head = next;
|
||||
}
|
||||
if (next) {
|
||||
next.prev = prev;
|
||||
}
|
||||
else {
|
||||
this.tail = prev;
|
||||
}
|
||||
entry.next = entry.prev = null;
|
||||
this._len--;
|
||||
};
|
||||
LinkedList.prototype.len = function () {
|
||||
return this._len;
|
||||
};
|
||||
LinkedList.prototype.clear = function () {
|
||||
this.head = this.tail = null;
|
||||
this._len = 0;
|
||||
};
|
||||
return LinkedList;
|
||||
}());
|
||||
export { LinkedList };
|
||||
var LRU = (function () {
|
||||
function LRU(maxSize) {
|
||||
this._list = new LinkedList();
|
||||
this._maxSize = 10;
|
||||
this._map = {};
|
||||
this._maxSize = maxSize;
|
||||
}
|
||||
LRU.prototype.put = function (key, value) {
|
||||
var list = this._list;
|
||||
var map = this._map;
|
||||
var removed = null;
|
||||
if (map[key] == null) {
|
||||
var len = list.len();
|
||||
var entry = this._lastRemovedEntry;
|
||||
if (len >= this._maxSize && len > 0) {
|
||||
var leastUsedEntry = list.head;
|
||||
list.remove(leastUsedEntry);
|
||||
delete map[leastUsedEntry.key];
|
||||
removed = leastUsedEntry.value;
|
||||
this._lastRemovedEntry = leastUsedEntry;
|
||||
}
|
||||
if (entry) {
|
||||
entry.value = value;
|
||||
}
|
||||
else {
|
||||
entry = new Entry(value);
|
||||
}
|
||||
entry.key = key;
|
||||
list.insertEntry(entry);
|
||||
map[key] = entry;
|
||||
}
|
||||
return removed;
|
||||
};
|
||||
LRU.prototype.get = function (key) {
|
||||
var entry = this._map[key];
|
||||
var list = this._list;
|
||||
if (entry != null) {
|
||||
if (entry !== list.tail) {
|
||||
list.remove(entry);
|
||||
list.insertEntry(entry);
|
||||
}
|
||||
return entry.value;
|
||||
}
|
||||
};
|
||||
LRU.prototype.clear = function () {
|
||||
this._list.clear();
|
||||
this._map = {};
|
||||
};
|
||||
LRU.prototype.len = function () {
|
||||
return this._list.len();
|
||||
};
|
||||
return LRU;
|
||||
}());
|
||||
export default LRU;
|
||||
Reference in New Issue
Block a user