Java Developer | Backend
1.7K subscribers
136 photos
1 video
231 links
Авторский канал действующего java разработчика

Платформа: https://offercraft.ru

Сотрудничество @offercraft_support
Download Telegram
🔤 Управление памятью Java

Это глубокое погружение в управление памятью Java позволит расширить ваши знания о том, как работает куча, ссылочные типы и сборка мусора.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🔥1
Асинхронное программирование в Java с использованием CompletableFuture

Асинхронное программирование позволяет улучшить производительность приложений, избегая блокировок потоков. Мы рассмотрим CompletableFuture.

Пример использования CompletableFuture

import java.util.concurrent.CompletableFuture;

public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 42;
});

future.thenAccept(result -> System.out.println("Result: " + result));
System.out.println("Waiting for result...");
}
}


Обработка исключений
future.exceptionally(ex -> {
System.out.println("Error: " + ex.getMessage());
return null;
});


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

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4👏2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😁32🤩2
Java Memory Management: Понимание сборщика мусора

Управление памятью в Java осуществляется автоматически с помощью сборщика мусора. Мы рассмотрим основные аспекты работы сборщика мусора.

Типы сборщиков мусора:

1⃣Serial GC: Подходит для небольших приложений.

2⃣Parallel GC: Оптимизирован для многопроцессорных систем.

3⃣CMS (Concurrent Mark-Sweep): Уменьшает паузы при сборке мусора.

4⃣G1 (Garbage-First): Современный сборщик, оптимизированный для больших кучи.

Настройка сборщика мусора

Вы можете настроить сборщик мусора через параметры JVM:
java -XX:+UseG1GC -jar yourapp.jar


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

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2👏2
Вопрос: Что такое volatile в Java?
Ответ -

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


🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👍1🔥1
Как работает механизм синхронизации в Java?
Ответ -
Синхронизация в Java используется для управления доступом к общим ресурсам из нескольких потоков. Это можно сделать с помощью ключевого слова synchronized, которое блокирует метод или блок кода, позволяя только одному потоку выполнять его в данный момент времени. Также существуют другие механизмы синхронизации, такие как ReentrantLock, которые предлагают более гибкие возможности.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1👏1
Введение в Reactive Programming с использованием Project Reactor

Reactive Programming — это парадигма, которая позволяет обрабатывать асинхронные потоки данных. В этой статье мы рассмотрим, как использовать Project Reactor для создания реактивных приложений на Java.

*️⃣Основы Project Reactor

Project Reactor предоставляет два основных типа: Mono и Flux. Mono представляет собой последовательность, которая может содержать 0 или 1 элемент, в то время как Flux может содержать 0..N элементов.

*️⃣Пример использования Mono и Flux
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

public class ReactiveExample {
public static void main(String[] args) {
Mono<String> mono = Mono.just("Hello, Reactor!");
mono.subscribe(System.out::println);

Flux<String> flux = Flux.just("Apple", "Banana", "Cherry");
flux.filter(fruit -> fruit.startsWith("B"))
.map(String::toUpperCase)
.subscribe(System.out::println);
}
}


*️⃣Обработка ошибок

Project Reactor предоставляет удобные методы для обработки ошибок.
flux.concatWith(Flux.error(new RuntimeException("Error occurred")))
.onErrorResume(e -> {
System.out.println(e.getMessage());
return Flux.just("Fallback Value");
})
.subscribe(System.out::println);


Reactive Programming позволяет создавать высокопроизводительные приложения, способные обрабатывать множество запросов одновременно. Project Reactor делает этот процесс простым и удобным.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👏1
🔤 Java для сисадминов

Эта статья написана в основном для системных администраторов Java-приложений (DevOps-инженеров, SRE и других производных специализаций). Вероятнее всего, Java-разработчики уже все это прекрасно знают. Хотя Junior Java-разработчикам эта информация может помочь систематизировать знания.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
Leetcode. Задача. 242. Valid Anagram (easy)

Даны две строки s и t. Необходимо определить, являются ли они анаграммами друг друга. Строки являются анаграммами, если одна строка может быть получена перестановкой букв другой строки.

Пример:
Вход: s = "anagram", t = "nagaram"
Выход: true
Объяснение: "anagram" и "nagaram" являются анаграммами.


👨‍💻 Алгоритм:

Алгоритм решения:

1️⃣Проверить длины строк. Если они разные, вернуть false.

2️⃣ Использовать хэш-таблицу для подсчета частоты каждого символа в первой строке.

3️⃣ Уменьшать счетчик для символов во второй строке.

4️⃣Проверить, остались ли ненулевые счетчики.


😎 Решение:
import java.util.HashMap;

public class ValidAnagram {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) return false;

HashMap<Character, Integer> charCount = new HashMap<>();

for (char c : s.toCharArray()) {
charCount.put(c, charCount.getOrDefault(c, 0) + 1);
}

for (char c : t.toCharArray()) {
if (!charCount.containsKey(c) || charCount.get(c) == 0) {
return false;
}
charCount.put(c, charCount.get(c) - 1);
}

return true;
}

public static void main(String[] args) {
ValidAnagram solution = new ValidAnagram();
String s = "anagram";
String t = "nagaram";
boolean result = solution.isAnagram(s, t);
System.out.println("Являются ли строки анаграммами? " + result); // Вывод: true


🖥 Java Developer | Backend | #⃣#задача #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👏1
Что такое Spring Boot и как он отличается от Spring?
Ответ -
Spring Boot — это расширение Spring Framework, которое упрощает разработку приложений на его основе. Он предоставляет встроенные настройки и автоматическую конфигурацию, что позволяет быстро запускать приложения без необходимости ручной настройки. Это особенно полезно для создания микросервисов.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3👍2🔥1
🔤 Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana

В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3😁3
🔤 Lamoda изнутри: зачем интернет-магазину 300 инженеров

В этой статье рассказывается о технической стороне компании lamoda и как она создавалась.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
Как работает механизм Reflection в Java?
Ответ -
Reflection — это механизм, который позволяет программно исследовать и изменять структуру классов, интерфейсов, полей и методов во время выполнения. С его помощью можно создавать экземпляры классов, вызывать методы и получать доступ к полям, даже если они являются приватными. Reflection используется в фреймворках, таких как Spring и Hibernate, для динамического управления объектами.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1👏1
Как работает механизм сериализации в Java?
Ответ -
Сериализация — это процесс преобразования объекта в поток байтов для сохранения его состояния или передачи по сети. В Java это достигается с помощью интерфейса Serializable. Чтобы сериализовать объект, необходимо вызвать метод ObjectOutputStream.writeObject(), а для десериализации — ObjectInputStream.readObject().

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
🔤 Большое интервью с Клиффом Кликом — отцом JIT-компиляции в Java

Клифф Клик — CTO компании Cratus (IoT сенсоры для улучшения процессов), основатель и сооснователь нескольких стартапов (включая Rocket Realtime School, Neurensic и H2O.ai) с несколькими успешными экзитами. Клифф написал свой первый компилятор в 15 лет (Pascal для TRS Z-80)! Наиболее известен за работу над С2 в Java (the Sea of Nodes IR).

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍1👏1