Java


Гео и язык канала: Россия, Русский
Категория: Технологии


Самая актуальная информация из мира Java
По всем вопросам- @haarrp
@itchannels_telegram - 🔥лучшие ит-каналы
@pythonl - 🐍
@ai_machinelearning_big_data- ml
@ArtificialIntelligencedl - AI
@datascienceiot - ml 📚
@pythonlbooks-📚

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


🖥 Полный гайд по алгоритмам сортировки на Java

В этой статье разбираются алгоритмы сортировки Java и примеры их реализации. В том числе выясняется, как выбрать подходящий алгоритм для конкретной задачи.
Особенно актуально для собеседующихся)

Квадратичная сложность — O(n²):
├╼ сортировка вставкой Java;
├╼ сортировка выбором Java;
╰╼ сортировка пузырьком Java.

Логарифмическая сложность — O(n log n):
├╼ сортировка слиянием Java;
├╼ пирамидальная сортировка Java;
├╼ быстрая сортировка Java;
╰╼ сортировка Шелла на Java.

O(n+K):
╰╼ сортировка подсчетом Java.

📎 Гайд

@javatg


Всё, что будет на митапе, останется на митапе 💥

24 апреля в 19:00 встречаемся на Alfa Backend Stories #3 в Москве и онлайн.

Обсудим ИИ и другие инструменты, которые помогают в написании кода:

Андрей Свиридов, ведущий разработчик, поделиться советами о том, как повысить качество кода в приложениях

Дмитрий Сошников, технический руководитель лаборатории генеративного ИИ Школы дизайна НИУ ВШЭ и консультант Yandex Cloud, расскажет о современном искусственном интеллекте в облаке и покажет, как YandexGPT может использоваться разработчиками для решения прикладных задач

Антон Гращенков, в режиме реального времени покажет, как локально установить и настроить ИИ, а также как с его помощью писать код

Обещаем не стирать вам память, если вы придёте в костюме, в образе агентов фильма «Люди в чёрном»

Регистрация

Еще больше полезного в комьюнити: @alfabackend

erid: LjN8Kbsmr
Реклама. АО «Альфа-Банк». ИНН 7728168971.


🖥 Юнит-тесты: чек-лист методик проектирования

⏩Держите полезную статью о тестах в Java и не только.
Основная идея заключается в том, чтобы не просто писать тесты, а максимально эффективно покрывать функциональность при минимуме написанных тестов. Главная помощь этих тестов будет заметна при рефакторинге приложения.

Что внутри?
• Проектирование тестов
• Методики проектирования
• Уровни тестов
• Эквивалентное разделение
• Анализ граничных значений
• Доменный анализ
• Тестовая комбинаторика

📎 Статья

@javatg


Хотите освоить Scala? Начните с простого Web-сервиса на ZIO: zio-http + zio + quill

Приходите на бесплатный практический урок от OTUS. Спикер Алексей Воронец — руководитель разработки  в «NAUMEN».

На примере построения простого веб-сервиса с REST API разберем основные компоненты (пути, бизнес логика, доступ к данным, документация) и посмотрим, как это можно реализовать в экосистеме ZIO.

Занятие пройдёт 22 апреля в 20:00 мск в рамках курса «Scala-разработчик». Доступна рассрочка на обучение!

Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/7ScQd/?erid=LjN8JwPPD


🖥 Как скомпилировать исходники Java вручную

Наш проект будет состоять всего из двух классов, причём один будет вызывать метод другого.

🟡Класс Greeter содержит метод sayHello(). Этот метод выводит приветствие на экран:
package ru.devmark.helper;

public class Greeter {
public void sayHello() {
System.out.println("Привет, мир!");
}
}

🟡Сохраним этот исходный код в текстовый файл, имя которого обязательно должно совпадать с именем класса, т.е. Greeter.java.
package ru.devmark;

import ru.devmark.helper.Greeter;

