По умолчанию Postgres считает столбцы, которые вместе используются в
Например, для такого SQL-запроса:
планировщик оценивает количество подходящих строк, перемножая селективность каждого условия.
Допустим, селективность условия
В действительности эти столбцы связаны, поэтому итоговая селективность равна селективности условия
Чтобы исправить оценку, нужно явно указать корреляцию между столбцами: выполнить
Я проверил это на тестовом датасете, результаты видны на изображении. Изначально планировщик ожидал, что запрос вернёт 784 строки, хотя фактический результат составлял 2000 строк.
После выполнения
👉 Java Portal
WHERE, независимыми друг от друга.Например, для такого SQL-запроса:
SELECT *
FROM world
WHERE country = 'Japan'
AND continent = 'Asia';
планировщик оценивает количество подходящих строк, перемножая селективность каждого условия.
Допустим, селективность условия
country = 'Japan' равна 0,02, а continent = 'Asia' — 0,4. Тогда общую селективность планировщик оценит как 0,008.В действительности эти столбцы связаны, поэтому итоговая селективность равна селективности условия
country = 'Japan'.Чтобы исправить оценку, нужно явно указать корреляцию между столбцами: выполнить
CREATE STATISTICS для них вместе, а затем запустить ANALYZE.Я проверил это на тестовом датасете, результаты видны на изображении. Изначально планировщик ожидал, что запрос вернёт 784 строки, хотя фактический результат составлял 2000 строк.
После выполнения
CREATE STATISTICS планировщик спрогнозировал 1983 строки — гораздо ближе к реальному результату.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Несколько алгоритмов, которые я периодически заставляю себя повторять, чтобы не забыть, как они работают:
• Kadane’s → максимальная сумма подмассива
• Rabin–Karp → поиск подстроки с помощью хеширования
• Topological Sort → топологическая сортировка DAG
• Prim’s → минимальное остовное дерево
• Kruskal’s → MST с Union-Find
• Dijkstra’s → кратчайший путь без отрицательных весов
• Bellman–Ford → кратчайший путь с отрицательными весами
• Tarjan’s → компоненты сильной связности
• Backtracking → решение Sudoku
К этим алгоритмам я продолжаю возвращаться даже спустя годы.
👉 Java Portal
• Kadane’s → максимальная сумма подмассива
• Rabin–Karp → поиск подстроки с помощью хеширования
• Topological Sort → топологическая сортировка DAG
• Prim’s → минимальное остовное дерево
• Kruskal’s → MST с Union-Find
• Dijkstra’s → кратчайший путь без отрицательных весов
• Bellman–Ford → кратчайший путь с отрицательными весами
• Tarjan’s → компоненты сильной связности
• Backtracking → решение Sudoku
К этим алгоритмам я продолжаю возвращаться даже спустя годы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🚀 Тренируемся на 10 из 10: новый юбилейный сезон тренировок по алгоритмам от Яндекса
Интенсив продлится две недели и охватит три крупные темы с видеоуроками. Практические задачи помогут закрепить материал, а соревнования дадут возможность потренироваться в формате настоящего интервью. Особенно полезно будет тем, кто развивает навыки в backend-разработке и пишет на Java — алгоритмические задачи почти всегда встречаются на технических собеседованиях.
Выбери свой вариант участия:
🔸 Тренировка — решай задачи в своём темпе и получи сертификат о прохождении курса.
🔸 Соревнование — проверь себя на задачах, приближенных к интервью, соревнуйся с другими участниками и получи шанс попасть на офлайн-интенсив в Москве.
Среди участников, решивших все задания, разыграют 30 карьерных консультаций, а лучшие на офлайн-интенсиве смогут попасть на пробные собеседования.
Старт сезона — 4 сентября. Участие бесплатное, но необходимо подать заявку.
Интенсив продлится две недели и охватит три крупные темы с видеоуроками. Практические задачи помогут закрепить материал, а соревнования дадут возможность потренироваться в формате настоящего интервью. Особенно полезно будет тем, кто развивает навыки в backend-разработке и пишет на Java — алгоритмические задачи почти всегда встречаются на технических собеседованиях.
Выбери свой вариант участия:
🔸 Тренировка — решай задачи в своём темпе и получи сертификат о прохождении курса.
🔸 Соревнование — проверь себя на задачах, приближенных к интервью, соревнуйся с другими участниками и получи шанс попасть на офлайн-интенсив в Москве.
Среди участников, решивших все задания, разыграют 30 карьерных консультаций, а лучшие на офлайн-интенсиве смогут попасть на пробные собеседования.
Старт сезона — 4 сентября. Участие бесплатное, но необходимо подать заявку.
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл настоящую золотую жилу для тех, кто готовится к собеседованиям в FAANG
Complete FAANG Preparation, уже больше 12 тысяч , включает
→ DSA — 450 задач от Love Babbar, лист Striver и лист Apna College
→ Основы Computer Science — ОС, СУБД, SQL, компьютерные сети, ООП
→ Проектирование систем — LLD и HLD
→ Задачи на логику, тесты и головоломки на C++, Python, Java и JavaScript
Один репозиторий, и в нём практически всё, что нужно
https://github.com/AkashSingh3031/The-Complete-FAANG-Preparation
👉 Java Portal
Complete FAANG Preparation, уже больше 12 тысяч , включает
→ DSA — 450 задач от Love Babbar, лист Striver и лист Apna College
→ Основы Computer Science — ОС, СУБД, SQL, компьютерные сети, ООП
→ Проектирование систем — LLD и HLD
→ Задачи на логику, тесты и головоломки на C++, Python, Java и JavaScript
Один репозиторий, и в нём практически всё, что нужно
https://github.com/AkashSingh3031/The-Complete-FAANG-Preparation
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Spring Boot 4: для проверки состояния MongoDB больше не нужен Spring Data.
✅ Индикаторы состояния теперь находятся в spring-boot-mongodb
✅ Достаточно одного драйвера MongoDB
✅ Используйте spring-boot-starter-mongodb, если вам нужна проверка состояния
#SpringBoot4 #MongoDB
👉 Java Portal
✅ Индикаторы состояния теперь находятся в spring-boot-mongodb
✅ Достаточно одного драйвера MongoDB
✅ Используйте spring-boot-starter-mongodb, если вам нужна проверка состояния
#SpringBoot4 #MongoDB
Please open Telegram to view this post
VIEW IN TELEGRAM
Приложения и базы данных, которые стоят за ними.
Instagram — PostgreSQL
Reddit — PostgreSQL
Twitch — PostgreSQL
Notion — PostgreSQL
Figma — PostgreSQL
ChatGPT — PostgreSQL
Skype — PostgreSQL
GitHub — MySQL
Shopify — MySQL
Slack — MySQL
YouTube — MySQL
Uber — MySQL
Airbnb — MySQL
Facebook — MySQL
Netflix — Cassandra
Discord — ScyllaDB
Забавно, насколько большая часть крупнейших сервисов в мире до сих пор держится на PostgreSQL и MySQL.
👉 Java Portal
Instagram — PostgreSQL
Reddit — PostgreSQL
Twitch — PostgreSQL
Notion — PostgreSQL
Figma — PostgreSQL
ChatGPT — PostgreSQL
Skype — PostgreSQL
GitHub — MySQL
Shopify — MySQL
Slack — MySQL
YouTube — MySQL
Uber — MySQL
Airbnb — MySQL
Facebook — MySQL
Netflix — Cassandra
Discord — ScyllaDB
Забавно, насколько большая часть крупнейших сервисов в мире до сих пор держится на PostgreSQL и MySQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🤔3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18
Если честно, papers-we-love — самый удобный инструмент для программирования, которым я пользовался в этом году. Его 109 тысяч звёзд на GitHub вполне заслуженны.
1️⃣ Он собирает самые классические научные работы по информатике и раскладывает их по категориям: распределённые системы, базы данных, операционные системы и многое другое.
В прошлом месяце, когда я искал работы по Paxos, нашёл всё необходимое прямо в этом репозитории. Больше не пришлось бесконечно копаться в Google Scholar.
2️⃣ У каждой работы есть официальная ссылка, а у некоторых — прямая ссылка на PDF. Я проверил сам: никакой регистрации и платных подписок — просто открываешь и читаешь.
Гораздо удобнее, чем сайты-агрегаторы научных работ.
3️⃣ Это не просто собрание материалов. У проекта есть офлайн-встречи в десятках городов по всему миру, а записи прошлых выступлений доступны на YouTube.
Я посмотрел несколько выступлений по распределённым системам — это сильно экономит время по сравнению с самостоятельным чтением десятков работ.
Этот проект действительно экономит огромное количество времени всем, кто занимается программированием.
И вот что многие упускают: это не просто список научных работ. Это тщательно отобранная коллекция, которую годами поддерживают инженеры и исследователи. По сути, они уже отфильтровали за вас 80% бесполезных работ.
Я прочитал около десятка работ, двигаясь по этому каталогу, и качество оказалось намного выше, чем при случайном поиске на arXiv.
Только на отборе материалов можно сэкономить как минимум полдня.
А где вы сейчас в основном ищете научные работы? Есть источники лучше этого?
https://github.com/papers-we-love/papers-we-love
👉 Java Portal
1️⃣ Он собирает самые классические научные работы по информатике и раскладывает их по категориям: распределённые системы, базы данных, операционные системы и многое другое.
В прошлом месяце, когда я искал работы по Paxos, нашёл всё необходимое прямо в этом репозитории. Больше не пришлось бесконечно копаться в Google Scholar.
2️⃣ У каждой работы есть официальная ссылка, а у некоторых — прямая ссылка на PDF. Я проверил сам: никакой регистрации и платных подписок — просто открываешь и читаешь.
Гораздо удобнее, чем сайты-агрегаторы научных работ.
3️⃣ Это не просто собрание материалов. У проекта есть офлайн-встречи в десятках городов по всему миру, а записи прошлых выступлений доступны на YouTube.
Я посмотрел несколько выступлений по распределённым системам — это сильно экономит время по сравнению с самостоятельным чтением десятков работ.
Этот проект действительно экономит огромное количество времени всем, кто занимается программированием.
И вот что многие упускают: это не просто список научных работ. Это тщательно отобранная коллекция, которую годами поддерживают инженеры и исследователи. По сути, они уже отфильтровали за вас 80% бесполезных работ.
Я прочитал около десятка работ, двигаясь по этому каталогу, и качество оказалось намного выше, чем при случайном поиске на arXiv.
Только на отборе материалов можно сэкономить как минимум полдня.
А где вы сейчас в основном ищете научные работы? Есть источники лучше этого?
https://github.com/papers-we-love/papers-we-love
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - papers-we-love/papers-we-love: Papers from the computer science community to read and discuss.
Papers from the computer science community to read and discuss. - papers-we-love/papers-we-love
❤2
Настоящая находка среди репозиториев.
В нём собраны все основные шаги по защите и усилению безопасности 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
❤5
🚀 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
❤5
Отключаем логирование в консоль всего одним параметром.
Полезно в контейнерах, где логи собираются только из файлов или через 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
❤5
Дикая 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
❤4👍2
🚀 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
❤6