Библиотека Java разработчика
前往频道在 Telegram
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
显示更多9 988
订阅者
无数据24 小时
-157 天
-5830 天
帖子存档
Когда стоит выбрать char[] вместо String?
Первая, очевидная причина – оптимизация. Если вам заранее известен размер строки, и он фиксирован, может быть полезно выбрать массив. Если программа работает с неизменяемыми подстроками, удобно представить их в виде offset-ов общего массива.
Следует помнить, что оптимизировать нужно осознанно и своевременно. JVM тоже прикладывает усилия по оптимизации строк, которые могут оказаться эффективнее ваших.
Вторая, менее очевидная причина – безопасность. Строки в Java иммутабельны. Это значит, что когда вы сохраняете пароль в объекте типа String, физически уничтожить его из памяти может только сборщик мусора.
Существует способ алгоритмической атаки на систему, когда хакер своими действиями вызывает переполнение памяти, и конфиденциальная информация попадает в heap dump.
Если пароль хранится в массиве, программист может самостоятельно «занулить» значение после использования.
👉@BookJava
Привет! На связи организатор IT-конференций по разным направлениям разработки Podlodka Crew.
♨️ Приглашаем посетить третий сезон Podlodka Java Crew. Окунёмся в масштабную и важную для каждого Java-разработчика тему «Работа с базой данных» и рассмотрим её со всех возможных сторон. Ведь какой бэкенд без SQL?
В этом сезоне вас ждёт много дискуссий, мнений и нетворкинга. В программе не только технические доклады, но ещё и два публичных собеседования, воркшопы и круглый стол:
🔸 Поговорим про паттерны обработки данных - стриминг, батчи, cdc;
🔸 Узнаем, как не наступить на грабли сочетая Debezium с Postgres;
🔸 Разберёмся в тонкостях CRUD-сервисов: Spring, Jooq, PostgreSQL, Liquibase, Testcontainers
🔸 Сравним использование NoSQL и SQL баз данных на конкретных примерах.
🤓 А ещё в программе — традиционный бар на тему «Интеграция через базу — не антипаттерн» — обсудим и поделимся опытом.
🤑 Для ранних пташек — низкие цены! Посмотреть программу и купить билет со скидкой можно на сайте: https://podlodka.io/javacrew
Прожарка java.lang.String
Давайте абьюзить баг в java.lang.String, который позволит делать очень странные строки. Мы сделаем "Hello World", который не начинается с "Hello" и покажем, что не все пустые строки равны между собой. Научимся прожаривать строки в чужих классах.
Rus https://habr.com/ru/companies/bar/articles/747528/
Eng https://wouter.coekaerts.be/2023/breaking-string
👉@BookJava
Автомобиль HAVAL F7x от 2 449 000 руб только в октябре
Автономная парковка, мультимедиа 12,3", обновленный интерьер
Узнать больше
#реклама
haval.ru
О рекламодателе
Опишите синтаксис javadoc-комментария
Javadoc-комментарии к классам и их членам заключаются между /** и */. С точки зрения синтаксиса Java это обычные многострочные комментарии, но вторая * позволяет различным инструментам воспринимать их как документацию API. Изначально для этого использовалась стандартная утилита javadoc, которая генерировала HTML-документацию, сейчас джавадок активно используется прямо в IDE.
До Java 1.4 каждая строка комментария обязана была начинаться со *. Сейчас это требование необязательное, но следовать ему всё ещё принято.
Первое предложение комментария принимается в качестве заголовка описания элемента. В HTML именно оно попадает на страницу индекса. Предложение заканчивается точкой с последующим разделительным символом.
В javadoc разрешено использовать HTML-теги. Фрагменты кода рекомендуется обрамлять тегом <code>, для списка с буллетами применяется <ul>, параграфы отделяются <p>. В документации библиотеки Reactor активно используются <img> с диаграммами.
Комментарий состоит из двух частей: описание и блок тегов. Первый блок содержит всю информацию в свободной форме. Во втором находятся теги. Каждый тег начинается с новой строки, через пробел за ним следует значение.
Один тег можно использовать в блоке описания –
@link. Он не обязан быть на новой строке, обрамляется фигурными скобками, и при рендеринге превращается в <a> со ссылкой на другую страницу документации.
Среди всех тегов обязательными считаются только @param для каждого параметра метода, и @return для не-void методов. Они применимы только для методов. А теги @author и @version наоборот, используются только в документации классов. Остальные блочные теги можно использовать везде:
• @deprecated
• @exception (то же что @throws)
• @see
• @since
• @serial (то же что @serialField или @serialData)
Теги @author, @param, @throws и @see могут входить в один комментарий в нескольких экземплярах.
👉@BookJavaПрофессия Геймдизайнер с 0 до PRO
Вы освоите принципы геймдизайна и научитесь работать с популярными движками Unity и Unreal Engine. Узнаете, как удерживать интерес игроков и монетизировать игры. А мы поможем вам начать карьеру в игровой индустрии!
Узнать больше
#реклама 16+
skillbox.ru
О рекламодателе
Под каким типом хранить период времени?
В стандартной библиотеке современных версий Java для этих целей есть два класса:
Period – календарный период. Количество дней, месяцев и лет. Одним днем здесь считается день в терминах ZonedDateTime.
Duration – длительность времени. Количество наносекунд, секунд, минут, часов, и тоже дней. Здесь один день – ровно 24 часа.
Оба класса реализуют общий интерфейс TemporalAmount – период времени вообще. Оба иммутабельны, и как следствие, потокобезопасны. Любая модифицирующая операция вроде plusX() возвращает новый экземпляр с измененным значением.
Экземпляры обоих классов могут быть созданы из значений отдельных компонентов, из двух моментов времени методом between, или из строки. Строковое представление Duration: "P2DT3H4M", Period: "P1Y2M3D".
До Java 8 основным способом хранения периода были числовые примитивы. В этом подходе есть много недостатков, среди которых в первую очередь неограниченность значений и ненаглядность. Чтобы в Java 8+ получить период числом, используется метод between() нужного элемента енама ChronoUnit.
👉@BookJavaКурс: Профессия бухгалтер. Учитесь бесплатно!
- Оставьте заявку, и мы откроем доступ к первым 3 модулям курса!
- Бесплатный доступ к 1С для практики с опытным бухгалтером.
- Гарантируем трудоустройство - или вернём деньги!
Узнать больше
#реклама 16+
skillbox.ru
О рекламодателе
Как работает инъекция прототипа в синглтон?
Допустим ситуацию, когда в singleton-компонент внедряется зависимость со скоупом prototype – когда будет создан её объект?
Если просто добавить к определению бина аннотацию
@Scope(SCOPE_PROTOTYPE), и использовать этот бин в синглтоне через аннотацию @Autowired – будет создан только один объект. Потому что синглтон создается только однажды, и обращение к прототипу случится тоже однажды при его создании (при внедрении зависимости).
Примитивный способ получать новый объект при каждом обращении – отказаться от @Autowired, и доставать его из контекста вручную. Для этого нужно вызывать context.getBean(MyPrototype.class).
Воспользоваться автоматическим внедрением зависимостей можно через внедрение метода (паттерн «Команда»). Автовайрится не сам объект, а производящий его метод.
Более красивый декларативный способ – правильно настроить определение бина. В аннотации @Scope кроме самого scopeName доступен второй параметр – proxyMode. По умолчанию его значение NO – прокси не создается. Но если указать INTERFACES или TARGET_CLASS, то под @Autowired будет внедряться не сам объект, а сгенерированный фреймворком прокси. И когда проксируемый бин имеет скоуп prototype, то объект внутри прокси будет пересоздаваться при каждом обращении.
Лучший способ разобраться со скоупами – прочитать официальный гайд с иллюстрациями, и поэкспериментировать на практике. Для начала попробуйте пример с изображения ниже.
👉@BookJava👋Бэкендер, пора расти!
👉Узнайте как на бесплатном вебинаре онлайн-курса «Clojure Developer» — «Особенности Clojure: сфера разработки, основные фишки языка»: регистрация
На бесплатном вебинаре мы:
— рассмотрим, с какими задачами сталкиваются разработчики Clojure и какие основные особенности отличают его от других бэкендовых языков.
— обсудим преимущества, которые предлагает Clojure по сравнению с другими языками.
— изучим, какие возможности и перспективы он предлагает для разработчиков.
Экспертизой поделится руководитель программы и практик Сергей Ткаченко (Clojure Software developer / Team Lead).
🔥После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Что такое JDBC-драйвер? Какие бывают типы?
JDBC – Java DataBase Connectivity – соединение с базами данных на Java. Это стандарт взаимодействия с БД. Его интерфейс поставляется в стандартной JDK в виде пакета java.sql. Какой бы библиотекой для работы с базой данных вы ни пользовались, в ее основе почти всегда лежит низкоуровневый JDBC.
JDBC-драйвер – реализация JDBC для определенной базы данных. В приложении может быть зарегистрировано несколько разных драйверов. При соединении к базе, нужный выбирается исходя из URL соединения. Драйверы делятся на 4 типа:
Тип 1 – JDBC-ODBC мост. Делегирует работу с базой установленному в системе ODBC-драйверу. Платформозависимый. Не поддерживается с Java 8.
Тип 2 – Native API. Делегирует работу с базой библиотеке, установленной в системе. Платформозависимый. Библиотеки в отличие от ODBC специфичны для конкретной базы, поэтому такой драйвер обычно работает быстрее.
Тип 3 – драйвер сетевого протокола. Работает с промежуточным слоем (JavaEE сервером приложений), который транслирует запросы в сетевой протокол, с которым работает конкретная БД. Такой драйвер полностью реализован на Java.
Тип 4 – драйвер протокола БД/тонкий драйвер. Полная реализация протокола взаимодействия с базой данных. Отличается от типа 3 тем, что здесь логика протокола находится не на внешнем промежуточном слое, а прямо в самом драйвере.
👉@BookJava
Бухгалтеру: глобальные новшества. Что вскрылось во 2 кв.
Какие изменения ждут бухгалтеров в работе в 2023 году?
Снова меняем работу бухгалтера! Программа вебинара:
1. Единый налоговый счет: снова корректируем работу и учитываем ошибки начала года/
- Разбор практической схемы работы с ЕНС и ЕНП
- Новые правила сверки по ЕНС: 3 справки и 1 акт, которых раньше не было!
2. Глобальные новшества по НДФЛ: в чем запутались все бухгалтеры?
- Нужно удерживать НДФЛ при выплате аванса!
- По НДФЛ применяются "условные месяцы" (периоды) удержания налога
3. Страховые взносы - 2023: что с тарифами, сроками и отчетностью?
- 8 глобальных новшеств по взносам с 2023
- Как скорректировать работу из-за единых тарифов взносов?
Этот вебинар бесплатный.
Если Вы - бухгалтер малого бизнеса, обязательно регистрируйтесь и приходите!
Зарегистрироваться
#реклама 16+
aab1d2.creatium.site
О рекламодателе
Java Collections Framework. Вопросы для собеседования
https://github.com/enhorse/java-interview/blob/master/jcf.md
👉@BookJava
Откройте ИП в Тинькофф
Онлайн и полностью бесплатно.
Откроем счет после регистрации и подарим 4 месяца бесплатного обслуживания.
И это ещё не всё! Получите до 500 000 ₽ бонусами на сервисы наших партнеров, а мы сами подготовим и отправим документы в налоговую по месту прописки.
Узнать больше
#реклама
tinkoff.ru
О рекламодателе
А вам уже пришло письмо из Хогвратса?
Не расстраивайтесь, если нет! Обучиться искусству волшебства вы сможете прямо из дома в Магической Битве на Яндекс Играх
Играть
#реклама 16+
yandex.ru
О рекламодателе
150 вопросов и ответов на собеседовании по Java
В следующих разделах мы рассмотрим вопросы Java-собеседования, касающиеся объектно-ориентированного программирования и его особенностей, общие вопросы по Java и ее функциональности, коллекций в Java, сборщиков мусора, обработки исключений, Java-апплетов, Swing, JDBC, Remote Method Invocation (RMI), сервлетов и JSP.
https://www.javacodegeeks.com/java-interview-questions.html
👉@BookJava
Курс Тестировщик ПО. Трудоустройство через 4 месяца!
Профессия Тестировщик идеально подходит новичкам. Неважно, какой у вас уровень. Главное — начать!
Этот курс для вас, если:
- Вы хотите с нуля освоить востребованную IT-профессию, но не готовы тратить годы на обучение.
- Вы не знаете, какое направление выбрать, и волнуетесь, что ошибётесь с курсом.
- Вы не до конца уверены в своих силах и сомневаетесь, что сможете попасть в IT без опыта.
- Вам не хватает мотивации, чтобы начать.
Трудоустроим или вернём деньги!
Вас ждёт индивидуальная поддержка HR-специалиста. Вместе вы составите резюме, подготовите портфолио и разработаете карьерный план, который поможет найти работу быстрее. Сможете выбрать привлекательные вакансии и получите приоритет перед другими соискателями.
Подать заявку
#реклама 16+
skillbox.ru
О рекламодателе
SOLID -- Это Просто! Принципы ООП (Объектно Ориентированного Программирования)
https://habr.com/ru/companies/productivity_inside/articles/505430/
источник
👉@BookJava
Курсы Моушн-дизайна со стажировкой в IT-компаниях!
Научитесь с нуля создавать моушн-графику для брендов, рекламы, IT-продуктов, кино и видеоигр.
Освоите инструменты для работы с 2D и 3D: After Effects, Cinema 4D, Redshift, Houdini FX и Unreal Engine 5
Преподаватели — ведущие дизайнеры российских и зарубежных CG-студий
Школа дизайна и технологий Bang Bang Education
Попробовать
#реклама
bangbangeducation.ru
О рекламодателе
