Задать вопрос
Ответы пользователя по тегу Java
  • Как выбрать объекты на изображении по цветам?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе нужна функция цветовой дистанции между двумя цветами. Типа
    double getDistance(int rgb1, int rgb2) {
        ....
    }

    Формула будет похожа на взвешенную сумму цвета как ты писал выше. Только в цветах
    нужны будут разности r1 - r2 e.t.c. И взять декартово расстояние.

    Она будет возрващать от 0 до некоторого максимального вещественного. Если 0 - то цвета идентичны.

    Задаешь порог чувствительности например 5% и если цвета rgb1 и rgb2 близки - то соотв. считаешь
    что совпадение было. Сравнивать по знаку == цвета нельзя в фотографиях. Там очень редко
    бывает численное совпадение. Практически - никогда не бывает.
    Ответ написан
    6 комментариев
  • Как работает данный фрагмент кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    обязательно ли именовать пакеты в Java именно так "com.javastart.NAME"

    Их можно именовать как угодно. Просто если делать интеграцию твоего приложения с другими
    библиотеками то конфликтов имен можно избежать если всегда добавлять домен + твое имя.
    Это практически всегда уникально.
    Ответ написан
    Комментировать
  • Есть ли инструменты для отслеживание памяти для Spring?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Нет таких инструментов. Утечка памяти - неформализована в терминологии Java.

    Но ее последствия видны в виде невозможности освободить память в какой-то момент времени в runtime.
    Причиной может быть некий глобальный статический объект который хранит в себе коллекции других объектов.
    Но такое программирование не запрещено. Просто надо хотя-бы знать в лицо такие глобальные объекты. Обычно это сингтоны, бины. Поскольку они - вечные - то и GC убирать их не будет.

    На ранних этапах можно делать memory-dump вашего приложения и анализировать его через Eclipse Memory
    analyzer. Там в виде гистограммы публикуется использование памяти и количество объектов. Через него например
    я видел как по хамски себя ведет postgres JDBC драйвер во время выборки.
    Ответ написан
    2 комментария
  • Как ускорить процесс получения большого объема данных?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Сложно обсуждать перформанс-проблему без исходного кода.

    Я-бы предложил как всегда ударить кувалдой. Тоесть запустить по приложению JProfiler и просто посмотреть что он покажет. Проблемных мест может быть 3. Это чтение из базы. Второе это собственно проверки и валидации. Как они реализованы? Насколько качественно? И третье это собсно запись в БД. Используется ли JDBC-batch?

    SpringQuartz, cron, view здесь вообще непричем и их наличие только путает нас и вносит новые ненужные вопросы. Лучше решать проблему как одну java-функцию с входом и выходом.
    Ответ написан
    4 комментария
  • Компилятор выдаёт ошибку 1 при Выставление счета через QIWI. Что делать?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Автор попробуй поменяй версию com.qiwi.billpayments.sdk на более новую или более старую.
    Ответ написан
    Комментировать
  • Какой дистрибутив java выбрать для обучения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно брать последнюю с суффиксом LongTermSupport (LTS) но с условием что фреймворк тоже
    поддерживает эту версию. Например я тоже люблю топчик (JDK17) но вынужден кататься на
    более старой модели жигулей JDK11 только потому что нужные Spark/Hadoop иногда хотят
    именно старую версию.

    Для разработок в банковской среде очень многие enterprise приложения до сих пор (!)
    сидят на JDK-8 и очень мало вероятно что они когда-то переведут language на что-то более
    старшее. Поэтому весьма анекдотична ситуация когда вас собеседуют и спрашивают про
    модное-молодежное а когда приходите на рабочее место - с ужасом узнаете какой
    огромный парк легаси сред и языков вас будет сопровождать. Печаль-печаль.

    Вообще проблемы установки конкретного дистрибутива ощущают с болью в основном Windows-пользователи.
    Для Linux эта проблема не так заметна. Можешь поставить 3/11/17 LTS в разные фолдеры и переключать их просто меняя PATH/CLASSPATH для текущего сеанса консоли.

    Для приложений на базе контейнеризации (docker/kuber) - вообще такой проблемы не существует.
    Каждое приложение выбирает себе конкетную сборку JRE/JDK в конфигурации образа.
    Ответ написан
    Комментировать
  • Как можно практически закрепить знания JAVA SE?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Мне кажется ты слега перегрел себя. Что там оттачивать в Enum? Какой вопрос тебя могут спросить на собеседновании на джуна и на который ты не знаешь ответ.

    В твоей ситуации я был. Это похоже на усталость. Ничего не надо делать. Надо просто отдохнуть.
    Для систематизации-же заведи себе в гитхабе проектик типа FAQ. И складывай туда code-samples
    по каждому вопросу.
    Ответ написан
    Комментировать
  • Какую область программирования выбрать 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. И так далее.
    Ответ написан