Java Portal | Программирование (@Java_Iibrary) — Telegram-канал | Telegram Dialogs
Все каналы
Java Portal | Программирование

Java Portal | Программирование

@Java_Iibrary

12K подписчиков технологии 💬 Комментарии открыты

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Последние публикации

Java Portal | Программирование
17.07.2026 17:41 · 👁 318
Серия о проектировании систем : Кэш Кэш — это временное хранилище, в котором в памяти сохраняются результаты ресурсоёмких запросов или часто используемые данные, чтобы последующие обращения обрабатывались быстрее. При каждой загрузке страницы выполняется один или несколько запросов к базе данных. Многократные обращения к базе могут значительно снижать производительность приложения. Кэш помогает решить эту проблему. > Уровень кэширования Отдельный уровень кэширования даёт несколько преимуществ: - повышает производительность системы; - снижает нагрузку на базу данных; - позволяет масштабировать кэш независимо от других компонентов. Работа происходит следующим образом: 1. Получив запрос, веб-сервер сначала проверяет, есть ли нужный ответ в кэше. 2. Если ответ есть, сервер отправляет его клиенту. 3. Если ответа нет, сервер обращается к базе данных, сохраняет результат в кэше и отправляет его клиенту. Такая стратегия называется read-through cache — «сквозное чтение через кэш». Существуют и другие стратегии кэширования. Выбор зависит от типа и объёма данных, а также от характера обращений к ним. > Когда использовать кэш? Кэш особенно полезен, когда данные: - часто читаются; - редко изменяются. Важные данные должны храниться в постоянном хранилище, поскольку кэш обычно находится в оперативной памяти и не предназначен для долговременного хранения. > Политика истечения срока действия Рекомендуется задавать срок жизни кэшированных данных. Без такой политики данные могут оставаться в памяти неограниченно долго. Слишком короткий срок жизни приведёт к частым обращениям к базе данных, а слишком длинный — к тому, что данные в кэше устареют. > Согласованность данных Необходимо поддерживать синхронизацию между основным хранилищем и кэшем. Несогласованность может возникнуть, если изменения в базе данных и кэше выполняются не в рамках одной транзакции. > Предотвращение сбоев Один сервер кэша является единой точкой отказа, или SPOF — Single Point of Failure. Поэтому для повышения отказоустойчивости рекомендуется использовать несколько серверов кэша. > Политика вытеснения Когда кэш заполняется, добавление новых элементов может приводить к удалению уже существующих. Этот процесс называется вытеснением из кэша. Самая популярная политика вытеснения — LRU, Least Recently Used, то есть удаление данных, которые не использовались дольше всего. 👉 Java Portal
Java Portal | Программирование
17.07.2026 16:07 · 👁 369
Принципы проектирования программного обеспечения 👇 [1.] KISS (Keep It Simple, Stupid) ▶Программное обеспечение должно быть максимально простым. ▶Используйте понятный и лаконичный код, избегайте излишней сложности и сосредотачивайтесь на основных функциях. [2.] DRY (Don't Repeat Yourself) ▶Код не должен дублироваться. ▶Используйте функции и классы для объединения общего кода. ▶Применяйте переменные и константы для хранения значений, которые используются в нескольких местах. [3.] YAGNI (You Ain't Gonna Need It) ▶Не добавляйте в программное обеспечение функции, которые не нужны. ▶Поддерживайте простоту и удобство сопровождения. [4.] SOLID ▶ Принцип единственной ответственности – класс должен выполнять только одну задачу. ▶ Принцип открытости/закрытости – классы должны быть открыты для расширения, но закрыты для изменения. ▶ Принцип подстановки Барбары Лисков – объекты дочернего класса должны заменять объекты базового класса без нарушения функциональности. ▶Принцип разделения интерфейса – клиенты не должны зависеть от методов, которые они не используют. ▶Принцип инверсии зависимостей – зависимости должны внедряться в класс, а не быть жёстко закодированными. [5.] Принцип наименьшего удивления** ▶ Разрабатывайте программное обеспечение так, чтобы оно соответствовало ожиданиям пользователя. ▶ Используйте знакомую терминологию и соглашения, предоставляйте понятные инструкции. ▶ Применяйте четкие и лаконичные сообщения об ошибках. [6.] Принцип модульности** ▶ Проектируйте программное обеспечение как набор независимых модулей. ▶ Это упрощает понимание, сопровождение и тестирование кода. [7.] Принцип абстракции ▶ Скрывайте детали реализации от пользователя. ▶ Это делает программное обеспечение более понятным и удобным. [8.] Принцип инкапсуляции ▶Программное обеспечение должно скрывать внутреннее состояние объекта от внешнего мира. ▶Это повышает устойчивость и удобство сопровождения. [9.] Принцип наименьшего знания ▶ Проектируйте программное обеспечение так, чтобы минимизировать объем знаний модуля о других модулях. ▶ Это помогает повысить модульность и гибкость системы. [10.] Принцип низкой связности и высокой когезии ▶Связность – это степень зависимости элементов модуля друг от друга. ▶Модуль с низкой связностью имеет мало зависимостей, и его элементы слабо зависят друг от друга. ❗ Когезия – это степень, с которой элементы модуля относятся к одной цели. ▶ Модуль с высокой когезией имеет одну четко определенную задачу, и все его элементы связаны с её выполнением. 👉 Java Portal
Java Portal | Программирование
17.07.2026 15:41 · 👁 453
На Stepik вышла программа «DevOps с нуля: от Linux до Kubernetes» Это комплексная программа из 5 практических курсов по ключевым технологиям DevOps: Linux, Git, Docker, GitLab CI/CD, Kubernetes Вы последовательно пройдёте путь от работы в Linux и управления кодом через Git до контейнеризации приложений, настройки CI/CD-пайплайнов и развёртывания в Kubernetes. Что вы изучите: • работу с Linux и командной строкой • Git и контроль версий в реальных проектах • создание Docker-образов и запуск контейнеров • автоматизацию сборки, тестирования и деплоя в GitLab CI/CD • развёртывание и управление приложениями в Kubernetes • сети, хранилища, конфигурации и секреты • диагностику инфраструктуры и автоматизацию рутинных задач ... и многое другое Все знания закрепляются на практике с помощью заданий с автопроверкой. Материал подаётся последовательно и понятным языком: с примерами, схемами и демонстрациями. Во время обучения можно задавать вопросы по урокам и заданиям, получать обратную связь и помощь при возникновении сложностей. После прохождения программы вы получите сертификат, который можно добавить в резюме. Скидка 20% на 48 часов: по промокоду DEVOPS20 стоимость всей программы составит 10 392 ₽. Открыть программу на Stepik
Java Portal | Программирование
17.07.2026 06:07 · 👁 642
💡 Используйте Optional.orElseThrow(), когда отсутствие значения — это ошибка. ✅ orElse(null) → NPE возникает позже, далеко от места поиска значения ✅ orElseThrow() останавливает выполнение в месте возникновения проблемы и выбрасывает понятное исключение ✅ Передавайте Supplier, чтобы в сообщении было указано, какое именно значение отсутствует #Java #Optional 👉 Java Portal
Java Portal | Программирование
16.07.2026 14:13 · 👁 760
Я только что наткнулся на этот репозиторий — и он отличный. Хотите самостоятельно хостить OAuth 2.0-аутентификацию и не зависеть от Auth0, Clerk, Firebase или Supabase? Тогда OpenAuth — именно то, что вам нужно. Это универсальный провайдер аутентификации на основе стандартов, который можно полностью развернуть в собственной инфраструктуре. Он работает с любым фреймворком и на любой платформе, а также совместим с любым OAuth 2.0-клиентом. Главные возможности: Полная поддержка OAuth 2.0 — его может использовать любой OAuth-клиент. Гибкое развёртывание: Node.js, Bun, AWS Lambda или Cloudflare Workers. Нативная поддержка Google, GitHub и других провайдеров, а также локальных сценариев: email и пароль, PIN-код и другие. Готовый интерфейс, который можно полностью настроить или заменить собственным. Полный контроль над управлением пользователями: через простой callback success можно реализовать собственную логику создания и поиска пользователей. Лёгкое хранилище на основе KV, включая Cloudflare KV и DynamoDB. Типобезопасный API и простая интеграция. Проект создан командой SST. Сейчас он находится в бета-версии, но уже набрал более 7 000 звёзд на GitHub и активно развивается. OpenAuth отлично подойдёт тем, кому нужны полный контроль над данными, отсутствие vendor lock-in, предсказуемые расходы при масштабировании и единая аутентификация для нескольких приложений. Стоит сохранить, особенно если вы разрабатываете SaaS. https://github.com/anomalyco/openauth 👉 Java Portal
Java Portal | Программирование
16.07.2026 12:08 · 👁 807
⚡️💬 Оригинальный Claude API от $0.40 за 1M токенов Без VPN, дорогих подписок и подмены модели под капотом. ClaudeHub — для тех, кто использует ИИ в коде, учёбе, работе, ботах и своих проектах. выбираете Claude — получаете Claude Платите только за фактическое использование токенов и быстро начинаете через Telegram-бота. Подходит для Cursor, Claude Code, Cline, Roo, Continue и любых проектов через API. 🆓 Первые 100 пользователей получают 50₽ на баланс по промокоду: FIRST100 ✨ Быстрый старт: @claudehub_bot 🔗 Регистрация: app.claudehub.fun/register 💬 Поддержка: t.me/claudehub_support
Java Portal | Программирование
16.07.2026 06:07 · 👁 748
Сис. дизайн: Балансировщик нагрузки Балансировщик нагрузки равномерно распределяет входящий трафик между веб-серверами, объединёнными в балансируемую группу. - Пользователь подключается напрямую к публичному IP-адресу балансировщика нагрузки. При такой схеме клиенты больше не могут обращаться к веб-серверам напрямую. - Это повышает безопасность: для взаимодействия между серверами используются приватные IP-адреса, недоступные из интернета. - Балансировщик нагрузки взаимодействует с веб-серверами через приватные IP-адреса. Добавив второй веб-сервер, мы устранили проблему отсутствия отказоустойчивости и повысили доступность веб-уровня. - Если сервер 1 выйдет из строя, весь трафик будет перенаправлен на сервер 2. Это не позволит сайту стать недоступным. - Если трафик сайта резко вырастет и двух серверов окажется недостаточно, балансировщик нагрузки позволит корректно решить эту проблему. В пул можно добавить дополнительные веб-серверы, после чего балансировщик автоматически начнёт направлять запросы и на них. Вертикальное и горизонтальное масштабирование Вертикальное масштабирование, также называемое scale up, — это процесс увеличения мощности серверов: добавления CPU, оперативной памяти и других ресурсов. Горизонтальное масштабирование, также называемое scale out, позволяет масштабировать систему за счёт добавления новых серверов в пул ресурсов. При низкой нагрузке вертикальное масштабирование может быть хорошим вариантом, а его главное преимущество — простота. Ограничения вертикального масштабирования - Невозможно бесконечно добавлять CPU и память одному серверу. - Отсутствует отказоустойчивость. Если сервер выходит из строя, сайт или приложение полностью перестаёт работать. Для крупномасштабных приложений горизонтальное масштабирование обычно предпочтительнее из-за ограничений вертикального масштабирования. Если множество пользователей одновременно обращаются к веб-серверу и нагрузка достигает его предела, пользователи сталкиваются с увеличением времени ответа или вообще не получают ответ. Эта проблема решается с помощью горизонтального масштабирования и балансировщика нагрузки. 👉 Java Portal
Java Portal | Программирование
15.07.2026 16:07 · 👁 790
💡 Java I/O: используйте Files.copy(), чтобы скопировать файл одной строкой. ✅ Отлично подходит для резервных копий: data.csv → data.csv.bak ✅ Используйте REPLACE_EXISTING, если целевой файл уже может существовать ✅ Работает с Path, поэтому код переносим между разными ОС #Java #Files 👉 Java Portal
Java Portal | Программирование
15.07.2026 06:07 · 👁 865
Java Streams: limit(n) превращает бесконечный поток в конечный. ✅ Полезно при работе со Stream.iterate() / generate() — они могут создавать бесконечные потоки ✅ limit(5) означает: «взять первые 5 элементов и остановиться» ✅ Отлично подходит для выборки данных или получения первых N значений #Java #Streams 👉 Java Portal
Java Portal | Программирование
14.07.2026 16:07 · 👁 907
Системный дизайн: База данных По мере роста числа пользователей одного сервера, на котором размещены веб-уровень и уровень данных, становится недостаточно. Поэтому нам потребуется несколько серверов: - один для обработки веб- и мобильного трафика — веб-уровень (web tier); - другой для базы данных — уровень данных (data tier). Разделение серверов, обрабатывающих веб- и мобильный трафик, и серверов базы данных позволяет масштабировать эти уровни независимо друг от друга. Какую базу данных использовать? Можно выбрать между традиционной реляционной базой данных — RDBMS, или SQL-базой данных — и нереляционной базой данных — NoSQL. Реляционные базы данных представляют и хранят данные в виде таблиц и строк. С помощью SQL можно выполнять операции JOIN между различными таблицами базы данных. Нереляционная база данных может быть подходящим выбором, если: - приложению требуется сверхнизкая задержка; - данные неструктурированы или не имеют связей; - требуется только сериализация и десериализация данных — JSON, YAML и т. д.; - необходимо хранить огромные объёмы данных. 👉 Java Portal
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.