Настоящая находка среди репозиториев.
В нём собраны все основные шаги по защите и усилению безопасности Linux-сервера.
Если у вас есть VPS, стоит сохранить:
→ https://github.com/imthenachoman/How-To-Secure-A-Linux-Server
👉 Java Portal
В нём собраны все основные шаги по защите и усилению безопасности Linux-сервера.
Если у вас есть VPS, стоит сохранить:
→ https://github.com/imthenachoman/How-To-Secure-A-Linux-Server
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
🚀 Spring Boot 4: отключение логов в консоль одним свойством.
✅
✅ Полезно в контейнерах, где логи собираются только из файлов или через OTLP
✅ При необходимости можно оставить файловые или удалённые appenders
#SpringBoot4 #Logging
👉 Java Portal
✅
logging.console.enabled=false✅ Полезно в контейнерах, где логи собираются только из файлов или через OTLP
✅ При необходимости можно оставить файловые или удалённые appenders
#SpringBoot4 #Logging
Please open Telegram to view this post
VIEW IN TELEGRAM
now() — это не «сейчас», а скорее «когда-то было сейчас».На самом деле
now() возвращает время начала текущей транзакции. Реальные часы продолжают идти, но каждый последующий вызов now(), CURRENT_TIMESTAMP, CURRENT_TIME и CURRENT_DATE внутри этой же транзакции всё равно возвращает одно и то же время.В Postgres это называется transaction-frozen timestamp.
То есть
INSERT на 10 000 строк с created_at DEFAULT now() получит один и тот же timestamp для всех строк, а не 10 000 слегка отличающихся значений.Три варианта времени:
•
now() — традиционный для Postgres вариант, хотя он есть и в других СУБД, но это не стандарт SQL. В стандарте SQL используется CURRENT_TIMESTAMP. В Postgres также есть transaction_timestamp(), который работает так же, как now(), но хотя бы честно говорит об этом своим названием.•
statement_timestamp() обновляется один раз на каждый SQL-запрос. Это полезно внутри длинной транзакции, когда вам нужно фиксировать время выполнения отдельных команд, но не переходить к реальному системному времени.•
clock_timestamp() — единственный timestamptz, который меняется даже во время выполнения одного SQL-запроса.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2
Java: не используйте
Это всего лишь предположение о времени: выполнение может возобновиться слишком рано или слишком поздно.
Для координации используйте
Для повторяющихся задач используйте
👉 Java Portal
Thread.sleep() для ожидания выполнения работы — используйте синхронизацию или scheduler.Это всего лишь предположение о времени: выполнение может возобновиться слишком рано или слишком поздно.
Для координации используйте
wait() / notify() или CountDownLatch.Для повторяющихся задач используйте
ScheduledExecutorService.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Бесплатная онлайн-книга «Think Java»
В «Think Java» они так же мягко и понятно проводят новичков от самых азов переменных, циклов и массивов к объектам, классам и полноценному пониманию того, как думать как программист
Читается легко, рабочие лаконичные примеры, а структура шаг за шагом раскрывает язык, не перегружая деталями. Отличный старт, если вы хотите войти в программирование через Java и при этом прокачать само мышление, а не просто синтаксис📖
👉 Java Portal
В «Think Java» они так же мягко и понятно проводят новичков от самых азов переменных, циклов и массивов к объектам, классам и полноценному пониманию того, как думать как программист
Читается легко, рабочие лаконичные примеры, а структура шаг за шагом раскрывает язык, не перегружая деталями. Отличный старт, если вы хотите войти в программирование через Java и при этом прокачать само мышление, а не просто синтаксис
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Отключаем логирование в консоль всего одним параметром.
Полезно в контейнерах, где логи собираются только из файлов или через OTLP
При необходимости можно оставить file appenders или remote appenders
👉 Java Portal
logging.console.enabled=falseПолезно в контейнерах, где логи собираются только из файлов или через OTLP
При необходимости можно оставить file appenders или remote appenders
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Spring Boot 4: observability для Redis теперь использует Observation API.
✅ Метрики и spans для Redis-команд
✅ Можно использовать вместе с OpenTelemetry Starter
#SpringBoot4 #Redis
👉 Java Portal
✅ Метрики и spans для Redis-команд
✅ Можно использовать вместе с OpenTelemetry Starter
#SpringBoot4 #Redis
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2
Java Design Patterns — огромная коллекция паттернов проектирования на Java
Open-source репозиторий с практическими реализациями Design Patterns на Java. Здесь не просто теория: каждый паттерн сопровождается исходным кодом, описанием и примерами использования.
Внутри есть классические Factory, Builder, Adapter, Strategy, Observer, а также CQRS, Event Sourcing, Circuit Breaker, Hexagonal Architecture, Clean Architecture, Dependency Injection, Event-Driven Architecture и множество других архитектурных паттернов.
Хороший справочник для изучения архитектуры, подготовки к собеседованиям и поиска готовых подходов для реальных Java-проектов. Репозиторий собрал уже 94K+ звёзд на GitHub.
👉 Java Portal
Open-source репозиторий с практическими реализациями Design Patterns на Java. Здесь не просто теория: каждый паттерн сопровождается исходным кодом, описанием и примерами использования.
Внутри есть классические Factory, Builder, Adapter, Strategy, Observer, а также CQRS, Event Sourcing, Circuit Breaker, Hexagonal Architecture, Clean Architecture, Dependency Injection, Event-Driven Architecture и множество других архитектурных паттернов.
Хороший справочник для изучения архитектуры, подготовки к собеседованиям и поиска готовых подходов для реальных Java-проектов. Репозиторий собрал уже 94K+ звёзд на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Дикая Java — подборка кода, который заставит усомниться в реальности
Разбор необычных и откровенно безумных трюков на Java:
Автор подробно показывает, почему всё это вообще работает на JVM, и разбирает механику каждого примера. В прод такое лучше не тащить, зато для понимания некоторых неочевидных особенностей Java — отличное чтиво.
https://habr.com/ru/articles/886080/
👉 Java Portal
Разбор необычных и откровенно безумных трюков на Java:
Hello World, упакованный в одно число, подмена IntegerCache через Reflection API, безумная цепочка преобразований типов и рабочий код, спрятанный внутри обычного комментария.Автор подробно показывает, почему всё это вообще работает на JVM, и разбирает механику каждого примера. В прод такое лучше не тащить, зато для понимания некоторых неочевидных особенностей Java — отличное чтиво.
https://habr.com/ru/articles/886080/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
🚀 Spring Boot 4: Test Starters теперь следуют схеме
✅ Для каждой технологии есть соответствующий test starter
✅ Они транзитивно подключают
✅ Например, для тестирования Spring Security нужен
#SpringBoot4 #Testing
👉 Java Portal
spring-boot-starter-*-test.✅ Для каждой технологии есть соответствующий test starter
✅ Они транзитивно подключают
spring-boot-starter-test✅ Например, для тестирования Spring Security нужен
spring-boot-starter-security-test#SpringBoot4 #Testing
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Те, кто критикует Java, часто думают, что язык до сих пор такой же, каким был в 2000-х.
Современный Java — это уже совсем другой язык, который стал гораздо лучше благодаря новым возможностям синтаксиса и API.
Только скажите, что это не выглядит просто и красиво.
👉 Java Portal
Современный Java — это уже совсем другой язык, который стал гораздо лучше благодаря новым возможностям синтаксиса и API.
Только скажите, что это не выглядит просто и красиво.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5