|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
Добрый день! Может кто особо опытной в многопоточности java расскажет какие проблемы с кодом: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 17:33 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylor, new byte[1].equals(new byte[1]) возврашает false, что какбы намекает, что как ключ для Map тип данных byte[] не катит нафига в этом месте заморачиваться с многопоточностью? ну вычислится оно несколько раз, ну и фиг с ним сама идея кешировать данные из недоверенного источника, где не понятно сколько разных ключей может быть, попахивает ООМ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 17:45 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
Андрей Панфилов, авторнафига в этом месте заморачиваться с многопоточностью? ну вычислится оно несколько раз, ну и фиг с ним ну типа потокобезопасность чтения и записи в Map, вдруг DigestImpl будет шариться между потоками, которые будут дергать метод digest(byte[] input)? не надо ли обеспечивать этот блок синхронным? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 18:01 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
ключем HashMap должен быть неизменяемый объект, желательно с переопределенными hashCode() и equals() ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 18:11 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylorну типа потокобезопасность чтения и записи в Map, вдруг DigestImpl будет шариться между потоками, которые будут дергать метод digest(byte[] input)? не надо ли обеспечивать этот блок синхронным? ConcurrentHashMap для этого существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 18:11 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
Если обернуть byte[] в класс, в кустарную синхронизацию заменить на готовое решение, кода станет меньше и он станет более читаемым. Да ещё и работособным. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 18:14 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylorну типа потокобезопасность чтения и записи в Map, вдруг DigestImpl будет шариться между потоками, которые будут дергать метод digest(byte[] input)? не надо ли обеспечивать этот блок синхронным?вы думаете не о том что нужно у вас: ставим лок вычисляем записываем снимаем лок т.е. если вычисляем 10 минут, то все остальные в это время курят, нафига так делать если лишнее вычисление ни на что не влияет? Нужно: вычисляем ставим лок записываем снимаем лок Далее, идем и курим доку по HashMap ( https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html): oracleNote that this implementation is not synchronized. If multiple threads access a hash map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more mappings; merely changing the value associated with a key that an instance already contains is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the map.т.е. ваша оптимистичная проверка на наличие записи вообще не в кассу, потому что так нельзя, курим доку дальше, удаляем нафиг synchronized добавляем Collections.synchronizedMap. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 18:17 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Ясно, спасибо за подробный ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 18:39 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
авторт.е. если вычисляем 10 минут, то все остальные в это время курят, нафига так делать если лишнее вычисление ни на что не влияет? Если туда попадет 150 потоков одновременно, то вычислять будет те же 10 минут? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 19:03 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylor, Велик шанс получить некорректное состояние HashMap. Ведь эта структура не расчитана на работу из двух потоков. Поэтому ошибка на первом же методе get. Наивная оптимизация с null уже бесполезна. Воспользуйтесь советом Андрея. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 19:41 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
BlazkowiczЕсли обернуть byte[] в класс, в кустарную синхронизацию заменить на готовое решение, кода станет меньше и он станет более читаемым. Да ещё и работособным.Наверное смысла нет - нужно хеш от массива считать, а потом еще и equals делать, а у ТС дайджесты считаются - те же самые хеши, но другие. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 19:55 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
Андрей ПанфиловНаверное смысла нет - нужно хеш от массива считать, а потом еще и equals делать, а у ТС дайджесты считаются - те же самые хеши, но другие. Верояно замечание. Я фиг его знает что он там вычисляет. Но тоже нужно учитывать. Иначе смысл кеширования. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 20:29 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
Очень похоже на тестовое задание от Яндекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2018, 00:55 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylor Код: java 1. 2. 3. 4. 5.
Вот это очень-очень плохо. Не рекомендуется передавать управление в сторонний код(а метод ваш абстрактный и по определению переопределяется в других классах), проблема не так сильна для внутренних классов, если же это часть фреймворка.... Тут можно словить много чего, начиная от дедлока, до злонамеренного DoS. Как вам правильно сказали, нужно лочить, быстренько делать апдейт shared структуры данных и разлочить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2018, 02:23 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylor, не совсем ясно, зачем выносить хэшмеп в свойства и заморачиваться с синхронайзом, засуньте кеш в функцию и уберите синхронайз. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2018, 15:44 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
с яндекса чтоль прислали? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2018, 20:50 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
fixxerОчень похоже на тестовое задание от Яндекса. оно и есть. мне вот больше интересно что там за правильный ответ. потому что когда я им написал то что было самым популярнымИ ответамИ в гуглояндексе на их загадку - оказалось неправильным. я лично хз что там правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2018, 21:34 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
andreykaT, нет, но это особо значения не имеет. да, задание тестовое, а не моя реализация кэша. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2018, 10:07 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
andreykaTоно и есть. мне вот больше интересно что там за правильный ответ. потому что когда я им написал то что было самым популярнымИ ответамИ в гуглояндексе на их загадку - оказалось неправильным. я лично хз что там правильно. Какой ещё "правильный ответ"? Все ответы правильные. Чем больше вы проблем озвучите, тем больше раскроете свои знания потенциальному работодателю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2018, 10:11 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
BlazkowiczВсе ответы правильные. Чем больше вы проблем озвучите, тем больше раскроете свои знания потенциальному работодателю. так точно! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2018, 10:13 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
BlazkowiczandreykaTоно и есть. мне вот больше интересно что там за правильный ответ. потому что когда я им написал то что было самым популярнымИ ответамИ в гуглояндексе на их загадку - оказалось неправильным. я лично хз что там правильно. Какой ещё "правильный ответ"? Все ответы правильные. Чем больше вы проблем озвучите, тем больше раскроете свои знания потенциальному работодателю. правильный(правильные) это тот который они лично хотят услышать. очевидно же. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2018, 13:49 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
по мне так код вообще какой-то лютый костыль напоминает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2018, 13:50 |
|
Перечислите все проблемы, которые вы видите в данном коде
|
|||
---|---|---|---|
#18+
_taylorДобрый день! Может кто особо опытной в многопоточности java расскажет какие проблемы с кодом: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Заранее спасибо! Вроде бы была такая задача. https://javatalks.ru/topics/45628 С уважением, Валентин ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 11:07 |
|
|
start [/forum/topic.php?fid=59&msg=39665577&tid=2121951]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 181ms |
0 / 0 |