JavaScript, являющийся динамическим языком там огромное количество способов испортить, где другой язык остановил бы Вас.
Предотвращение фундаментальной функции языка такой как new
на основании, что Вы могли бы испортить, немного похоже на снимание Вашей новейшей обуви прежде, чем идти через минное поле на всякий случай, Вы могли бы получить свою грязную обувь.
я использую соглашение, где имена функций начинаются со строчной буквы и 'функций', которые являются на самом деле определениями классов, начинаются с прописной буквы. Результатом является действительно довольно востребованная визуальная подсказка, что 'синтаксис' является wrong:-
var o = MyClass(); // this is clearly wrong.
вдобавок к этой хорошей справке привычек именования. После того, как все функции делают вещи и поэтому должен быть глагол на его имя, тогда как классы представляют объекты и являются существительными и прилагательными без глагола.
var o = chair() // Executing chair is daft.
var o = createChair() // makes sense.
Его интересное, как окраска синтаксиса SO интерпретировала код выше.
Идеальное хеширование означает, что доступ для чтения требует постоянного времени даже в худшем случае.
Для вставки ключей нет никаких гарантий наихудшего случая, временные границы верны только в среднем (или, может быть,
Чтобы сделать вставку достаточно быстрой, хеш-таблица второго уровня выбирается очень большой для количества ключей (k 2 ), достаточно большой, чтобы коллизии стали достаточно маловероятными. Это не проблема с размером, потому что хэш первого уровня распределяет ключи равномерно, так что в среднем хеш-таблицы второго уровня все еще малы.
Хеш-функция для таблиц второго уровня выбирается случайным образом из набора параметризованных хэш-функций.
How about watching some MIT lectures? :)
MIT’s Introduction to Algorithms, Lectures 7 and 8: Hashing