Ответы пользователя по тегу Java
  • Какую область программирования выбрать PHP или Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Если автор знает Python - это очень хорошо. Мне кажется что под него щас проще искать работу. В том смысле что он - широкоформатный. Есть и девопс и электронная коммерция и дата-саенс и автоматизация тестирования и нейросети с роботами и железяки.
    Ответ написан
    Комментировать
  • Как хранить статическую информацию в spring-приложении?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Делать его бином тоже как-то не хочется

    Не совсем понятно почему не хочется. Экономишь память? Или время иниализации бина?

    У тебя проблема вовсе не в Spring. Здесь если убрать Spring за скобки - то ты также будешь ломать
    голову над тем как разложить твои данные по методам.

    Попробуй реши эту задачу вообще без Spring. Будет простое ООП-решение. Вот затащи его потом
    в Spring и вопрос сам собой решится.
    Ответ написан
    Комментировать
  • Подскажете по архитектуре "мультисервисного" приложения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Это значит, мне надо сделать 1000 репозиториев, в каждом Х методов (получение по ID, получение по значению поля, одного объекта, коллекции...). И ещё 1000*Х методов в контроллерах....

    Зачем такой ужас. Делай только те репозитарии которые реально задействованы в бизнес-задачах.
    Из личного опыта могу сказать что если приложение спроектировано по умному - то ему не нужно
    выделять каждую таблицу в Entity.
    Ответ написан
    3 комментария
  • Зачем нужен WebFlux?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Мне кажется что внедрение WebFlux идет от "реактивного манифеста". Вообще классические сервлетные серваки которые раньше поддерживались Tomcat/Jetty сегодня могут быть прозрачно подменены на netty, на уровне конфигураций бута, что как-бы приближает нас к асинхронщине. И современному бизнес-разработчику практически будет безразлично, написан ли его контроллер на блокирующем IO или на каком-то другом. По сути речь идет о диспетчеризации ресурсов. Где создавать поток. А где и хватит единого потока диспетчера на всех.

    По поводу WebFlux, я видел один проект по обработке web-messages и это было удобно. Но только если мы на уровне алгоритма гарантируем что хендлер месседжа не будет занимать много времени.
    Ответ написан
    Комментировать
  • Как исправить ошибку при использовании matcher.group(1)?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Вот так надо

    Pattern regex = Pattern.compile("^" + value.regex);
    Matcher result = regex.matcher(this.code.substring(this.pos));
    if (result.matches()) {
     .......
    }
    Ответ написан
  • Может ли приложение менять файлы внутри JAR?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Вопрос состоит из нескольких частей.
    1) Как работает в Java ClassLoader (это сами почитаете). Сколько в Java приложении ClassLoader-ов.
    2) Какая на самом деле цель? Изменение jar-файла на ходу скорее всего не повлияет на работу приложения в рантайме. При следующем запуске - да. Но проблема которую вы решаете должна решаться по другому. Изменение оригинального артифакта - рассматривается с точки зрения безопасности очень плохо. Разработчики критически важных приложений снабжают jar-файлы электронными подписями и таким образом измченить артифакт не сломав подписи - невозможно. Просто имейте это в виду.
    3) Существует много технологий внесения изменения в оригинальную работу приложения. Самое лучшее - это - писать плагины если есть возможность. Или выйти на контакт с разработчиком и получить сорцы и сделать свой собственный форк с нужными фичами.
    Ответ написан
  • Есть ли другой алгоритм решения задачи?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты используешь регулярку для того чтобы делать разделение английского текста на слова.
    String[] words = verse.toLowerCase().split("[\\s.,?!\\d]+");

    Можно решать другую (обратную) задачу - выделить английские слова которые стартуют с нужных букв.
    И посчитать по регулярке количество найденных групп.
    Ответ написан
    3 комментария
  • Найти корни уравнения с помощью рекурсии. Возможно ли?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Поскольку любая итерация может быть переписана через рекурсию, то ответ - да.
    Ответ написан
    Комментировать
  • Как получить доступ к управлению воспроизведением неактивного окна?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Знакомая систуация. Обычно в видосах из серии "повторяй за мной" есть 80% просто набора текста. И этот текст можно набирать не в IDE а в любом редакторе типа Atom, Sublime e.t.c. А потом уже можно скопировать в IDE и все воспроизвести. А для удобной раскладки можно нажать "Windows" + Left Arrow и поставить редактор на пол экрана слева и потом "Win" + Right arrow и браузер разместить строго справа.

    Если это youtube - то там есть "скорость воспроизведения". Можно поставить 0.5 от реальной и тогда все будешь успевать.
    Ответ написан
    Комментировать
  • Как создать таблицу в excel файле посредством Java-кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Подключи в зависимости apache poi.
    Ответ написан
    Комментировать
  • Как в java выводить кириллицу?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    А так?

    printStream.printf("\u0423\u0440\u0430\u0432\u0435\u043d\u0438\u0435: %d * x + %d * x + %d = 0", a, b, c);
    Ответ написан
  • Как сделать подобное исключение в java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно в блоке catch проверить что содержит message. Это обычно текст в котором есть информация об ошибке
    и дальше разбирать этот текст и принимать решение.

    } catch(IndexOutOfBoundsException ex) {
        String message = ex.getMessage();
        ....
    }
    Ответ написан
    Комментировать
  • Вася вносит X руб.У него имеются номиналы:1,2,5,10,50,100,500. Сколько РАЗНЫХ купюр он отдаст,если начинает с больших? (как решить с помощью ДЕЛЕНИЯ?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ну если к примеру сумма - 1531 рубль то для таких номиналов {500, 100, 50, 10, 5, 2, 1}
    нет необходимости вычитать 500-тку три раза. Можно поделить 1531 на 500 и посмотреть
    целочисленное частное. Если оно больше 0 - то 500 тку можно было использовать.
    Далее - остаток от деления на 500 даст 31. И так далее.
    Ответ написан
  • Как сделать перебор пароля?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Первое. Непонятно при чем здесь swing.

    Второе, эти детские наивные алгоритмы будут работать против такого-же наивного сайта. Тоесть его можно обсуждать но непонятно как результат этой работы представить как нечто практически полезное.
    Ответ написан
    Комментировать
  • Как вставить метод внутрь метода самым простым способом?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В Java некрасиво получается если объявлять Function прямо в теле метода. Тебе проще инлайнить эту колбасу
    (a * x * x * x) + (b * x * x) + (c * x) + d
    Ответ написан
    Комментировать
  • Проблема с liquibase,выдает ошибку, что делать?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Предположительно он просто не находит liquibase-changelog.yml. Попробуй переложить его в другое место. Или изменить путь без classpath.
    Ответ написан
  • Приложение вылетает как исправить?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Вот тут приходит не String а другой тип.
    String msg=snapshot.getValue(String.class);
    Проверь.
    Ответ написан
  • Можно ли как-то улучшить и упростить этот код?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно начать с разложения d на простые числа (это про улучшение кода в смысле перформанса).

    Вот это выражение вычисляется дважды. Там просто x меняется с положительного на отрицательный.
    (a * x * x * x) + (b * x * x) + (c * x) + d;
    А частично расчитанные слагаемые мы теряем. И потом считаем их снова. Это дефект избыточных расчетов.
    Можно над этим подумать.

    По поводу упрощения кода. Тут надо решить что тебе надо. Краткий код. Или быстрый. Это два противоречия.
    Вспоминаем "кривую Шипилёва".
    Ответ написан
    Комментировать
  • Как массиве с повторяющимися нулями, перенести их вперед?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тут - задача на смекалку. Ничего перемещать не надо. Просто фильтуем ненулевые и накапливаем их. Ведем подсчет нулевых (k штук). И формируем новый массив как конкатенацию k нулей и накопленных.

    Очень похоже на сортировку подсчетом.
    Ответ написан
  • Как сравнить два списка с помощью хеш-кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Насколько я вижу хешкод нигде не хранится для ArrayList а расчитывается каждый раз. Поэтому твоя попытка срезать на повороте - скорее всего неудачна.

    int hashCodeRange(int from, int to) {
            final Object[] es = elementData;
            if (to > es.length) {
                throw new ConcurrentModificationException();
            }
            int hashCode = 1;
            for (int i = from; i < to; i++) {
                Object e = es[i];
                hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode());
            }
            return hashCode;
        }


    Используй метод equals. Это будет правильный ответ на собеседовании.
    Ответ написан
    Комментировать