Задать вопрос
Ответы пользователя по тегу Java
  • Как правильно создать БД в одном execute?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обычно БД создается во время процессов CD/CD через технологии liqubase/flyway.
    Таблицы тоже. В этом есть смысл потому что БД и таблицы это такие долго-живущие объекты
    и кроме того не лежащие в плоскости транзакций. Они - выше транзакций и их надо логически
    отделять от прочего java кода. А в java коде - оставить insert/update/delete.
    Ответ написан
    5 комментариев
  • Где найти org.hibernate.boot.MetadataSources jar file?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Подключай зависимости из проекта Hibernate отсюда https://mvnrepository.com/search?q=hibernate
    до тех пор пока зависимость не будет удовлетворена.
    Ответ написан
    Комментировать
  • Не выводится ничего в VS code на Java?

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

    System.out.println("Whatsup?");
    System.in.read();
    Ответ написан
    Комментировать
  • Как в переменную окружения CLASSPATH добавить сторонние классы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В каждой ide есть свои способы подключения артифактов. Я чаще использовал maven-based project.
    И чтоб добавить кастомную зависимость я ее устанавливал в локальный maven folder.

    $ mvn install:install-file ....

    И после этого библиотека была видна как group:artifact:version coordinates.
    Ответ написан
    3 комментария
  • Как лучше скопировать postgres таблицу из одной базы в другую, в Azure облаке?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Вот посмотри может это поможет https://www.postgresql.org/docs/current/dblink.html
    Ответ написан
    Комментировать
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Докину 5 коп.

    Я думаю что никто такую задачу вобщем-то не ставит. И никогда не поставит. Тут не то что Java
    а я прошу прощения Cobol не могут никак заменить. Языку - уде более 50 лет возраста.
    И хотя проблема касается в основном США, но это просто пример того что код живет очень долго.
    У джунов уже седые бороды отрасли :)

    Язык Rust вобщем-то создавалася как язых обще-системного программирования с правильным
    механизмом управления памятью. И уже если ему и где-то конкурировать - так это там где нужен
    отклик (игры или реал-тайм приложения).

    Сильные стороны Java сегодня - это большой репозитарий библиотек на все случаи жизни.
    Статистика по maven https://mvnrepository.com/ заявляет что 35 миллионов артифактов
    имеется в наличии. Можно наверное найти любой драйвер или парсер или любую
    либу поддержки сетевых протоколов. Большая часть из них проверена временем.
    Production ready. Можно ли говорить о production-ready для Rust - библиотек я не знаю.
    Пускай знающие отпишут.

    Java - машина с развитым рантаймом. Рефлексия позволяет делать позднее инстанциирование
    компонентов через конфиги. И этим очень сильно пользуются во фреймворках. Фактически
    если проводить сравнительные анализы Rust и Java - мы встанем перед дилеммой - чем заменить
    механику рефлексии в Rust? Создавать рантайм? Но это противоречит идеям системного программирования
    или все таки принять как факт что Spring и ему подобные фреймворки принципиально нельзя
    воспроизвести в языке статической компилляции таком как Rust.

    Если-бы я сравнивал этот язык (Rust) - то ставил бы ему в одну весовую категорию Nim, Zig и прочие
    языки "пост-плюсового" периода. И в качестве задач я-бы ставил - разработку игр и драйверов
    для операционок. Вот там и тестируйте.

    Самому финтеху не всегда нужен рилтайм. Иногда - даже вообще не нужен. В батч-джобах биг-даты
    и python нормально работает. Специфика своя там. А критичные части бигдаты (Apache Arrow, Databricks Photon)
    - и так переписаны на сях чтобы быстринько search + join работал. В стриминге биг-даты - тоже вобщем-то
    CPU не сильно критичен. Там и Node и C# тоже годится в качестве языков. Вобщем задачи - I/O bounded.
    Ответ написан
    1 комментарий
  • Как вызывать метод в Java определенное количество раз?

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

    Используй логгирование как здесь пишут https://developer.android.com/studio/debug/logcat чтобы подтвердить что твой метод действительно вызван 5 раз.
    Ответ написан
    Комментировать
  • Как оставить java.util.date в gmt0?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Для java11 имеет смысл отказаться от использования java.util.date в пользу java.time.LocalDate, java.time.ZonedDateTime. И использовать API из time для переводов локальных времен.
    Ответ написан
    Комментировать
  • Как элегантнее переопределить реализацию одного из методов интерфейса для отдельно взятого объекта?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я не понимаю что такое - "элегантно" в инженерном представлении. Это - ходить в смокинге с моноклем?
    В цилиндре с сигарой?

    Дружище Zolg. То что ты хочешь - противоречит принципам ООП. Если ты хочешь динамически
    передавать логику - то создай новый интерфейс который принимает лямбды и это и будет коробочным
    решением вопроса.
    Ответ написан
    Комментировать
  • Как подключиться к docker-контейнеру c PostgreSQL?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Кажется я так делал.
    docker network inspect .....

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

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

    Вообще тебя это не должно беспокоить. Это нормальный цикл работы управляемой памяти. Главное что в тот
    момент когда срабатывает System.gc память быстро очищается без переноса объектов в Survival.

    Сам процесс логгирования тоже можно писать оптимально или не оптимально. Покажи исходники и хабр посмотрит что там можно улучшить. Здесь разные логгеры log4j, log4-2 могут использовать разные механики для оптимизации.
    Ответ написан
    1 комментарий
  • Как в Reactor запускать параллельные запросы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В том виде как ты написал - это классическое задание на мультипточность.
    Убери Mono. Используй Thread, Runnable, start, join

    Реактор здесь не нужен или его использование не мотивировано.
    Ответ написан
    1 комментарий
  • Для чего нужна аннотация @Serializable в либах Java/Kotlin?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С точки зрения Java language, аннотации ничего не делают. Они - как каменты в коде. Но они могут быть подсказками для фреймворков которые в compile time, classloader или runtime могут что-то выполнить над кодом. 99%
    это какие-то ORM/JSon подказки которые разъясняют фреймворку что делать. Например @Table(name="emp")
    подсказка JPA то класс относится к таблице emp.

    Ваш вопрос про либы Java/Kotlin слишком общий. Ничего конкретного нельзя сказать. Но по отношению к
    Serializable, можно предположить что это гарантия что класс можно сериализовать во внешнюю память
    (оперативная или диск) и это не нарушит никакой бизнес логики. Например это DTO которая полностью
    самодостаточная. Не все сущности вообще реально сохранить. Некоторые сущности - как орграф опутывают
    всю память Java и сохранять их накладно. Как корневой объект хипа. Дешевле дампнуть всю память чем
    сохранять такие объекты поштучно. Некоторые - имеют связи с внешними ресурсами Files/Sockets и вне контекста они не имеют смысла. Есть ключевые слова языка (transient) которые запрещают сериализацию для полей.
    Есть также проблема версионности для Serializable. Сохраненная структура не трекает ваши изменения
    по коду уже после того как вы что-то сохранили. Грубо говоря это не JSON. Если вставили новое поле - можете
    старый файл и не прочитать. В качестве маркера проблемы там заводят специальное поле типа versionId или
    что-то такое. Просто для детектирования.

    Если вы хотите иметь тотальный контроль над сохранением - то определяйте Externalizable и там будут 2
    метода в которых вы контролируете Output/Input streams и сами пишете что сохранять и читать. А еще
    лучше брать библиотеки Kryo/Protobuf/Avro e.t.c. У них еще и есть оптимизации по скорости и по сжатию.
    Вы к этому придете эволюционным путем если будете писать систему где сохранение во вне - важно.

    Сериализация во внешнюю память это огромная проблема когда мы пытаемся подружить разные
    технологии (32-64 бит целые числа или разный порядок байт в машинном слове). Даже простое
    сохранение даты или строки может быть ошибочным если вы сохранили в Java а пытаетесь читать в C++.
    Нужна 100% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Несмотря на то что java/c++ формально являются ООП языками, многие вещи
    с перегрузкой у них реализованы по разному. В случае с методом sound в Java
    скорее всего будет создано просто 2 метода (разные сигнатуры).
    Ответ написан
  • Как я могу конвертировать число в символ?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    System.out.println((char)3);

    Так не надо делать. Это получение Unicode символа по коду 3.
    Оно сработает но с точки зрения code-review некрасиво и твоя команда
    будет тебя бить и чморить за такой способ кастинга.

    В java есть специальные литералы для работы с кодировками.
    Например для символа с кодом 3 (однобайтного типа ASCII)
    '\x03'
    Или например для кириллической буквы А в кодировке UTF-16
    '\u0430'
    Ответ написан
    3 комментария
  • Используем kafka + spring boot, периодически listener перестает получать сообщения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    На производительность кафки влияет 4 сущности. Конфиг брокера, продюсера, консюмера и message configuration.
    Очень сложно разбираться в том что у тебя происходит на основании такого странного теста. Скажи
    сколько времени ты ждал этого загадочного listener. Как ты ждал. В какой лог смотрел. Почему
    ты вообще решил что это проблема. Может продюсер ничего не производит. Короче дай картину
    происходящего более подробную.
    Ответ написан
    2 комментария
  • Как сделать, чтобы приложение Java с классом Robot работало в проекте STALCRAFT?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Поскольку в хабре нет тега майнкрафт и плагины - то мы можем обсуждать только Java.
    Давай код и лог с ошибками. Там уже по ходу жизни будем смотреть.
    Ответ написан
  • Как решить проблему ограничения кол-ва символов в SOLR?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Интересно. Вот тут пишут про похожий инцедент https://stackoverflow.com/questions/24019868/utf8-...
    Ответ написан
    Комментировать
  • Зачем использовать FileWriter?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ну если открыть описание API то там достаточно четко описано.

    Object
     +- Writer (Abstract class for writing to character streams.)
         +- OutputStreamWriter (An OutputStreamWriter is a bridge 
              |                 from character streams to byte streams)
              +- FileWriter (Writes text to character files using a default buffer size.)


    Последний - буферизированный.
    Ответ написан
    6 комментариев
  • "прикладной код Java" - это что?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В тексте вопроса написано много чепухи. Java может использовать внешнюю память. Кажется еще
    в Java 8 для Apache Ignite (и других NoSQL систем) были попытки использовать неуправлямую
    память через ByteBuffer. История где-то об этом сохранилась я думаю.

    Начиная с JDK-14 (могу ошибаться) завезли Foreign Memory API который оперирует с памятью
    более продвинуто.

    По поводу
    в Java не надо следить за памятью

    - неправда. Следить за памятью надо всегда. Иногда это делает разработчик (для С/C++)
    а иногда это делает GC или умные механизмы borrow-checker (Rust).
    Если не следить то долго работающие процессы пожирают всю память ОС
    до тех пор пока не будут убиты через ОС OOM killer. Возможно под слежением
    имелись в виду накладные расходы на работу GC? Но эта проблема специфична
    только для приложений которые активно делают new и переживают хотя-бы одну
    эпоху. Кроме того в Java есть несколько разных GC которые просто обнуляют
    все тезисы например 2000х годов и обсуждать их надо уже совсем как другие
    алгоритмы которые имеют другие свойства. Грубо говоря знания по GC очень
    сильно устарели после G1, Shennandoh e.t.c. Нужно учить заново всё.

    прикладной код Java - заменить на “прикладной код движка Java”

    Это вообще невозможно прокомментировать т.к. идет жонглирование терминами без
    определений. Что такое движок в данном случае - непонятно?

    В любом случае тебе надо звать в студию этого загадочного Романа и не плодить свои домыслы.
    Ответ написан
    2 комментария