Java библиотека – Telegram
Java библиотека
31.5K subscribers
2.38K photos
91 videos
10 files
2.19K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
FileChannel

FileChannel используется для работы с файлами на низкоуровневом вводе-выводе.

Основные возможности класса FileChannel:
— Чтение данных из файла и запись данных в файл.
— Работа с файлом по смещениям. Можно получить текущее смещение в файле, переместить указатель чтения/записи в нужное смещение.
— Маппинг файлов в память. Файл можно отобразить в память и работать с его содержимым как с массивом байтов.
— Блокировка частей файла. Позволяет защитить критические участки файла от одновременной записи.
— Асинхронная работа с файлами.

FileChannel эффективнее потокового ввода-вывода, т. к. избавляет от накладных расходов на создание объектов и буферизацию.
Используется в приложениях, где нужна высокая производительность работы с файлами.


@javalib #java
9👍6🔥6
Паттерн Цепочка обязанностей (Chain of Responsibility)

Chain of Responsibility — это поведенческий паттерн, который позволяет передавать запросы по цепочке обработчиков, пока один из них не обработает запрос. Каждый обработчик в цепочке решает, может ли он обработать запрос или передать его следующему по цепочке.

Использование:

🔹 Когда нужно избежать жесткой привязки отправителя запроса к получателю.
🔹 Когда запрос должен быть обработан несколькими объектами, но заранее неизвестно, кто именно обработает запрос.
🔹 Когда необходимо гибко настраивать систему, добавляя или убирая обработчиков.

Преимущества:


1️⃣ Ослабляет связанность между объектами, отправляющими запросы, и объектами, обрабатывающими их.
2️⃣ Позволяет динамически добавлять новые обработчики в цепочку.
3️⃣ Способствует соблюдению принципа единственной ответственности, позволяя каждому обработчику заниматься своей задачей.

Недостатки:

1️⃣ Может быть сложнее отслеживать, кто в конечном итоге обработал запрос, особенно при длинных цепочках.
2️⃣ Не гарантирует, что запрос будет обработан, если ни один из обработчиков не способен это сделать.
3️⃣ Может усложнить структуру программы при использовании большого числа обработчиков.

📌 Паттерн полезен, когда необходимо разделить ответственность за обработку запросов между несколькими объектами, не создавая прямых зависимостей между ними.

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥65
Инкапсуляция

Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.

Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.

При запуске этой программы на выходе мы получим:
John 0


@javalib #java
11👍8🔥5
Forwarded from Java Guru 🤓
Что делает аннотация @CsvSource в данном тесте?
👍8🔥3
Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!

👩‍💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.

👩‍💻 Kotlin Developer - самый топовый канал для котлин разработчика!

📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!

📰 Java News - канал с последними новостями из мира Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥2
Конструктор по умолчанию

Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).

Если же в классе определен хотя бы один конструктор (с параметрами или без), компилятор не будет предоставлять конструктор по умолчанию, и его необходимо определить явно, если он нужен.

В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.


@javalib #java
👍133🔥2
Выше приведён список контролируемых исключений (Checked Exceptions) в Java, определенных в java.lang.
🔥13👍63
Forwarded from Java Guru 🤓
Как оптимизировать код?
🔥6👍3
Можно ли считать Final переменную константой?

Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.

А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.


@javalib #java
👍123
Forwarded from Java Guru 🤓
Какой результат выведет программа?
👍12🔥3
Forwarded from Java Guru 🤓
Какой результат выведет программа?
Anonymous Quiz
6%
10
36%
11
46%
12
6%
13
6%
Когда выведет, тогда и скажу 😂
👍14🔥6🎅5
Как определить, содержит ли массив определенное значение в Java с помощью потоков?

Чтобы проверить, содержит ли массив значений int, double или long значение, используйте IntStream, DoubleStream или LongStream соответственно.

@javalib #java
👍143🔥3
⚡️Хотите стать экспертом в разработке на Spring Framework?

Обучение «Разработчик на Spring Framework» от OTUS — это практический подход к освоению самого востребованного фреймворка для Java-разработчиков. Узнайте, как создавать веб-приложения на микросервисной архитектуре, автоматизировать задачи с Spring Boot и реализовывать высокоуровневые решения!

В конце курса у вас будет портфолио из готовых приложений и глубокое понимание работы со Spring. Пройдите вебинар-собеседование, чтобы быть готовым к реальным интервью.

👉Запишитесь на курс сейчас и перейдите на новый профессиональный уровень с дипломом, признанным крупными компаниями: https://vk.cc/cG9Sm7

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍42🔥2
Media is too big
VIEW IN TELEGRAM
Java Аннотации: Полное Руководство + Создание Собственных Аннотаций

