Java Portal | Программирование
11.8K subscribers
1.5K photos
114 videos
45 files
1.56K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Не забывайте поддерживать проекты с открытым исходным кодом, которыми сами пользуетесь.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Spring Boot 4: можно объединять несколько TaskDecorator для асинхронных задач.

Каждый из них может переносить свой контекст в рабочий поток.

Spring Boot объединяет их и определяет порядок выполнения через @Order.

Типичная связка: MDC для логов + контекст безопасности для пользователя.

#SpringBoot4 #Async

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
На одном собеседовании по системному дизайну я использовал Kafka.
На другом — Redis.
На ещё одном — S3.
На ВСЕХ собеседованиях по системному дизайну я использовал базы данных.

Базы данных — основа любой архитектуры независимо от масштаба, стека или предметной области.

Если вы понимаете, как данные хранятся, запрашиваются, индексируются, реплицируются и партиционируются, то вы уже понимаете 70% системного дизайна.

Не отвлекайтесь на каждый новый модный компонент. Очереди, кэши и оркестраторы приходят и уходят.

А базы данных остаются.

Реляционные, NoSQL, временные ряды, векторные базы — подходы меняются, но принципы остаются теми же:

- пути чтения и записи
- индексация и кэширование
- транзакции и изоляция
- репликация и партиционирование

Разберитесь глубоко в том, как движутся данные, и вы увидите, как с ними связаны все остальные части системы.

Изучайте базы данных глубоко.

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Импортируете CSV в Postgres? Используйте COPY или \copy.

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

Что важно знать:

FORMAT csv
Включает стандартный разбор CSV: запятые, поля в кавычках и экранированные кавычки.

Список целевых столбцов
Порядок столбцов в CSV редко совпадает с таблицей. Всегда указывайте целевые столбцы в том порядке, в котором они идут в файле. Postgres сопоставляет их по позиции, а не по имени из заголовка CSV.

HEADER / HEADER n
Пропускает строки заголовка. Обычный HEADER пропускает первую строку. Ожидается, что Postgres 19 позволит передавать число, например HEADER 2, чтобы пропускать несколько начальных строк.

DEFAULT 'string'
Позволяет сопоставить специальную строку в CSV, например '__DEFAULT__', с выражением DEFAULT соответствующего столбца.

Неуказанные столбцы
Столбцы таблицы, которые не указаны в списке целевых столбцов, автоматически получают DEFAULT или NULL.

Лишние столбцы в CSV
Postgres выдаст ошибку, если в CSV больше полей, чем указано целевых столбцов. Обрежьте файл или сначала загрузите данные в более широкую промежуточную таблицу.

NULL-значения
В формате csv стандартным представлением NULL является пустая строка без кавычек. Это можно изменить через NULL 'string'.

Обработка ошибок через ON_ERROR и REJECT_LIMIT
Исторически COPY останавливался на первой ошибке преобразования. В новых версиях появились:

ON_ERROR ignore в Postgres 17 — пропускает некорректные строки и сообщает их количество
REJECT_LIMIT n в Postgres 18 — задаёт максимальное число плохих строк при ON_ERROR ignore, после которого импорт будет остановлен
ON_ERROR set_null в Postgres 19 — заменяет некорректное поле на NULL вместо того, чтобы отбрасывать всю строку

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Java: поверхностное клонирование копирует только сам объект, а вложенные объекты остаются общими.

super.clone() сам по себе создаёт поверхностную копию.

Глубокое клонирование дополнительно копирует и вложенные поля.

Если ссылки остаются общими, изменение вложенного объекта в одной копии будет видно и в другой.

#Java #SoftwareEngineering

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Похоже, это один из самых полных справочников по самостоятельному хостингу.

Огромный открытый гайд со всем, что нужно для старта и дальнейшего изучения self-hosting:

Docker, Kubernetes, базы данных, LLM, сети, Raspberry Pi, Home Assistant, безопасность, программирование и ещё куча всего.

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

Источник: github.com/mikeroyal/Self-Hosting-Guide

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Разработчику стоит знать основные концепции системного дизайна.

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

В курсе разбираются архитектура приложений, проектирование API, кэширование, сети, базы данных и многое другое.

https://freecodecamp.org/news/learn-system-design-principles/

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🚀 Spring Boot 4: @ConfigurationPropertiesSource для внешних типов.

Теперь метаданные можно генерировать даже для типов, которые находятся в другом модуле.

#SpringBoot4 #Config

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.

В программе два трека — Go и Java, по три доклада в каждом.

Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк

Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK

А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.

Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
Подзапросы в SQL сначала могут казаться запутанными, но на деле это просто запросы, которые передают данные другому запросу.

В этой статье Абдулла объясняет, как работают подзапросы и где они используются в SQL.

Разбираются некоррелированные и коррелированные подзапросы, производные столбцы и таблицы, а также операторы IN, ANY, ALL, EXISTS и многое другое.

https://freecodecamp.org/news/how-to-work-with-subqueries-in-sql/

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👀2🌚1
Самое время снова вспомнить о Java Records.

В этом руководстве показано, как record помогает объединять связанные неизменяемые данные в один объект. По сравнению с набором отдельных переменных код становится понятнее и проще в сопровождении.

Если вы ещё не используете record, это один из самых простых способов писать более чистый и выразительный код на Java.

Подробнее: https://social.ora.cl/6012BDGFKM

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM