Задать вопрос
Ответы пользователя по тегу Java
  • Почему иногда выходит ошибка java.awt.HeadlessException: null?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Headless - это специальный релиз Java который ставится на сервера где никогда не будет подключенного
    монитора. Виртуалки. Фиксится это наверное установкой правильног десктопного релиза на десктоп
    где все графические библитеки в наличии.

    Почему у тебя что-то рандомно выскакивает - это вопрос.
    Ответ написан
    1 комментарий
  • Как повторить curl запрос в java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Трудно сказать где ты ошибся. Наверное ты формируешь другой запрос отличный от culr-шаблона.

    Попробуй понаблюдать сетевой трафик через tcpdump/wireshark.

    И попробуй активировать DEBUG логгирование для библиотеки org.apache.hc.client5 (я думаю что ты ее используешь хотя по исходнику неочевидно). Попробуй в отладке посмотреть на MultipartEntityBuilder. Есть ли у него toString() ? И что там?
    Ответ написан
    Комментировать
  • Почему SpringBoot не видит ни одного моего бина?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    А попробуй так

    System.out.println(applicationContext.getBean(ConnectionPool.class));
    Ответ написан
    4 комментария
  • Почему не собиратеся сборка gradle?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Он же тебе предлагает запустить с --debug опцией. Запускай. Смотри. Сетевая ошибка может быть.
    Ответ написан
  • Error: unmappable character for encoding Cp1251 как исправить?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У тебя где-то идет преобразование из Unicode символов в символы кодировки cp1251 (только латиница и кириллица) и если попадается символ который ни то и не другое - то кодировщик не может его преобразовать. Решение - найти в конфигурации где у тебя идет использование cp1251 и заменить его на utf-8 или utf-16.
    Ответ написан
    Комментировать
  • Как превратить подстроку вида "min ( a, b )" в "a min b"?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Поскольку случай - очень простой, то он решается шаблоном. Но если вместо а или б может быть
    тоже выражение - тогда нужно определять свою грамматику. Например:
    min ( min(a,b) , min (c,d) )
    Тогда умные дядьки-теоретики берут язык описания грамматик. EBNF типа. И пытаются
    свой новояз описать в терминах например EBNF https://en.wikipedia.org/wiki/Extended_Backus%E2%8...
    Описывают что такое число. Какое оно. Отрицательное? Вещественное? Экспоентциальное?
    Короче надо описать вообще все что может быть. Описывают функцию минимума.
    Потом по этой грамматике создают парсер. Программно. И парсер на выходе выдает
    дерево. Где корень - это вся грамматика а на листиках будут висеть числа. Или терминалки не помню
    как они это называют. И вот когда ты уже получил это чортово дерево - можно ПРИСТУПАТЬ ко второй
    части задачи - а именно к транформации в инфиксную форму. Но ты сначала реализуй хотя-бы первую
    часть.

    Это все теория и она требует погружения. Я думаю что эта задача и ей подобные в частных случаях
    решаются проще. Если например твой язык поддерживает регулярки - то перечисли макс. число
    вариантов что будут на входе и выбери через матчинг подходящий. Это - быстрее.
    Ответ написан
    Комментировать
  • Это синтаксический сахар или есть какая-то существенная разница?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В Java Language Spec - Глава 10.2 https://docs.oracle.com/javase/specs/jls/se19/jls19.pdf
    Ответ написан
    Комментировать
  • Для чего нужна Java, что можно на ней конкретно написать и стоит ли вообще ее учить?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Согласно рейтингам tiobe и renmonk Java стабильно кувыркается где-то на 4 месте в рейтинге популярных языков разработки. Рейтинг Редмонка собирается из двух рейтов популярности (кажется количество вопросов в стековер и количество проектов на гитхабе. Ну или может как-то сложнее ХЗ).

    Первым трем местам в этом анализе я-бы не сильно доверял. Там постоянно идет ротация то JavaScript выскакиевает то C то Swift но ситуация каждый год - новая. Вот сейчас там висит Python... Наверное девопсы подсуетились. И сайентисты.

    В чем сила Java сегодня? Ну во первых в большом объеме легаси кода который уже написан и работает. Java сегодня занимает нишу COBOL в банках и финансовых организациях. И если вы хотите средний достаток, (машина дом, vacation) - то идите спокойно в java и будет кусок хлеба.

    Во вторых в толстом репозитарии бесплатных библиотек на все случаи жизни.
    Например я уже 2 года не пишу на Java ничего ради денег. Но в некоторых скриптах на Scala/Databricks я спокойно подключаю Java-библиотекие (всякие sftp клиенты, json/xml парсеры) и все это нормально интегрируется и работает. И слоган про wrote-once - это не шутка. Это правда работает и в доказательство - целый репозитарий таких либ на mvnrepository.com. Они будут совместимы c Kotlin/Groovy/Scala короче со всеми JVM-based языками.

    Лично я считаю Java как язык слишком многословным. Многие вещи можно короче запрограммировать. Но это просто моё ИМХО. При игры - ничего не скажу. Не знаю. Но вот на Kotlin что-то пишут под Андроид.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Как-то мне надо-было посмотреть какие зависимости использует реал-тайм одного бизнес-процесса.

    Я запускал логгирование действий класслоадера. И потом анализировал лог.

    $ java -verbose:class -jar application-1.0.jar
    Ответ написан
    5 комментариев
  • Какая из книг лучшая для изучения java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    подскажите одну книгу,которую буду читать и не жалеть о том что теряю время в пустую

    Просьба очень странная. Даже невозможно нормального ответить.
    Авторов обычно трое. Шилдт. Эккель. И Хорстман. Все пишут про Java. Примерно
    одно и тоже. Но поскольку ты очень занятой и тебе времени не хватает - то я тебе
    не советую читать ничего. Работай и задавай вопросы здесь. Когда появится желание
    читать - выбери жестко одну тему. Например рефлексия. И читай только про нее.
    Вот так.
    Ответ написан
    1 комментарий
  • Это Объектно-Ориентированный код?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Да это ООП код.
    Ответ написан
    Комментировать
  • Как вывести список подключенных библиотек к проекту?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Почти все современные среды разработки в дереве проекта (Project=>External libraries) показывают зависимости.
    Но успех мероприятия сильно зависит от того как проект создавался. Для maven-сборщика
    это точно работает. Для других - надо смотреть.
    Ответ написан
    1 комментарий
  • Если в API ArrayList поддерживает сериализацию, нужно в самом классе ставить implements Serializable?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обычно DAO не сериализируют. Вот Contact - можно.
    И DAO так не делают. Обычно DAO предоставляет доступ к источникам данных. К базе например.
    Но он не обязан ничего внутри себя хранить.
    Ответ написан
    Комментировать
  • Круговой массив java, как починить код?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    А моя программа выдает при n = 5 m = 4 путь: 15432

    Код работает как написано. Только ты зря завел переменную current. Без нее можно обойтись.
    Получается что ты шагаешь не через единичку а идешь длинными прыжками по модулю 5.
    И тебе кажется что идешь назад.
    for (int i = 0; i < n; i++) {
                System.out.print(arr[current]);
                current = (current + m) % n;
            }

    Я-бы переписал проще.
    for (int i = 0; i < n; i++) {
                System.out.print(arr[(i+ m) % n]);
            }
    Ответ написан
  • 1 или 2 сущности для регистрации?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Если они связаны 1:1 то соедини их в одну табличку и все.

    UPD: Автор если ты сомневаешся - то лучше не делай. На все технические вопросы тут ответят.
    Но риски - это дело твоё. Похлопывать тебя по плечу или давать санкции на авантюры - никто не будет.
    Если ты отвественный за БД и уверен в себе - то иди и делай.
    Ответ написан
    Комментировать
  • Как эффективно использовать HQL при запросах сущностей с множеством связей?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У меня - сходу замечание по твоему стилю. Зачем ты переменную card переписываешь? Это сбивает с толку.
    List<Card> cards = .....
    
    cards = entityManager

    Нельзя одну переменную брать в двух ипостасях. Сэкономил в одном - проиграл в читаемости.

    Второе я думаю что эта задача прекрасно решается одним SQL-запросом. Так было в продуктовых системах с 2000х годов когда еще не было этих ваших ORM/Hibernate. И все нормально работало. Поэтому делай все одним запросом. Не думай о накладных расходах в базе. Мой опыт показывает что база - лучше справляется когда выбирает все данные сразу одним курсором (запросом).

    А игры с Lazy-Eager которые придумали в ORM решают проблемый самого ORM и ApplicationServer а базе они вобщем-то не нужны.

    Если ты собрался глубоко заняться оптимизацией - посмотри лекцию Алименкова особенно в части трассировки Hibernate запросов. Собери цифры. Сколько карточек на 1 акк в среднем? 1 или 10 или 1000? Сколько транзакций на акк? Это все влияет на смыслы оптимизаций.
    Ответ написан
    6 комментариев
  • В каком порядке изучать Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обычно звание джуниора ты получаешь после прохождения собеседования. Тебя должны градуировать специалисты которые уровнем выше. Вот. А чтоб быть готовым к собеседованию я советую купить платный курс Java-junior. Благо курсов щас много. И я не рекламирую курсы, не имею отношения к ним вообще. Но плата - будет хорошим мотиватором чтоб учится.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В полной мере union-типы реализованы в Scala. Поэтому тебе надо сменить язык чтобы работать
    на таком уровне выразительности своей идеи.

    Например вот функция которая конвертит дату-время для строки или для лонг-типа.
    def convertTime(time : String | Long) : String = 
      ....


    В Java есть вариант - передать базовый типп Object и в теле функции проверять instanceOf и делать
    соотв. conditions или паттерн матчинг по типу.
    String convert(Object object) {
       ......
    }

    Вобщем все варианты требуют явного перечисления логики которую ты хочешь сделать.

    Или ты хотел как-то "схитрить" и не писать логику?
    Ответ написан
    Комментировать
  • Где и как подтянуть теорию по некоторым темам Java Core?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    По Multithreading
    "Что выведет следующий фрагмент кода"

    Это - самый плохой класс задач на мультипоточку. Я видел много таких. Большинство из них основаны на Race Conditions и бывало и такое что негативный эффект не воспроизводится хотя и ожидается в задаче. А не воспроизводится по тесяче причин. По другой операционке или по другой версии JDK/JRE. Вобщем что
    выведет код
    нужно выкинуть и заменить его на какой-то модульный тест да и еще и под нагрузкой. И беря
    во внимание комплексность самого вопроса я-бы не стал такое выводить например в собеседования. Так
    можно и мидла макнуть головой в сортир. Попробуйте распознать в коде например задачу обедающих
    философов. Я готов спорить на коньяк что если вы никогда не слыхали - то не распознаете подвох.

    Где и как подтянуть теорию Multithreading(М). Ответ - нигде. Самый лучший вариант - начать писать много кода
    с мультипоточкой и наблюдать. Очень многие эффекты книги не объясняют. И 99% новичек нигде не прочитает
    про разницу между использованием synchronized и atomic.

    Вобщем берите код с нагрузкой и наблюдайте.
    Ответ написан
    2 комментария
  • Spring boot 2.7+Tomcat9+.war: как вынести зависимости WEB-INF/lib в отдельный пакет?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе проще всего разбить своей проект на 2 проекта. Первое это нужные jar-библиотеки log4j, postgres jdbc, jackson и сделать просто упаковку их в один артифакт. И второе - это основной код который зависит от этих библиотек.

    Связь между проектами можно организовать через maven repository.
    Ответ написан
    Комментировать