Узнайте всё о Java аннотациях! 🚀
В этом видео мы разберёмся, что такое аннотации в Java, как они работают и почему без них не обходятся такие фреймворки, как Spring, Hibernate и JUnit. Вы узнаете:
Основные аннотации Java (
@Override, @Entity, @Test)
Как работают
@Target, @Retention и другие мета-аннотации
Как создать собственную аннотацию и обработать её с помощью рефлексии
Примеры реального использования аннотаций в разработке приложений
Мы покажем код, разберём логику работы аннотаций и создадим собственную аннотацию для валидации полей. Это обязательное видео для всех, кто хочет прокачать свои навыки Java!


📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥43🎄1
Метод PutAll()

Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.

Этот метод удобен, когда нужно быстро скопировать данные из одной коллекции в другую. Он работает быстрее, чем добавлять элементы в цикле.
Если в конечной коллекции уже есть ключи, которые содержатся в исходной Map, то значения этих ключей будут перезаписаны.

Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.


@javalib #java
👍12🔥52
🏰 Открытый урок «Знакомство с Resilience4j» 🏰

🗓 Дата: 19 декабря в 20:00 мск.

👩‍💻 Resilience4j — популярный инструмент для обеспечения стабильности и отказоустойчивости в Java-приложениях. В мире высоких нагрузок и распределенных систем важно познакомиться с этим фреймворком, чтобы улучшить надежность и производительность ваших приложений.

Программа урока:
- Введение в Resilience4.
- Применение Resilience4j для улучшения стабильности.

🔗 Регистрация на вебинар: https://vk.cc/cGapcZ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥2😁1
Как работает Pageable в Spring

Pageable — это мощный инструмент в Spring Data для работы с большими объемами данных, который позволяет разделить результат на страницы. Это оптимизирует память и улучшает производительность.

Вместо загрузки всех записей, например через findAll(), мы можем запросить только определенное количество данных (порции/страницы) и продолжать загружать по мере необходимости. Интерфейс Pageable создает запрос с параметрами LIMIT и OFFSET, что позволяет базе данных возвращать только нужные записи, начиная с определенного места.

*️⃣Пример использования:

🟡 Репозиторий:

public interface UserRepository extends JpaRepository<User, Long> {}


🟡Сервис:

@Service
public class UserService {

@Autowired
private UserRepository userRepository;

public Page<User> getUsersByPage(int page, int size) {
Pageable pageable = PageRequest.of(page, size, Sort.by("name").ascending());
return userRepository.findAll(pageable);
}
}


Здесь PageRequest.of(page, size, Sort) создает объект Pageable, который указывает, какую страницу и сколько записей нужно получить, а также сортирует результат по имени в порядке возрастания.

🟡Контроллер:

@RestController
public class UserController {

@Autowired
private UserService userService;

@GetMapping("/users")
public Page<User> getUsers(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "20") int size) {
return userService.getUsersByPage(page, size);
}
}


Этот эндпоинт позволяет запрашивать данные по страницам. Например, /users?page=1&size=20 вернет вторую страницу с 20 записями.

*️⃣Преимущества использования Pageable:

- Экономия памяти: Мы загружаем только небольшие порции данных.
- Легкость навигации: Можно переключаться между страницами.

*️⃣Недостатки использования Pageable:

- Дополнительный запрос для подсчета записей: Spring Data выполняет запрос для получения общего числа записей.
- Ограниченная гибкость: При сложных запросах с множеством фильтраций и джоинов Pageable может быть не таким гибким, как ручные запросы с LIMIT и OFFSET.

❗️Важно: Пагинация удобна для больших объемов данных, но если данные постоянно обновляются, возможны проблемы с консистентностью между страницами. Записи могут дублироваться или пропадать.

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍266🔥4
⚡️Как проектировать базы данных так, чтобы впоследствии не приходилось тушить пожары в результате не оптимально заложенных основ?

👉 Приглашаем на курс "PostgreSQL для профессионалов", который обеспечит глубокое погружение в PostgreSQL!

На курсе вы:
- Научитесь настраивать кластер PostgreSQL на оптимальную производительность
- Организуете систему резервного копирования
- Научитесь выяснять причины сбоев, блокировок и deadlock и оперативно решать эти проблемы
- Сможете использовать индексы, джойны и статистику для оптимизации производительности
- Освоите синтаксис и особенности работы в PostgreSQL
- Изучите пути решения проблем работы с большими объемами данных в PostgreSQL

Записывайтесь на курс уже сейчас и получите скидку! https://vk.cc/cGbWNj

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍52🔥2
Forwarded from Java Guru 🤓
Что выведет программа?
👍5🔥3