volatile в Java?Ответ -
Ключевое слово volatile используется для обозначения переменной, которая может изменяться несколькими потоками. Оно гарантирует, что изменения переменной будут видны всем потокам сразу и предотвращает кэширование значения в локальных потоках, обеспечивая более безопасный доступ к переменной в многопоточной среде.
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
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1👏1
Reactive Programming — это парадигма, которая позволяет обрабатывать асинхронные потоки данных. В этой статье мы рассмотрим, как использовать Project Reactor для создания реактивных приложений на Java.
Project Reactor предоставляет два основных типа:
Mono и Flux. Mono представляет собой последовательность, которая может содержать 0 или 1 элемент, в то время как Flux может содержать 0..N элементов.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 делает этот процесс простым и удобным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👏1
Эта статья написана в основном для системных администраторов Java-приложений (DevOps-инженеров, SRE и других производных специализаций). Вероятнее всего, Java-разработчики уже все это прекрасно знают. Хотя Junior 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. Необходимо определить, являются ли они анаграммами друг друга. Строки являются анаграммами, если одна строка может быть получена перестановкой букв другой строки.
Пример:
👨💻 Алгоритм:
Алгоритм решения:
1️⃣ Проверить длины строк. Если они разные, вернуть false.
2️⃣ Использовать хэш-таблицу для подсчета частоты каждого символа в первой строке.
3️⃣ Уменьшать счетчик для символов во второй строке.
4️⃣ Проверить, остались ли ненулевые счетчики.
😎 Решение:
🖥 Java Developer | Backend | #⃣ #задача #java
Даны две строки s и t. Необходимо определить, являются ли они анаграммами друг друга. Строки являются анаграммами, если одна строка может быть получена перестановкой букв другой строки.
Пример:
Вход: s = "anagram", t = "nagaram"
Выход: true
Объяснение: "anagram" и "nagaram" являются анаграммами.
Алгоритм решения:
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👏1
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3👍2🔥1
В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3😁3
В этой статье рассказывается о технической стороне компании lamoda и как она создавалась.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
Ответ -
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
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Клифф Клик — CTO компании Cratus (IoT сенсоры для улучшения процессов), основатель и сооснователь нескольких стартапов (включая Rocket Realtime School, Neurensic и H2O.ai) с несколькими успешными экзитами. Клифф написал свой первый компилятор в 15 лет (Pascal для TRS Z-80)! Наиболее известен за работу над С2 в Java (the Sea of Nodes IR).
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1👍1👏1
Leetcode. Задача. #325 (Maximum Size Subarray Sum Equals k). (easy)
Дан массив целых чисел nums и целое число k. Необходимо найти длину самой длинной непрерывной подстроки, сумма элементов которой равна k.
Пример:
👨💻 Алгоритм:
Алгоритм решения:
1️⃣ Использовать хэш-таблицу для хранения сумм префиксов и их индексов.
2️⃣ Пройтись по массиву, вычисляя текущую сумму.
3️⃣ Если текущая сумма равна k, обновить максимальную длину.
4️⃣ Если разница между текущей суммой и k уже есть в хэш-таблице, обновить максимальную длину.
😎 Решение:
🖥 Java Developer | Backend | #⃣ #задача #java
Дан массив целых чисел nums и целое число k. Необходимо найти длину самой длинной непрерывной подстроки, сумма элементов которой равна k.
Пример:
Вход: nums = [1, -1, 5, 2, -2, 3], k = 3
Выход: 4
Объяснение: Подстрока [1, -1, 5, 2] имеет сумму 3.
Алгоритм решения:
import java.util.HashMap;
public class MaxSubarraySum {
public int maxSubArrayLen(int[] nums, int k) {
HashMap<Integer, Integer> sumIndices = new HashMap<>();
sumIndices.put(0, -1); // Сумма 0 на позиции -1 (перед началом массива)
int maxLength = 0;
int currentSum = 0;
for (int i = 0; i < nums.length; i++) {
currentSum += nums[i];
if (sumIndices.containsKey(currentSum - k)) {
maxLength = Math.max(maxLength, i - sumIndices.get(currentSum - k));
}
// Сохраняем индекс текущей суммы только если она еще не встречалась
if (!sumIndices.containsKey(currentSum)) {
sumIndices.put(currentSum, i);
}
}
return maxLength;
}
public static void main(String[] args) {
MaxSubarraySum solution = new MaxSubarraySum();
int[] nums = {1, -1, 5, 2, -2, 3};
int k = 3;
int length = solution.maxSubArrayLen(nums, k);
System.out.println("Длина самой длинной подстроки с суммой " + k + ": " + length); // Вывод: 4
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👏1
Optional в Java и зачем он нужен?Ответ -
Optional — это контейнер, который может содержать значение или быть пустым (null). Он используется для избежания NullPointerException и улучшения читаемости кода. Вместо того чтобы возвращать null, методы могут возвращать Optional, позволяя разработчикам явно обрабатывать случаи отсутствия значения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Данная статья есть компиляция мыслей и идей, полученных из выступлений других людей на данную тему, плюс эпизодического опыта изучения WebAssembly в течение нескольких месяцев.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏1
Java – один из самых популярных и востребованных языков программирования в мире. Он используется в веб-разработке, разработке мобильных приложений, научных вычислениях и многих других областях.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
Ответ -
Потокобезопасность означает, что несколько потоков могут безопасно взаимодействовать с объектами без риска повреждения данных. Достичь потокобезопасности можно с помощью ключевых слов synchronized, volatile, а также с использованием классов из пакета java.util.concurrent, таких как ConcurrentHashMap, CopyOnWriteArrayList и других.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👏3🔥2👍1