Ответы пользователя по тегу Java
  • Как сделать рефакторинг данный код?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Первое и самое главное - у вас дублируется относительно большой кусок кода ибо вне зависимости от того, кто ваш юзер, после получения объекта из репозитория, вы делаете с ним одно и тоже. Нахрена тогда это писать два раза? (это можно и без stream api переписать)
    spoiler

    Вот зачем это писать два раза?
    if (user != null) {
                            user.setName(dto.getName());
                            user.setInn(dto.getInn());
                            user.setPhone(dto.getPhone());
                            user.setBrand(dto.getBrand());
                            user.setUserType(dto.getUserType());
                            usersRepository.save(user);
                        }
                        usersRepository.save(dto);



    По первому пункту дополнительный совет - всегда пользуйтесь статическими анализаторами, банально той же графаной - дублирование кода она находит вообще отлично, другие проблемы тоже довольно не плохо (но наличие собственного мозга она вам не заменит)

    Второе - да чуть-чуть можно сократить, украсить и (опционально) распаралелить исполнение кода, переписать его с использованием stream api. Но тут, возможно, кто-нибудь аргументированно опротестует данный совет. В любом случае прежде чем тупо использовать сей api, почитайте что это, как работает и какие он имеет недостатки и достоинства.

    Писать код за вас никто не будет, спрашивайте что конкретно не понятно по части srtream api, как пробовали и что не получается.
    Ответ написан
    Комментировать
  • Делают ли MarketPlace на Java Spring?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    А смысл писать на php с прицелом на переезд на java, не проще ли сразу начать писать на java? Как мне кажется время от начала работы до выката рабочего решения сопоставимое. Возможно даже в случае java меньше (если какой-нибудь Spring использовать)

    В общем хотите Java - пишите сразу на Java. В противном случае вы потратите многов ремени на повторную реализацию уже реализованного, без всякого на то смысла.

    Как вам правильно сказали - ваши действия должны иметь не нулевой Business Value, иначе у заказчика резонно возникнет вопрос "где фичи и фиксы багов, за что я вам плачу?"

    И вообще подход должен быть "У меня есть задача, у меня есть такие-то ресурсы, каким способом я могу ее решить?", но никак не "У меня есть задача, я сначала сделаю ее этим способом, а потом заново сделаю другим. Ресурсы? Да пофиг. у стейкхолдера бабла дохрена".
    Ответ написан
    Комментировать
  • Как озвучить текст?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    емнип Festival умеет говорить по-русски, но это скорее не библиотека, а отдельное приложение.
    Ответ написан
    Комментировать
  • При какой сортировке массива возможно получить изменение порядка цифр в массиве при компиляции?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    При компиляции порядок чисел в массиве будет такой, какой написан в коде программы (т.е. 11, 12, 13, 14, 41, 51, 21, 22, 23, 24, 42, 31, 32, 33, 34, 43) и не будет меняться пока вы его в исходнике не поменяете.
    Ответ написан
    Комментировать
  • Что значит "some characters cannot be mapped using cp1252" при сохранении?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Очевидно что вы пытаетесь конвертировать в cp1252 текст, в котором есть символы не предусмотренные данной кодировкой (например кирилица, греческие буквы или какие-нибудь специфичные символы аля значки параграфа или псевдографика)

    Сохраните/выведите текст как utf-8 и посмотрите что из представленных символов отсутствует в таблице
    Ответ написан
    1 комментарий
  • Смысл сокрытия, когда есть рефлексия?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    age > 0

    А вы в курсе что возраст детей, в первый год жизни, меньше одного года?

    age < 100

    И, к стати, люди, иногда (хоть и редко), живут больше 99 лет.

    По сабжу давайте я приведу понятный пример с автомобилем.

    У машины есть три (или две) педали. Это ваши сетеры, которые устанавливают уровень ускорения и степень торможения. А еще спидометр, тахометр, датчик температуры и топлива в качестве гетера.
    Перефразируя ваш вопрос - нахрена машине педали, если я могу залезть под капот и вручную дергать приводы клапанов/заслонок и т.п. (при этом легко ломая логику работы педалей), и зачем мне все эти спидометры, если можно визуально посмотреть как быстро вращается валы/колеса?

    Ответ:
    Удобно, вы точно знаете как оно работает, производитель может поменять начинку (например заменить всякую механику и пневматику компьютером и электроприводами), а педалей как было три (или две) так и осталось, их функционал не изменился. Более того, в аналогичных изделиях другого производителя внезапно тот же API -педали и спидометр, хотя под капотом вообще может оказаться электромобиль.

    В общем логика такова:
    "Вот вам функции, за них и дергайте... а если лезете под капот... вы знаете что делаете и/или ССЗБ, а у нас лапки.

    Пожалуйста, максимально просто. Я еще совсем новичок.

    В любом случае - если вы не знаете (и/или не можете объяснить хотя бы резиновой уточке) зачем вам нужна рефлексия - она вам 100% не нужна.
    Ответ написан
    Комментировать
  • Как избежать долгих пауз GC при создании множества мелких объектов?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Как вариант - избегать освобождения и выделения памяти. Особенно частого и в больших количествах.

    Очевидно что ноды будут изменяться только если изменяется сам уровень (ну или перемещаются какие-то объекты, которые влияют на проходимость карты) и очевидно это будут небольшие (относительно общего кол-ва нод) изменения, соответственно вы можете иметь глобальный пул нод и в локальной хешмапе использовать ссылки на нужные вам ноды. Как результат - ваши ноды быстро перестанут быть молодыми объектами и GC не будет их проверять (или будет, но редко. Этот момент я не очень понял из оракловской доки)

    Еще есть вариант - использовать другой сборщик. Дока

    И еще на хабре советуют увеличить размер PermanentGeneration
    Ответ написан
  • Нужно нарисовать пустой квадрат с крестиком используя циклы, верно ли моё решение?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Если запустить - данная программа рисует, что надо, при любом значении count (т.е. очевидно она работает).

    По коду пара слов:
    1. Не используйте транслит в названиях классов/переменных и т.п. Принято все английским обзывать.
    2. Я думаю вам любая IDE это за меня скажет - вы Scanner sc объявили, но нигде не используете. Я понимаю, что вы скорее всего добавите потом произвольный размер квадрата, но из кода для вопроса можно было бы это и убрать, чтоб глаза не мозолило (и вообще вам же легче будет отлаживать конкретный функционал, когда у вас нет лишнего функционала).
    3. Как вам уже сказал Дмитрий Шицков , ифы можно заменить на один вот такой:
    if (i == 0 || i == count - 1 || j == 0 || j == count - 1 || i == j || j == count - 1 - i) {
    	System.out.print("*");
    } else {
    	System.out.print(" ");
    }


    Хотя лично я бы (в ущерб компактности кода) сделал бы следующее:
    1. Рисовал бы сначала в массив с символами, в который писал бы пробелы или звездочки. (и потом его выводил бы на печать)
    2. Сделал бы отдельные функции для рисования каждой из линий (которая модифицирует массив)
    Ответ написан
    1 комментарий
  • Как писать чит для игры Minecraft?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Но нигде не смог найти информации по этой теме

    Прошу подсказать статью или может видео


    Вот не надо врать. Гайдов по созданию модов/плагинов/расширений к майнкрафту в интернете пруд пруди (покрайней мере для Java Edition)
    Ответ написан
    7 комментариев
  • Как запустить jar, обернутый в exe, при помощи отдельной jdk?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Скорее всего система берет бинарник jvm через переменную окружения path. Соответственно переопределяете переменную.

    Открытая консоль (или батник) наследует переменные от системных (или от того, что их запустило), открытая в консоли или батнике программа наследует переменные окружения которые были в консоли. Соответственно в батнике прописываете переопределние path и запускаете.

    Пример
    Ответ написан
    1 комментарий
  • Как правильно считается остаток от деления?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Для начала определитесь что вы подразумеваете под словом "ломается" - она падает(Exeption), выдает не верный результат (отличный от ожидаемого), просит сначала сводить ее в кино? (К стати, насколько я вижу она работает)

    Просто просто в несколько столбиков для каждоый строки напишите: Чему (по вашему) должны быть равны ваши переменные перед выполнением, что (по вашему) должно получиться в результате, чему на самом деле равны ваши переменные перед выполнением, что на самом деле получилось в результате.
    Ответ написан
    2 комментария
  • Java Collections асбтрактный тип List?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Гуглите про суть и смысл ООП.

    Объект абстрактного класса нельзя создать. Он на то и абстрактный, что "недоопределен" и предполагает что в классах-потомках все что надо будет доделано.

    Переменная типа List может указывать на объект любого класса-потомка.

    p.s.

    Что вышесказанно в той или иной степени касается любого языка реализующего концепцию ООП (конкретные детали реализации в разных языках могут немного отличаться, суть же остается неизменной)
    Ответ написан
    2 комментария
  • Как это лучше реализовать?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Нет, строка должна хранить текст. А для списка фиксированных значений есть Enum
    Ответ написан
    Комментировать
  • Существуют ли программы для передачи звука с компьютера на телефон?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Да есть.
    Я в свое время пользовался SoundWire - транслирует весь звус с компа на телефон через wifi. И так же в обратную (т.е. можно телефон еще и как микрофон использовать) Как именно оно зацепляется я не понял, да и не вникал, но если мобилка и комп воткнуты в один роутер, то все соединяется автоматически без доп. настроек.

    p.s.

    Для музыки сойдет, наверное (не готов оценить качество), а для игрушек где важен звук не катит - там явно задержка звука порядка 1-2 секунд. В Elite Мне было норм играть.
    Ответ написан
    Комментировать
  • Что случится, если не закрыть поток чтения/записи?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Как вариант - рано или поздно кончатся файловые дескрипторы и, если сборщик мусора не просечет фишку (тут увы, я не подскажу, ибо не знаю как он в яве работает), то при попытке открыть файл вы огребете. (применительно, например, к линуксу - сетевые сокеты тоже считаются, как оно под виндой не знаю).
    Ответ написан
    1 комментарий
  • Как в android узнать точное время?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    По GPS
    Ответ написан
    Комментировать
  • Можно ли с таким же успехом как и на Java, писать приложения под android на C++?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Проги на сях под андроид пишут не из-за удобства, а из-за наличия кучи готовых решений и из-за большей производительности и (в некоторых случаях) из-за наличия уже готовой программы на сях. В любом случае взаимодействие с системой и сервисами гугла идет через ява (Либо сишная прога дергает JNI, либо явовская прога использует сишные либы)
    Ответ написан
    Комментировать
  • Какой ЯП использовать для кросплатформенной разработки в 2015 году?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Если приложение не пользуется специфическими для той или иной системы функциями и не завязано на каких-то специфичных вещах, типа особого оборудования - смело берите любой кроссплатформенный фреймворк для GUI, который вам больше всего нарвится.

    Ну и по привычке посоветуют Qt + С++, ибо сам практикую.
    Ответ написан
    Комментировать
  • Как Java программисту подшутить над C++ программистом?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Рекомендую старую как мир шутку

    #define true false
    (это очень жестокая шутка! В реальный код пихать не рекомендую, найдут виноватово - будет "неприятности получаемые одним субъектом от другого" © Википедия)

    Из безобидного:
    #error "Поздравляю тебя, Шарик, ты балбес!"
    Ответ написан
    Комментировать