Ответы пользователя по тегу Java
  • Как скачать файлы по URL?

    @Akela_wolf
    Extreme Programmer
    И первая же ссылка в поиске ведет на пример как это сделать
    Ответ написан
    2 комментария
  • Как заставить работать программу из курса алгоритмы в идея?

    @Akela_wolf
    Extreme Programmer
    Если хотите запустить именно через терминал, то нужно указывать параметр -cp в котором указать путь к библиотеке algs4.jar и прочим зависимостям.

    Настройки, которые в указали в IDEA работают только если вы запускаете проект средствами самой IDEA (зеленый треугольничек).
    Ответ написан
    5 комментариев
  • Как найти итоговые поступления каждого маршрута за 7 дней?

    @Akela_wolf
    Extreme Programmer
    1. Код нужно форматировать. Выкладывать такой код - неуважение к читающему его.
    2. А где у вас считается сумма? Я не вижу ни одного оператора сложения.
    count[i]=m[i]; - вот тут не должно ли быть +=?
    3. А где у вас инициализируется массив под сумму? int count[] = new int[10]; - упс... при каждой итерации цикла. Вынесите за пределы цикла и заполните его нулями.

    По идее этого достаточно чтобы ваша программа заработала как вы желаете.
    Ответ написан
  • Ошибка при работе со Spring Security. Как ее решить?

    @Akela_wolf
    Extreme Programmer
    Я step by step повторял за ютубером "Eugene Suleimanov"

    С какой целью вы это делали?
    я понятие не имею в чем причина

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

    @Akela_wolf
    Extreme Programmer
    Как это можно сделать вручную:
    1. Скопировать в буфер обмена
    2. Вставить сюда в режиме code (вверху). Либо использовать любой другой сервис, который умеет в JSON.
    3. Переключить режим на tree
    4. Готово

    Если же речь о том чтобы выводить уже раскодированные данные в консоли - то посмотрите этот ответ на stackoverflow. Там предложены несколько вариантов, выбирайте подходящий.
    Ответ написан
    2 комментария
  • Java Spring Boot MVC как сохранить несколько картинок относящихся к одному посту?

    @Akela_wolf
    Extreme Programmer
    final List<AdImage> imageList = new ArrayList<>();
    for (...) {
    ...
      final AdImage image = new AdImage(...); //Аналогично тому как вы создаете Ad
      imageList.add(image);
    ...
    }
    ad.setImages(imageList);


    Еще вопрос можно ли в в AdImages избавить от колонки id?

    Зачем от нее избавляться? Если убирать её - то что будет идентификатором изображения вместо нее?

    И еще момент: вы либо не выложили полный код ваших Entity, либо у Ad нет конструктора, который вы пытаетесь вызвать.
    Ответ написан
    1 комментарий
  • Как работать с SOAP в Spring?

    @Akela_wolf
    Extreme Programmer
    Чем вам не понравились первые две ссылки?
    Ответ написан
    Комментировать
  • Как реализовать compareTo() для обобщенных классов?

    @Akela_wolf
    Extreme Programmer
    Вы делаете класс Myset по сути оберткой над неким типом T и хотите чтобы Myset-ы можно было упорядочивать. Но при этом, вы не имеете никаких ограничений, касательно типа T. Что это вообще за тип? Какими свойствами обладает? Что такое сортировка, применительно к этим объектам?

    Мало того, вы не сказать чтобы корректно реализовали метод equals. Не помню такого контракта что он должен бросать NPE, но далее вы просто используете ссылочное равенство (то есть требуете чтобы this.data и obj.data были одним объектом). А если там, например, Integer?

    Тут я даже не знаю что можно предложить в плане сортировки. Сортировать по хэшкоду? Но там возможны коллизии. Тогда методы compareTo и equals могут войти в противоречие (compareTo скажет что объекты равны т.к. равны хэшкоды), а на самом деле они равны не будут. Это источник трудноотлавливаемых глюков.

    Выглядит так, что вы пытаетесь решить какую-то очень странную задачу. Хотелось бы понять подробнее - зачем вам все это надо?
    Ответ написан
    Комментировать
  • Разница между if else и try catch?

    @Akela_wolf
    Extreme Programmer
    Есть такой принцип: "если убрать все обработчики исключений, программа должна нормально функционировать при условии ввода корректных данных" (Д.Томас, Э.Хант "Программист-прагматик"). Поэтому вопрос - является ли введенный пользователем нуль корректными данными? Если да - то его надо оборачивать в if. Если же это некорректные с точки зрения программы данные - то можно кидать исключение.

    То есть исключение должно выбрасываться при поступлении на вход программы некорректных данных. А какие именно данные считать некорректными - это определяет разработчик (или заказчик) программы.
    Ответ написан
    5 комментариев
  • Как можно реализовать пагинацию в Java, в том случае, когда данные для фильтрации должны браться из двух разных микросервисов?

    @Akela_wolf
    Extreme Programmer
    1. Подумать - что это за странное разбиение на микросервисы, которые оперируют связанными данными? Возможно тут что-то не так (и сильно не так)
    2. Подумать - не стоит ли данные денормализовать и сдублировать данные о пользователе (или работе) в какой-то из двух микросервисов.
    3. Выгребать все данные без фильтрации и делать фильтрацию и пагинацию уже на сервисе-потребителе. Но тут все зависит от объема данных. Если там десятки-сотни мегабайт - это окажется очень грустно.

    Но лично я бы в первую очередь заподозрил необходимость рефакторинга. И, возможно, слияния этих микросервисов.
    Ответ написан
    Комментировать
  • Можно ли вынести 'basePackages=some.path' у @RestControllerAdvice в application.yml?

    @Akela_wolf
    Extreme Programmer
    То что лежит в библиотеке - не аннотируете.

    В проекте создаете класс - наследник и аннотируете.
    Либо вписываете в конфигурацию:
    @Bean
    @RestControllerAdvice(...)
    GlobalExceptionHandler exceptionHandler() { ... }
    Ответ написан
    Комментировать
  • Почему IDEA не видит класс Selenide именно в папке main > java?

    @Akela_wolf
    Extreme Programmer
    testImplementation

    И чему вы удивляетесь, когда у вас явно указано что selenide подключается только для тестов?
    Ответ написан
    Комментировать
  • Создать код для вычисления суммы элементов масива в двух отдельных потоках. Как разбить процес на два потока?

    @Akela_wolf
    Extreme Programmer
    MySumCount должен суммировать не весь массив, а от startIndex до endIndex
    MySumCount не должен выводить сумму, только записать её в поле resultSum

    Таким образом main:
    1. Создает массив и заполняет его числами (лучше предсказуемыми, чтобы легко было проверить что там насчиталось)
    2. Создает 2 экземпляра MySumCount, вызывает у них методы setArray, setStartIndex, setEndIndex
    3. Запускает оба потока (метод start)
    4. Ждет пока оба отработают (метод join)
    5. Вычитывает из обоих результат (getResultSum)
    6. Складывает, получает итоговую сумму в массиве и выводит её

    Вот простой пример с тредами:
    class Playground {
        static class Task extends Thread {
    
            public long delay = 1000;
            public int num = 0;
    
            @Override
            public void run() {
                System.out.println("Started " + num);
                try {
                    Thread.sleep(delay);
                } catch (InterruptedException ex) {
                    throw new RuntimeException(ex);
                }
                System.out.println("Finished " + num);
            }
        }
    
        public static void main(String[ ] args) throws InterruptedException {
            final Task t1 = new Task();
            t1.num = 1;
            t1.delay = 2000;
            final Task t2 = new Task();
            t2.num = 2;
            t1.start();
            t2.start();
            t1.join();
            t2.join();
            System.out.println("Completed");
        }
    }
    Ответ написан
  • Как решить вопрос ожидания в асинхронном программировании?

    @Akela_wolf
    Extreme Programmer
    Тут проблема не в асинхронном коде, а в том что обработка ваших данных занимает слишком много времени. Если бы у вас обработка данных была синхронной - была бы та же проблема.

    Таким образом, у вас 2 варианта:
    1. Увеличить таймаут на nginx (или кто там отвечает 502 Gateway timeout), чтобы он ждал ответа 10 минут. Пользователю при этом тоже придется ждать. На фронте в это время можно рисовать "крутилку" или запустить прямо в браузере тетрис :)
    2. Делать общение с фронтом асинхронным тоже. Пользователь загружает файл, файл уходит в обработку и фронту сразу же возвращается 200 OK + идентификатор задачи. Фронт с определенной периодичностью (10-30 секунд) опрашивает по идентификатору бэк "ну что, закончилась обработка?". И как только закончилась - бэк ему отдает итоговый файл. Пока обработка не закончилась - бэк может отдавать данные о количестве обработанных записей, что позволит фронту рисовать прогресс-бар, например.
    2а. Тоже самое что и в п.2, но уведомление о завершении задачи посылает бэк через WebSocket.
    Ответ написан
    Комментировать
  • Как добавить к Timestamp Integer?

    @Akela_wolf
    Extreme Programmer
    В Java (начиная с Java 8, когда была добавлена новая библиотека работы со временем java.time) классы даты и времени реализуют интерфейс Temporal. Полагаю что вам подойдет метод plus

    Например:
    final OffsetDateTime now = OffsetDateTime.now();
    final OffsetDateTime nowPlusTenMinutes = now.plus(10, ChronoUnit.MINUTES);
    Ответ написан
    Комментировать
  • Какой Exception лучше использовать в данном случае?

    @Akela_wolf
    Extreme Programmer
    java.lang.IllegalStateException
    Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.
    Ответ написан
    Комментировать
  • Почему ArrayList пустой?

    @Akela_wolf
    Extreme Programmer
    Так запрос же асинхронный. То есть вы его запускаете и говорите "вот когда данные придут - запиши их в список". И не дожидаясь пока запрос выполнится - возвращаете список (который, разумеется, пустой - запрос же еще в процессе выполнения).

    Поэтому, если уж вы начали использовать асинхронные запросы - надо жить в асинхронном мире дальше, везде протаскивая Mono и Flux.

    Либо переходить на Kotlin с его корутинами (которые прекрасно интегрируются с Mono/Flux)
    Ответ написан
    Комментировать
  • Как спарсить json?

    @Akela_wolf
    Extreme Programmer
    Насколько я вижу по структуре JSON у вас здесь List<Map<String, RegisterRequest>>
    Ответ написан
    Комментировать
  • Сервлеты, меняется язык только со второго нажатия по ссылке, почему?

    @Akela_wolf
    Extreme Programmer
    Ну так вы полностью правы. Как работает Cookie.
    1. Сервер отсылает заголовок Set-Cookie браузеру
    2. Вместе с заголовком сервер отсылает страницу.
    3. Получив заголовок Set-Cookie браузер сохраняет "печеньку" у себя.
    4. При следующем запросе страницы с этого сайта браузер к запросу присоединяет заголовок Cookie, в котором передает сохраненные "печеньки".
    5. В ответе сервер снова может прислать Set-Cookie, тогда будет добавлена или обновлена имеющаяся "печенька".

    Таким образом, в вашем случае достаточно не переходить по ссылке еще раз, а нажать F5 - язык переключится.

    Вообще, для решения вашей проблемы я бы брал язык из URL и только если его там нет - из "печеньки". Тогда переход на страницу с нужным языком переключал бы его сразу (так как значение в URL имеет приоритет) и сохранял в cookie для последующих запросов.
    Ответ написан
    Комментировать
  • Как расшифровать код?

    @Akela_wolf
    Extreme Programmer
    Это, видимо, не зашифрованный, а скомпилированный файл (.class), он же байт-код. Просто так его прочитать не получится.

    Можно попробовать декомпилятор (например jad). Но декомпилятор не восстановит исходных код полностью. И в сложном классе разобраться все равно будет проблематично. А если исходный код написан еще и не на Java, а на другом JVM-языке (Scala, Kotlin, Groovy и т.д.), то это добавит еще головной боли.
    Ответ написан
    1 комментарий