Ответы пользователя по тегу Java
  • Почему пропускатеся return в одном из методов Enum-класса?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Предположительно идет на вход не та кодировка. Попробуй заменить на "male" / "female" и все будет ОК
    Ответ написан
    Комментировать
  • Какая зависимость в Java приложении к подключению БД?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    1. Java (JDK/JRE) не содержит в себе драйверов доступа к БД вообще. В ней определен только базовый
    интерфейс java.sql.* и существует некий стандарт на то как драйверы должны работать. Например когда мы делаем ResultSet::close, или Statement::close, драйвер может ничего и не делать в этот момент. Все зависит от того
    как производитель (Oracle, MSSQL) реализовал под капотом работу драйвера. Поэтому как работает внутри драйвер это - тайна.

    2. Обычно если в приложении тебе часто и много нужно создавать объектов Connection, то используют пулы коннектов (Hikari Connection pool, DBCP, C3PO). Почитай в этом направлении. Пулы экономят сессионные
    объекты на стороне БД и создают новые коннекты быстрее за счет переиспользования сущесвтующих коннектов.
    В обычном (прямом режиме) работы с БД процесс установки соединения может занимать несколько секунд.
    Это может быть запредельно медленно для некоторых алгоритмов.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Переключение функционала с одного на другой обеспечивается с помощью ООП шаблонов
    например RCWP (Replace Condition With Polymorphism).

    А если нужно на ходу обновлять версию - то посмотри в документацию по ClassLoader и почитай
    еще про технологию OSGI.
    Ответ написан
    Комментировать
  • Java. Преобразователь артефакта. Как очистить проект от module-info.class?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    На самом последнем stage (я думаю gradle это позволяет) тебе надо просто добавить еще один
    шаг - очистка артифакта от Java9 modules. Я-бы это сделал в простом случае просто распаковкой
    артифакта во временный фолдер. Удалением файлов модулей и упаковкой обратно.

    Что то вроде.
    jar x .... -d target/temp  
    find -type f -name module-info.class -delete
    jar c ....
    Ответ написан
    6 комментариев
  • Как компилировать jar в exe?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Есть проект GraalVM. В нет большая часть этих задач решена. И я для себя делал утилиты на java которые
    работают в data pipelines. Но проект GraalVM имеет спектр ограничений. Почитай. Возможно не любой
    код он сможет правильно собрать.

    Использовали мы также graal для сборки AWS Lambda. Но это был сложный опыт. Я никому не советую повторять.

    И вообще еесли цель - десктоп и графика то я не советую это делать. Просто сам по себе экзешник еще не гарантирует что все у тебя будет работать.

    Короче это не панацея.
    Ответ написан
    1 комментарий
  • Как генерировать случайное число типа double с двумя символами после запятой?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно генерить случайное целое число с запасом в 2 разряда. А потом кастить в double и делить на 100.

    Но ты должен помнить что double - это сложный формат и он не мапится на десятичную систему 1:1
    Обычно многие это забывают и ловят артефакты.
    Ответ написан
    Комментировать
  • Как отвечать на данные вопросы на собеседовании?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Почему Map не реализует интерфейс Collection? Я сказал что у Collection сигнатура методов не подходит для мапы, на что получил еще один вопрос "Так почему бы, например, вместо put(key, value) не использовать add(new Entry(key, value))?

    Я не знаю кто-ж такие вопросы задает. Это вобщем не инженерные а философские вопросы.
    Можно предположить что добавление в Map - возвращает булевый результат. И мы
    по логике правильного программирование не имеем права его игнорировать.

    Про отпуск - вообще непонятно. Ну скажи дексыть всегда готов. Когда выходить. Нужна сменка? Флюрография?
    Ответ написан
    Комментировать
  • Как POJO влияет на производительность приложения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Сделай listDataRu, listDataEng синглтоном и ничего не будет нагружать.
    Ответ написан
    3 комментария
  • Как сделать методы класса доступными только для одного класса?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Когда тебе хочется странного, то нужно заново пересмотреть дизайн этого UserService и DAO
    с точки зрения SOLID. Если этот DAO нигде не существует то может быть он вообще не нужен
    как сущность. Сделай композицию или рефакторинг чтобы у тебя был только UserService.
    Ответ написан
  • Как правильно создать БД в одном 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-шники внутри той сети в которой ты стартовал контейнер. Вот туда и подключайся.
    Только в параметрах старта контейнера тебе надо имя этой сети указать.
    Ответ написан