public class HelloWorld {
public static void main(String[] args) {
var greeter = new Greeter();
greeter.sayHello();
}
}
Сохраним исходный код этого класса в файле HelloWorld.java.

🟡Поскольку здесь есть статический метод main(), этот класс можно использовать как точку входа для нашего приложения (так называемый «Main-Class»). Внутри мы создаём экземпляр класса Greeter, вызываем его единственный метод и выводим результат на экран.

🟡Теперь мы готовы к тому, чтобы скомпилировать написанный нами код. Для этого используется утилита javac, которая поставляется вместе с jdk. Выполним эту команду в той папке, где лежат оба наших файла:
javac -d . *.java
Опция -d указывает, куда сложить скомпилированные файлы. В результате в нашей папке помимо исходников появится иерархическая структура папок и файлов:
├── Greeter.java
├── HelloWorld.java
└── ru
└── devmark
├── HelloWorld.class
└── helper
└── Greeter.class

🟡Но когда мы говорим о приложении, то ожидаем увидеть один файл, а не кучу папок. Давайте упакуем наши class-файлы в jar-архив. В этом нам поможет одноимённая утилита.
jar cfe hello.jar ru.devmark.HelloWorld ru
Опция c говорит, что нужно создать новый архив, f задаёт имя будущего архива, а e указывает полное имя main-класса. В конце указываем папку, в которой лежат все class-файлы.

📎 Читать подробнее
📎 YouTube

@javatg


🔥 Пройди тест по Java и проверь свои знания.

Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса

🔝 Обновленная, расширенная программа

👉  ПРОЙТИ ТЕСТ: https://otus.pw/RHms/?erid=LjN8KFp8X


🖥 Как работает этот код?

