
Мытко
28.06.2016
14:59:12
можно продлевать?
не
я про бесплатную версию для студентов
у меня заканчивается в августе

Google

Igor
28.06.2016
15:01:47
ну каждый год, пока учишься
когда закончил они дают скидку в 25%
т.е. я еще могу купить за 111$

Мытко
28.06.2016
15:02:05
это замечательно

James Tiberius Kirk ?
28.06.2016
15:02:17
Вроде не таких безумных денег стоит если работать

Мытко
28.06.2016
15:02:17
а ты будешь покупать?)

Igor
28.06.2016
15:02:27
у меня работа лицензию проплатила
как уйду - буду покупать

Meent
28.06.2016
15:06:44
Раз в год кидаешь им студак и они продлевают

Мытко
28.06.2016
15:08:39
я в прошлый раз по почте получал лицензию
могу ещё раз так же?
по идее могу

Google

Meent
28.06.2016
15:09:52
просто на аккаунте дату продлят и всё

Andrei
28.06.2016
15:23:53
Столько тут срача бесполезно кождый день)
Перечислите все проблемы, которые вы видите в данном коде:
public abstract class Digest {
private Map<byte[], byte[]> cache = new HashMap<byte[], byte[]>();
public byte[] digest(byte[] input) {
byte[] result = cache.get(input);
if (result == null) {
synchronized (cache) {
result = cache.get(input);
if (result == null) {
result = doDigest(input);
cache.put(input, result);
}
}
}
return result;
}
protected abstract byte[] doDigest(byte[] input);
}

Мытко
28.06.2016
15:24:12
ну не читай
классный код, братишь
табуляция как в сказке

