А зачем вам иметь размер хеш таблицы таким же как и результат хеш функции? Почему бы не брать hashValue % tableSize в качестве номера ячейки, как обычно делают при реализации хеш таблицы.
Действительно на intel-овских проце гарантируется cache coherence между процессорами. Был не прав. Хотя, вполне возможно что с увеличением количества ядер или на других архитектурах ее не будет.
CAS (compare and set) есть практически на любом процессоре. Надо просто инкапсулировать ее куда-нибудь и будет все работать на той платформе, которая вам нужна. С таким же успехом можно было бы говорить о том, что программа, использующая блокировки не переносима, тк API для блокировок отличаются на разных платформах.
Если хеш таблица реализована правильно, то ничего не теряется. Есть техники, которые позволяют делать многопоточную хеш таблицу без потери в производительности. Погуглите lock free data structures.
Там не так все просто. У процессоров имеется кеш, и изменения могут быть не залиты в основную память, что создаст проблемы при наличии нескольких процессоров.
>Для реализации хеш-таблицы я выбрал бинарное дерево (возможно, не лучший способ) с разрешением коллизий на основе цепочек.
Хеш таблица это структура данных, как и бинарное дерево. Как одно может быть реализовано через другое, я не понимаю. Как в бинарном дереве коллизии разрешаются через цепочки, там их просто нет.
Ничего не работает. Ввел два адреса, не нашлось ничего. К тому же, почему-то надо вводить адрес руками. Почему я не могу кликнуть мышкой и сказать найди от сюда до сюда (в google maps, это кстати есть, и единственнное чего там нет, но что есть у вас это маршрутки).
>все параметры передаются по значению (т.е. копии объектов, а не ссылки на них, как это обычно происходит)
Вы тут неправы. В RMI есть возможность переадавать как по значению (Serializable), так и по ссылке (Remote).
Вызовы рефлекшина такие дорогие, потому что проверяется видимость, секьюрити итп вещи. Вызовы можно ускорить до уровня FastClass, итп просто вызвав у метода метод setAccessible(true). Так что, чтобы получать хороший перформанс в рефлекшине, не зачем так извращаться.
Чтобы втиснуться в рынок нужно какое-то конкурентное преимущество. У контакта оно есть, бесплатная музыка и видео, непонятно правдо смогут ли они его сохранить выйдя на другой рынок. Других преимуществ лично я не вижу.
Энергия атомной, и даже термоядерной бомбы это небольшая величина для земли, она сравнима с энергией землятрясений (про это можно почитать, например здесь: www.jclahr.com/alaska/aeic/magnitude/energy.txt). Например, при землятрясении в 8 балов высвобождается энергия эквивалентная 15 мегатоннам, 9 балов это около 50 мегатонн. Такие землятрясения не редкость, и планета с орбиты почему-то не смещается (статистику можете посмотреть здесь: en.wikipedia.org/wiki/List_of_deadly_earthquakes_since_1900)
Ну, вообще эффекты близкие к ядерной зиме наблюдались во время первой войны США с Ираком, когда Садам поджег нефтяные скважины. Было падение температуры на 10 градусов. (http://en.wikipedia.org/wiki/Nuclear_Winter#Criticism_of_nuclear_winter_theory)
Ядерная зима возникает из-за того, что из-за горения в атмосферу поднимется большое количество сажи. Из-за этого количество солнечного света сильно уменьшится, и станет холодно. Таким образом, взрывы должны быть не повыше, а в местах, где много горючего материала, например в больших промышленных центрах.
Кстати, lock free hashmap есть для Java: www.azulsystems.com/events/javaone_2007/2007_LockFreeHash.pdf А Java переносима.
Хеш таблица это структура данных, как и бинарное дерево. Как одно может быть реализовано через другое, я не понимаю. Как в бинарном дереве коллизии разрешаются через цепочки, там их просто нет.
Вы бы наладили производство и установку таких девайсов, отбоя бы от желающих не было.
Вы тут неправы. В RMI есть возможность переадавать как по значению (Serializable), так и по ссылке (Remote).