⏩А ты знаешь, что будет при запуске этого кода на Java?
for (byte i = 126; i


🖥 Хороший стиль обработки ошибок

Правильная и хорошая обработка ошибок — довольно важная часть в разработке. Но как это делать правильно?

⏩Когда делать RuntimeException, а когда просто Exception

⏩Единственен ли способ генерации ошибки оператором throw?

⏩В каких лучше случаях создать, допустим, MyException extends Exception, а затем MyOtherException extends MyException? Иными словами, как увидеть необходимость в иерархии ошибок?

⏩Когда делать примерно так:
public void f() throws MyException {
//некоторый код ...
if (....){
throw MyException(...);
}
}

⏩Какие еще есть способы генерации ошибок?

⏩Когда правильнее переносить ошибку на уровень функции (... f() throws ...)?


▶️Что ж, попробуем на это ответить.
Во-первых, используйте исключения. Создайте свою иерархию исключений и продумайте, какие из них сделать *runtime*, а какие нет. Никогда не используйте конструкции типа new Exception(...) или new RuntimeException. Вместо этого старайтесь создавать и кидать только адекватные ситуации исключения. Создание экземпляра Exception или RuntimeException — халтура и отписка вместо обработки ошибок.

Не забывайте проверять все параметры в конструкторах и, по возможности, в методах и своевременно кидать IllegalArgumentException. Пользуйтесь стандартными исключениями в соответствующих случаях. Используйте их по назначению и никогда не кидайте что попало.

Пользуйтесь try/catch/finally. Не забывайте уничтожать ресурсы.

Пользуйтесь логгерами, а не делайте e.printStackTrace. Никогда не делайте catch пустым, если только вы не уверены, что должны именно проигнорировать исключение.

При логгировании пользуйтесь по возможности полный метод log с уровнем логгирования, сообщением и исключением. Старайтесь в сообщении к логу описать, что именно упало и добавить какие-то сведения об условиях в блоке try. Это поможет выявить проблемы в боевых условиях. Старайтесь назначать адекватные уровни логгирования.

📎 Подробнее про обработку ошибок тут

@javatg


🖥 Настройка активного профиля и конфига в Spring Boot

⏩Итак, для быстрой установки указывайте профиль и путь к файлам конфигурации Spring Boot, используя следующие параметры:
Профили: --spring.profiles.active=имя_профиля
Путь к конфигурации: --spring.config.location=путь_к_конфигурации

Пример команды:
java -jar app.jar --spring.profiles.active=dev --spring.config.location=file:/config/
С помощью этой команды будет активирован профиль dev, а конфигурация загружена из указанного каталога.

Однако, командная строка Spring Boot предоставляет намного больше возможностей. Давайте рассмотрим это детальнее.


Понимание типов свойств и комбинирование профилей

Важно отделять системные свойства Java от свойств Spring по префиксам -D и -- соответственно. Параметры командной строки позволяют настраивать приложение Spring Boot при его запуске.
# Почему бы не воспользоваться преимуществами двух подходов?
java -Dspring.profiles.active=dev,qa -jar ваше_приложение.jar
Эта команда активирует одновременно профили dev и qa, что дает возможность объединить настройки из нескольких профилей, при условии что они разработаны для совместного использования.

📎 Читать подробнее

@javatg


Новосибирск, 25 апреля приглашаем на митап IT Talk by Sber для Java- и DevOps-разработчиков! 🤩

Мы собрали экспертов из разных команд и городов, чтобы рассказать о технологиях и инструментах, которые увеличивают эффективность работы разработчика и всей команды.

На митапе обсудим интересные темы:

👉 Советы для оптимизации сборки Java-проектов, практики CI и автоматизации сборки приложений.

👉 Что такое код с точки зрения законодательства, кому он принадлежит и какие есть права у автора кода?

👉 Инциденты в проме: что делать и не делать, чтобы устранить инцидент, и что на самом деле происходит, когда вы видите «Сервис недоступен, повторите операцию через 5 минут или позже»?

Встречаемся 25 апреля с 17:30 до 22:00 в лофте FoodFactory: Новосибирск, ул. Коммунистическая, 14.

Регистрируйтесь по ссылке!


🖥 Какие отличия между @NotEmpty, @NotBlank и @NotNull?

️В разных примерах Entity класса, по-разному валидируют поля:
@NotNull
@Size(min=3)
@Column(name = "login")
private String login;

@Email
@Size(min=6, max=80)
@NotBlank(message="{register.email.invalid}")
@Column(name = "email", unique=true)
private String email;

@Column(name = "first_name")
@NotEmpty(message = "Please provide your first name")
private String firstName;

@Column(name = "last_name")
@NotEmpty(message = "Please provide your last name")
private String lastName;

@Transient
private String password;
Но какие между ними различия и что следует использовать и в каких случаях?

А также если указана аннотация @Size(min=6, max=80) нужно ли дополнительно проверять с помощью @NotBlank или других аннотаций?


▶️Итак, ответ:

@NotBlank применяется только к строкам и проверяет, что строка не пуста.

@NotNull применяется к CharSequence, Collection, Map или Array и проверяет, что объект не равен null. Но при этом он может быть пуст.

@NotEmpty применяется к CharSequence, Collection, Map или Array и проверяет, что он не null имеет размер больше 0.

Аннотация @Size(min=6) пропустит строку состоящую из 6 пробелов и/или символов переноса строки, а @NotBlank не пропустит.

@javatg


🔥Подборка лучших обучающих каналов для программистов.

➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять

⚡Машинное обучение

Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети
Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат

🏆 Golang
Golang - изучи один из самых перспективных языков на ит-рынке
Golang собеседование - разбор задач и вопросов с собесов
Golang вакансии -работа для Go разработчика
Golang книги библиотека книг
Golang задачи и тесты
Golang чат
Golang news - новости из мира go
Golang дайджест

💥 Linux /Этичный хакинг
Linux Academy - гайды, секреты и лучшие материалы по Linux
Kali linux - погрузись в мир этичного хакинга и кибербезопасности
linux_kal - kali чат
Информационная безопасность

🚀 Data Science

Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data

🛢Базы данных
Sql базы данных - научим работе с базами данных профессионально
Библиотека баз данных
SQL чат
Вакансии Sql аналитик данных

#️⃣C#

С# академия - лучший канал по c#
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа

🐍 Python

Python/django - самый крупный обучающий канал по Python
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги

☕ Java

Java академия - java от Senior разработчика
Java вакансии
Java чат
Java вопросы с собеседований
Java книги

💻 C++

C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии

⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend

🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов

📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки

🇬🇧 Английский для программистов

🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence

🔥 DevOPs
Devops для программистов
Книги Devops

🌟 Docker/Kubernets
Docker
Kubernets

📓 Книги
Библиотеки Книг для программситов

💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
'https://t.me/addlist/2Ls-snqEeytkMDgy' rel='nofollow'>Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend


🖥 Гексагональная архитектура и микросервисы на Java

Держите наиполезнейший ролик, где автор делится своим пониманием этой архитектуры, которую кто-то знает как "Порты и адаптеры".
В процессе создаётся проект с использованием гексагональной архитектуры, демонстрируется создание модуля "Каталог" и его взаимодействие с внешним миром.
Создаются интерфейсы для входящих и исходящих портов, а также классы для реализации логики приложения.

План
• 00:01:34 Гексагональная архитектура
• 00:08:32 Применение гексагональной архитектуры
• 00:30:01 Разделение модуля на библиотеки
• 00:41:25 Разработка модульного монолита
• 01:08:57 Разработка микросервисов

🖥 Репозиторий GitHub
📎 YouTube

@javatg

2.8k 0 105 4 24

🧐 Приглашаем на вебинар «Дизайн Web API: Обзор парадигм проектирования интерфейсов» от Слёрм.

Дата и время: 19 апреля, 19:00 по МСК
Спикер: Вячеслав Гагарин, Senior Software Engineer в Retail Rocket

Интерфейс – это договор между заказчиком и исполнителем. В нашем случае – между клиентом и сервером. Как им договориться о взаимодействии? Какой набор согласованных правил, ограничений и принципов использовать, чтобы добиться определённых результатов и свойств разрабатываемой системы?

Об этом и многом другом узнаете уже 19 апреля.

О чем будем говорить на вебинаре:

➕ Обсудим REST и RPC подходы при проектировании WEB API;

➕ Поговорим про форматы ответов на запросы клиентов;

➕ Прикинем, что делать с длинными списками данных в ответе

➕ Зададимся вопросами «Зачем нужен паттерн Backend-For-Frontend и когда его используют».

➡️ Регистрируйтесь на вебинар по ссылке

Реклама ООО «Слёрм» ИНН 3652901451


🖥 Микросервисы — собеседование по Java. Разбор вопросов и ответов

🔥 Держите отличную подборку вопросов и ответов на позицию Java-разработчика. Большой акцент делается работе с микросервисами.
Всего здесь 114 вопросов, они есть простые/сложные, теоретические/практические, уверен найдёте здесь много полезного для себя

Вот, кстати, некоторые вопросы:
• Что такое сплоченность микросервисов?
• В чем разница между макетом и заглушкой?
• Что вы знаете о тестовой пирамиде Майка Кона?
• Какова цель Docker?
• Можем ли мы использовать микросервисы для создания конечных автоматов?
• Что такое Spring Cloud?
• Как решать сквозные проблемы, такие как безопасность, в архитектуре микросервисов?
• Что такое Netflix Feign? В чем его преимущества?
• Почему отладка так сложна в микросервисной архитектуре?

Пользуйтесь)
📎 Ссылка

