Задать вопрос
  • Для чего нужна аннотация @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% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Как делать периодические запросы без Thread.sleep?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Самое простое - это один метод помеченный аннотацией @Scheduled и второй метод с аннотацией @Async. Первый срабатывает по расписанию и вызывает второй для каждого счётчика.
    Ответ написан
    Комментировать
  • Расскажите, что это за ошибка и как ее исправить?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Похоже, у вас версия java до 17 :

    ...
    
        /**
         * The modifier {@code sealed}
         * @since 17
         */
        SEALED,
    
    
    ...
    Ответ написан
    2 комментария
  • Как сделать, чтобы приложение Java с классом Robot работало в проекте STALCRAFT?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Очень легко.
    Пишете код, тестируете его, отлаживаете, исправляете ошибки.
    Обычно все работает.
    Ответ написан
    Комментировать
  • Как исправить долгое открытие формы предпросмотра чека в 1С?

    fosihas
    @fosihas
    Автоматизации учета на 1С.
    Отладчик в помощь.
    Ответ написан
    Комментировать
  • Онлайн-школа или личный ментор?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    На обучение денег не жалко, главное, чтобы был результат.


    Чтобы был результат, нужно тратить не деньги а ваши личные усилия и время. Только так.
    По разработке на любом языке, бесплатной, доступной информации просто валом. Она вся открыта, доступна, на гитхабах примеров готовых исходников просто лопатой не перекопать.

    Тем более, что вы уже делали какие-то попытки и начнете не с нуля.
    Пишешь много кода, парралельно читаешь что-нибудь системное (один учебник).
    И нет смысла искать самый-самый лучший. Ну вот вообще.
    Если бы был какой-то самый лучший учебник, он бы уже был единственным путем в мир разработчиков.
    А на деле - можно научиться разными способами.

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

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    Проблема в BorderLayout. Если стоит задача позиционировать компоненты произвольным образом, нужно обходиться без LayoutManager вовсе.
    Ответ написан
    Комментировать
  • Какой пет проект можно реализовать на Java?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Я не представляю как можно спрашиваьт у кого-то какой пет проект себе сделать.
    Все равно что спросиьт "каким хобби мне увлечься" и прослушать лекцию что ролики круче прыжков с парашютом, а настолки мастер оф гезеринг и Д&Д вообще разные вселенные.

    Придумайте себе тулзу/сайт/прогу, которая бы лично вам была интересна/полезна и развивайте ее.
    Когда-то таким пет-проектом был собственно линукс
    Ответ написан
    Комментировать
  • Как стать владельцем своего устройства?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    1. Убери эту хренову портянку под спойлер.
    2. Это называется root-доступ. Для его получения - на 4PDA, в тему телефона.
    3. Для получения рута в современных телефонах всегда нужен сброс к заводу для разлочки загрузчика. Разлочка загрузчика нужна, чтобы отключить проверку контрольных сумм разделов - иначе получишь кирпич. Если что-то пойдет не так - получишь кирпич. Если зашьешь не ту прошивку - получишь кирпич.

    (Для старых версий андроида была возможность зашить boot.img с патчем magisk, пока не начали сверять контрольные суммы)

    Сначала подумай - а оно тебе надо? Восстановить кирпич можно - через сервис. Самостоятельно в теории тоже - если иметь прямые руки, паяльник и умение делать все те вещи, которые придется найти в тырнете.
    Ответ написан
    Комментировать
  • Какой пет проект можно реализовать на Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Достаточно просто подумать "Чем я пользовался на этой неделе?", выбрать одно из существующих приложений и попытаться его повторить.
    Ответ написан
    2 комментария
  • Как установить чужое приложение после скачивания?

    Steel_Balls
    @Steel_Balls
    Это защита от вирусов на двух уровнях - 1. на уровне оболочки и2- на уровне самой системы Android.
    Нужно вручную давать разрешения для установки скачиваемых APK, подтверждать, что это не вирус, давать согласие на установку, запуск и запрет проверки на вирусы.
    Просто так тебе не получится твой вирус установить на устройство - пользователь должен намеренно это сделать сам.
    Однако, есть класс приложений, у которых есть практически все права - это MDM, такие как Citrix, AirWatch и другие
    https://mobidev.biz/blog/mobile-device-management-...
    https://www.apriorit.com/dev-blog/473-how-to-build...
    Возможно, нужно копать в этом направлении
    Ответ написан
    4 комментария
  • Как определелить ребёнка от второго брака?

    есть формат GEDCOM
    а впереди у вас ещё варианты приёмных детей, сирот и другие "прелести" генеалогических древ
    Ответ написан
    4 комментария
  • Как настроить AstraLinux?

    @Amigo83 Автор вопроса
    IT-шник
    Проблема решена обновлением драйвера в гипервизоре)
    Ответ написан
    Комментировать
  • Какие виды и специализации Java программистов бывают?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Основные направления тебе перечислили, немного дополню.
    - есть очень сложный и очень старый энтерпрайз, например, банки. Бывают написаны на очень старой Java, говорят, даже 5 встречается :) Охренеть какая сложная предметная область. Тебе могут дать задание написать или исправить класс, а ты вообще в душе не шаришь что это и зачем. И так всю жизнь :)
    - есть системы типа SAP, которые надо не писать, а адаптировать под конкретного заказчика типа Аэрофлота. Делается это путём прописывания логики работы уже готовой системы, а также написания своих плагинов, в т.ч. на Java.

    Ну а если тебе нужен универсальный совет, то вот он:
    - не знаешь что учить - учи Spring, вакансии не дадут соврать;
    - обязательно познакомься с SQL - чтобы понимать не только JPA, но и "голые" запросы и уметь хотя бы немного в их оптимизацию;
    - познакомься с фронтендом на базе фреймворка, самый популярный React, хотя бэкендерам лучше заходит Angular. Это позволит на практике понять как происходит взаимодействие бэк-фронт, ну и вообще - расширит сознание :)

    С таким стэком и (желательно) домашним проектом искать работу будет легче и веселее :)
    Удачи!
    Ответ написан
    1 комментарий
  • Почему возникает ошибка "parameter 1 of constructor in required a bean of type that could not be found."?

    Sergalas
    @Sergalas Автор вопроса
    Учусь
    Надо было создать конфигурационный фаил где прописать эти маперы в бины )))
    Ответ написан
    Комментировать
  • Можете посоветовать хорошие книги по tomcat и glassfish?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Что хотелось бы сказать.... 10 лет тому назад, на пике развития EJB/J2EE и прочих монстров корпоративного программирования, я бы посоветовал сотню книг.
    Но, увы, мир не стоит на месте. Сейчас бал правят моноприложения и микросервисы. Так что рекомендую начать со spring или sparkjava.
    И да, книги, особенно в переводах, устаревают уже на момент из выпуска. Так что лучше на английском, стандартной документации и статьях.
    Ответ написан
    Комментировать
  • Как обновлять библиотеки в микросервисах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, наличие общих библиотек у микросервисов - это антипаттерн. Впрочем, спорный. Во-вторых, обновление библиотеки не подразумевает необходимости обновлять её во всех микросервисах. Каждый микросервис может использовать разную версию библиотеки, если это не затрагивает их API.
    Ответ написан
  • Отличия между активизацией Клиентской и Серверной лицензии?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Серверную лицензию надо устанавливать на сервере, там где у вас запущен сервер 1С предприятия. Какую лицензию вы устанавливаете как серверную, понять очень просто, на ней написано, и она дороже клиентской. Клиентские лицензии бывают многопользовательские и однопользовательские:
    1. Многопользовательские устанавливаются на сервере, и сервер будет их раздавать на каждое подключение.
    2. Однопользовательские устанавливаются на клиентских компьютерах, и тогда лицензия будет действовать на любое количество сеансов, но только запущенных на этом компьютере. (поставить на сервер однопользовательскую лицензию и пользоваться толпой через терминальный доступ не выйдет, 1С об этом позаботилась)

    Вообще, для полной ясности в этом вопросе, ознакомьтесь с главой 10 "Защита от несанкционированного использования: особенности и настройка", руководства по администрированию, атуальная версия всегда доступна на сайте ИТС.
    Ответ написан
    2 комментария
  • Что делать, если я захожу на майнкрафт сервер и мне выдает эту ошибку?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    "An existing connection was forcibly closed by the remote host." переводится как "Существующее соединение было принудительно закрыто удаленным хостом."
    Это может означать, например, что сервер больше не работает, или вас на нем забанили.
    Ответ написан
    5 комментариев