❤10🤯1
«Thread-safe» — это способность объекта или кода работать корректно в многопоточной среде, где несколько потоков одновременно обращаются к одному и тому же ресурсу. Это достигается путем синхронизации доступа к общим данным.
Основная проблема многопоточности — состояние гонки, когда несколько потоков изменяют общие данные, вызывая некорректное поведение программы. Использование ключевого слова
synchronized позволяет избежать этих проблем, обеспечивая безопасный доступ к данным.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤15
Почему строка популярна в качестве ключа в HashMap?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤8💯4
В статье рассматривается различие между символами 'Y' и 'y' при форматировании дат в Java.
Автор объясняет, как использование 'Y' может привести к неожиданным результатам, особенно в конце года, и предлагает способы избежать подобных ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥4
🤔20👍5❤2
Иногда можно столкнуться с необходимостью преобразовать
Iterable в Collection. Например, сторонние библиотеки часто возвращают результаты в виде Iterable, но для дальнейшей работы удобнее использовать Collection.Давайте рассмотрим два способа, как это можно сделать:
С помощью Stream API это преобразование можно выполнить за пару строк:
Iterable<String> iterable = new ArrayList<>();
Collection<String> collection = StreamSupport.stream(iterable.spliterator(), false)
.collect(Collectors.toList());
Сначала создаётся поток из
Iterable, а затем результат собирается в список. Если вы используете библиотеку Guava от Google, преобразование становится ещё проще:
Iterable<String> iterable = new ArrayList<>();
Collection<String> collection = Lists.newArrayList(iterable);
Этот подход идеален, если Guava уже подключена к вашему проекту.
Оба способа быстро решают задачу и помогают избежать лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍6🔥2
У вас есть клумба, где одни участки засажены (1), а другие пусты(0). Цветы нельзя сажать на соседних участках.
Дан массив
flowerbed (0 — пусто, 1 — занято) и число n. Нужно определить, можно ли посадить n цветов, соблюдая правило, чтобы соседние участки оставались свободными. Верните
true, если это возможно, и false — если нет.Пример 1:
Входные данные:
flowerbed = [1,0,0,0,1], n = 1Вывод:
trueПример 2:
Входные данные:
flowerbed = [1,0,0,0,1], n = 2Вывод:
falsePlease open Telegram to view this post
VIEW IN TELEGRAM
❤5🤔3🔥2
В статье рассматривается работа с транзакциями в Spring: зачем они нужны, как работают и как их правильно настроить.
Автор объясняет, как обеспечить целостность данных при выполнении операций, приводя примеры кода и практические рекомендации.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15
❤6👍1
Сегодня поговорим о двух аннотациях в Spring — @RequestParam и @PathVariable, разберём их различия и приведём примеры использования.
Работа с параметрами запроса — одна из ключевых задач при разработке веб-приложений. @RequestParam и @PathVariable помогают легко извлекать данные из URL.
Используется для получения значений из пути URL. Например, если у нас есть запрос
http://website.com/products/123, где 123 — это ID продукта:@GetMapping("/products/{id}")
public Product getProduct(@PathVariable String id) {
// обработка ID
return productService.getProductById(id);
}В этом случае 123 автоматически будет сопоставлено с параметром id метода.
Эта аннотация используется для извлечения параметров из строки запроса. Например, если запрос выглядит так:
http://website.com/products?id=123:@GetMapping("/products")
public Product getProduct(@RequestParam String id) {
// обработка ID
return productService.getProductById(id);
}Здесь id=123 извлекается из параметров URL и передаётся в метод.
@PathVariable удобно применять, когда значения являются частью структуры пути URL (например, идентификатор ресурса). Часто используется в REST API для четкой организации маршрутов, например
/users/{userId} или /orders/{orderId}.@RequestParam подходит для работы с необязательными или дополнительными параметрами, передаваемыми в строке запроса, например фильтры, сортировка или пагинация:
/products?category=electronics&sort=price.📌 Используйте @PathVariable для статичных идентификаторов и @RequestParam для динамических, кастомизируемых параметров.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤35👍11
Могут ли у абстрактного класса быть конструкторы?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍19❤6