@javatg


Хотите стать профессионалом в области разработки архитектуры ПО?

Тогда присоединяйтесь к нашему бесплатному вебинару «Взаимодействия на основе событийной модели»!

💻 Вебинар будет полезен для разработчиков и архитекторов, всего за 2 часа вы узнаете:
- как использовать события для асинхронного взаимодействия;
- какие это дает плюсы и минусы по сравнению с request-reply архитектурой;
- некоторые паттерны реализации систем с использованием событий.

📅 Занятие пройдёт 22 апреля в 19:00 мск в рамках набора на онлайн-курс «Software Architect». Спикер — опытный разработчик на С++, Java, Kotlin и Kafka. Для участников вебинара будет доступна специальная цена на обучение.

Зарегистрируйтесь, чтобы посетить открытый урок.


🖥 Для чего нужен модификатор transient?

▶️Каково назначение модификатора transient в Java?

▶️Чтобы ответить на этот вопрос, сперва вспомним ещё один термин.
Сериализация — это преобразование экземпляра класса в форму, пригодную для его сохранения (например в файл, в БД или для передачи по сети). Сериализованные объекты можно затем восстановить (десериализовать).

Свойства класса, помеченные модификатором transient, не сериализуются.

Обычно в таких полях хранится промежуточное состояние объекта, которое, к примеру, проще вычислить, чем сериализовать, а затем десериализовать. Другой пример такого поля — ссылка на экземпляр объекта, который не требует сериализации или не может быть сериализован.