Igor
28.06.2016
15:24:57
оберни в `
и поубирай лишние строки хотя бы

Andrei
28.06.2016
15:25:21
Вот задача. Это задание на синьер позицию в одну неплохую контору
Мое решение их не устроило. Хочется услышать вас.

Мытко
28.06.2016
15:25:52
SENJOR-POMIDOR

Captain
28.06.2016
15:25:57
byte[]
в этом проблема

Andrei
28.06.2016
15:25:58
Насрать на табуляцию

Captain
28.06.2016
15:26:16
byte[] как ключ для Map

Andrei
28.06.2016
15:26:43
byte[]
в этом проблема
Давайте каждый кому интересно выдаст по одному сообщению на весь ответ, а не по строчкам. В том числе и я

Captain
28.06.2016
15:26:45
на деле не сталкивался
читал на хабре про жто
меня на одном собеседовании спросили про это

KrivdaTheTriewe
28.06.2016
15:27:22
Тут дабл чек локинг неправильный
Финалов нет

Captain
28.06.2016
15:27:48
byte[] как ключ будет всегда тотже
даже у разных byte[]

Google

KrivdaTheTriewe
28.06.2016
15:27:53
Плохо иметь массив байт как ключ
Рейсинг тут
Следует брать библиотеку для такого контейнера


Andrei
28.06.2016
15:28:20
Мой ответ :
1. По поводу использования массива в качестве ключа в Map мне известно, поэтому просто привожу цитату из сети:
хеш-код массива не зависит от хранимых в нем элементов, а присваивается при создании массива (метод вычисления хеш-кода массива не переопределен и вычисляется по стандартному Object.hashCode() на основании адреса массива). Так же у массивов не переопределен equals и выполняет сравнение указателей. Это приводит к тому, что обратиться к сохраненному с ключом-массивом элементу не получится при использовании другого массива такого же размера и с такими же элементами, доступ можно осуществить лишь в одном случае — при использовании той же самой ссылки на массив, что использовалась для сохранения элемента.
2. Соответственно, result будет всегда null, кроме случая когда в Map добавлен элемент с ключом, имеющим ссылку на тот же массив, что и передаваемый параметр в вызове digest();
3. Нет никакой возможности добавить в cache элемент, потому что в реализации метода doDigest() через который это видимо предполагается делать (в унаследованном классе) не будет доступа к cache (т.к. cache is private).
4. Если предположить, что cache стал, например, protected, или появился геттер, и в него положена та же ссылка на объект, что и используется при вызове digest(), и соответственно получено значение result (при условии, что value при вызове put() == null), то попадаем в блок synchronized(). Далее предполагаю, что doDigest() возвращает value (которое равно null - как сообщил ранее). В итоге в процессе работы алгоритма содержание cache не меняется (старое значение заменяется тем же самым элементом) - проблема в отстутствии смысла.
5. Многопочность. Ну предположим много потоков, каждый вызывает по очереди doDigest() и digest(). Гонка потоков будет в doDigest (если в реализации об этом не позаботиться), и так как реализация HashMap не потокобезопасна, там может произойти что угодно.


KrivdaTheTriewe
28.06.2016
15:28:46
И использовать хэшмеп канкаренси
У которого есть чек на наличие
Не помню как называется операция
Типа если есть то ничего не делать
Если нет
То атомарно внести

Andrei
28.06.2016
15:29:44

KrivdaTheTriewe
28.06.2016
15:30:29

KrivdaTheTriewe
28.06.2016
15:30:34
Дабл чек локинг
Реализацию
Вроде так паттерн называется
Что за контора

Andrei
28.06.2016
15:31:20
Да сбер

Мытко
28.06.2016
15:31:51
leld

Captain
28.06.2016
15:32:45
) ну вот в сбере меня и спрашивали
единственное - без кода
на словах попросили объяснить проблему byte[]

Мытко
28.06.2016
15:32:55
лелед

Google

Мытко
28.06.2016
15:33:01
ну теперь-то вы знаете

Митко Соловец?
28.06.2016
15:33:28
зраститя

Мытко
28.06.2016
15:33:34
а ты как ответил, андрэ?

Andrei
28.06.2016
15:33:42
Выше написал

Митко Соловец?
28.06.2016
15:33:44
из стана врага есть новости
макрософак выпустил асп нет под линупс

Мытко
28.06.2016
15:34:01
и тебя не взяли?

KrivdaTheTriewe
28.06.2016
15:34:03
Что нового в си шарпе?

Admin
ERROR: S client not available

Andrei
28.06.2016
15:34:15
По мылу вопрос был. Да, сказали ответ не устроил экспертов)

KrivdaTheTriewe
28.06.2016
15:34:40
Оч давно известно

Митко Соловец?
28.06.2016
15:34:43
сегодняшняя новость так-то

KrivdaTheTriewe
28.06.2016
15:34:54
Ну была же альфа

Митко Соловец?
28.06.2016
15:34:57
1,5 года прошло

KrivdaTheTriewe
28.06.2016
15:34:57
Или что там

Captain
28.06.2016
15:34:59
@vikuloff
если не секрет когда проходил то самое собеседование и в каком городе\области?

Митко Соловец?
28.06.2016
15:35:15
короче, ред хат полизал мелкософтику

KrivdaTheTriewe
28.06.2016
15:35:16

Митко Соловец?
28.06.2016
15:35:17
такие дела

KrivdaTheTriewe
28.06.2016
15:35:22
А сколько денег

Google

KrivdaTheTriewe
28.06.2016
15:35:34

Andrei
28.06.2016
15:35:56

KrivdaTheTriewe
28.06.2016
15:36:04
Появятся модифицированные вм под дот нет

Митко Соловец?
28.06.2016
15:36:15
ну посмотрим, к чему это приведет
конкуренция это всегда хорошо
возможно ожиревшая за годы жаба наконец-то расшевелится

Andrei
28.06.2016
15:36:39

KrivdaTheTriewe
28.06.2016
15:37:02
Это старое задание из Яндекса
Кстати

Captain
28.06.2016
15:37:28
ясно
спасибо)
в Москве наверное жесткий
жесткий отбор*?

Мытко
28.06.2016
15:40:19
кто-то так инициализирует объекты?
через тернарный

Igor
28.06.2016
15:40:39
а почему нет?

Мытко
28.06.2016
15:40:49
мне на работе грят так не делать

Andrei
28.06.2016
15:41:06
Плохой стиль потому что всегда вызывает тупняк при чтении

Мытко
28.06.2016
15:41:24
хз

Andrei
28.06.2016
15:41:29
Тратишь неск секунд чтобы вспомнить как эта хрень работает)

Мытко
28.06.2016
15:41:31
у меня не возникает тупняка