@javatg


Есть опыт backend-разработки на Java? Приглашаем принять участие в создании революционно новой core banking платформы.

ГК «Иннотех» входит в один из крупнейших* ИТ-Холдингов России. С 2020 мы разрабатываем инновации для цифровизации финансового сектора 📈.

👨🏼‍💻 Вместе нам предстоит работать над масштабным проектом по импортозамещению: высоконагруженные системы, передовой технологический стек (Spring Boot, Quarkus, Kotlin) и микросервисная архитектура.

Необходимые скилы:

🔹опыт работы с java от 3 лет,
🔹разработка на Java с использованием технологий SpringFramework (Cloud, Boot, AOP), Hibernate,
🔹знание и опыт применения: Stream, Optional, Collections и др., подробнее – на сайте.

Что предлагаем:

🔹интересные задачи на развитие hard-скилов
🔹быстрый оффер и фаст-трек
🔹удалёнка, ДМС и бонусы
🔹развитая культура и профессиональная команда

В нашей команде уже 13 000+ ИТ-профессионалов, и мы продолжаем расти.

📩 Успей подать заявку до 30.04!

*По версии CNews Analytics 2022, TAdviser 2021 и RAEX 2023

Реклама. ООО "ГК "ИННОТЕХ". ИНН 9703073496.


🖥 Создание Javadoc на уровне пакета: package-info.java или package.html

⏩Для документирования пакетов в Java предпочтительнее использовать package-info.java, а не package.html. Это обусловлено поддержкой аннотаций в package-info.java, что дает большие возможности по интеграции с фреймворками и обеспечивает типобезопасность. Более того, создатели инструментов среды разработки чаще выбирают package-info.java из-за его консистентности и возможности включения тегов версий, таких как @since.

⏩А вот пример использования package-info.java:
/**
* Пакет, содержащий инструменты для апплетов и связующие интерфейсы.
* @since 1.2
*/
@FrameworkAnnotation
package com.example.applet;

import com.example.framework.FrameworkAnnotation;

📎 Подробнее

@javatg


JPoint 2024 — крупнейшая в России Java-конференция для опытных разработчиков.

Конференция будет проходить в течение трех дней: 17 апреля в онлайне и 24–25 апреля в Москве, с возможностью подключиться онлайн.

В программе доклады про архитектуру, фреймворки, языки, эксплуатацию, VM и Runtime. Лучшие практики Java-разработки, использование Spring Boot, работа JVM «под капотом», программирование на Kotlin и других JVM-языках, backend-архитектура и многое другое. Кроме докладов будут воркшопы, мастер-классы, интервью и круглые столы. В этом году будут выступать спикеры из Сбера, Яндекса, VK, Тинькофф, Huawei, Контур, Syntacore, Мир Plat.Form и OZON.

Билеты можно купить за счет компании. Для тех, кто покупает билеты сам, у нас есть промокод на скидку 10%: JAVATG

Реклама. ООО "Вайлдкард". ИНН 7801718607

Показано 20 последних публикаций.