#Собес #kubernetes
🤔 Каковы лучшие практики развертывания приложений в Kubernetes?
💬 Кратко:
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения
ресурсов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения
ресурсов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
#полезное
🥄 Google-json (GSON)
Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
👉 Новости 👉 База вопросов
Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#полезное
🛞 Сохраняем себе: Jimmer
это иммутабельный ORM, заточенный под работу с графами объектов, а не отдельными сущностями.
🔵 Авто-генерация DTO
🔵 Без N+1 (batch fetch из коробки)
🔵 Умные SQL без лишних JOIN'ов
🔵 DSL с type-safety
🔵 GraphQL + TypeScript-генерация
🔵 Кеширование (включая Redis)
🔵 Работает через APT/KSP
⇢ https://github.com/babyfish-ct/jimmer
👉 Новости 👉 База вопросов
это иммутабельный ORM, заточенный под работу с графами объектов, а не отдельными сущностями.
⇢ https://github.com/babyfish-ct/jimmer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #kubernetes
🤔 Что такое Deployment в Kubernetes?
💬 Кратко:
Deployment - это объект Kubernetes, который управляет созданием, обновлением и масштабированием Pod-ов. Он позволяет автоматизировать развертывание приложений, обеспечивать отказоустойчивость и откатывать неудачные обновления.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Deployment - это объект Kubernetes, который управляет созданием, обновлением и масштабированием Pod-ов. Он позволяет автоматизировать развертывание приложений, обеспечивать отказоустойчивость и откатывать неудачные обновления.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤣 Слышал когда-нибудь про объект, который отказывается умирать?
В Java можно «воскресить» объект во время сборки мусора с помощью метода finalize(). Но это — рискованная практика, и сам метод уже помечен как устаревший.
Этот код демонстрирует поведение метода
👉 Новости 👉 База вопросов
В Java можно «воскресить» объект во время сборки мусора с помощью метода finalize(). Но это — рискованная практика, и сам метод уже помечен как устаревший.
Этот код демонстрирует поведение метода
finalize()
в Java — он вызывается только один раз перед удалением объекта сборщиком мусора. В КПпервой попытке объект «воскрешается» внутри finalize
, но при повторной попытке finalize
уже не вызывается, и объект действительно удаляется.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤣 Модель памяти в Java
Java управляет памятью в двух основных областях:
- Stack (стековая память) — хранит фреймы вызова методов и локальные переменные. Работает быстро и автоматически очищается при выходе из метода.
- Heap (куча) — используется для хранения объектов, созданных через
✅ Объекты всегда размещаются в куче (heap).
✅ Ссылки на эти объекты (например, локальные переменные) хранятся в стеке (stack).
✅ Неправильное управление созданием объектов или удержание ссылок дольше, чем нужно, может привести к утечкам памяти (memory leaks).
👉 Новости 👉 База вопросов
Java управляет памятью в двух основных областях:
- Stack (стековая память) — хранит фреймы вызова методов и локальные переменные. Работает быстро и автоматически очищается при выходе из метода.
- Heap (куча) — используется для хранения объектов, созданных через
new
. Управляется сборщиком мусора (Garbage Collector), работает медленнее, но даёт больше гибкости.public class MemoryDemo {
public static void main(String[] args) {
int x = 10; // Хранится в стеке
Person p = new Person("Alice"); // 'p' находится в стеке, объект — в куче
p.sayHello(); // Вызов метода создаёт новый стек-фрейм
}
}
class Person {
String name; // Поле хранится в куче вместе с объектом
Person(String name) {
this.name = name;
}
void sayHello() {
System.out.println("Hello, " + name);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
Техническое собеседование. Лето 2024. Вилка: 300-350к. Опыт в резюме: 4+ года. В конце собеседования были задачи на структуры данных, оптимизацию запросов и работу с БД.
Вопросы:
- Как логировать время выполнения методов в бинах Spring унифицированно?
- Как централизованно обрабатывать исключения в REST-контроллерах?
- Как работает @Transactional и что происходит, если метод без аннотации вызывает метод с аннотацией?
- Как спроектировать доступ к балансам пользователей из разных потоков, чтобы операции были консистентны?
Все вопросы можно посмотреть на нашей платформе
#собес #коллеции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1👍1
#Собес #kubernetes
🤔 Что такое CNI (Container Networking Interface) в Kubernetes?
💬 Кратко:
CNI - это спецификация, определяющая стандартный интерфейс для подключения сетевых плагинов в Kubernetes. Она позволяет расширять сетевые возможности кластера, добавляя такие решения, как Calico, Flannel и Cilium.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
CNI - это спецификация, определяющая стандартный интерфейс для подключения сетевых плагинов в Kubernetes. Она позволяет расширять сетевые возможности кластера, добавляя такие решения, как Calico, Flannel и Cilium.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
#статьи
❤️🔥 Вредные советы Java
Автор показывает соблазн простого распараллеливания задач на Java через
Однако такой подход использует
(
Если в процессе одна из задач выбрасывает
даже после возврата ошибки.
Параллельные стримы группируют задачи по частям коллекции, и минимальной единицей
может быть блок из нескольких элементов, это может привести к «неравномерной» нагрузке и даже ухудшению производительности по сравнению с ручным управлением через
Блокирующие операции внутри задач могут полностью "забить"
Читать подробнее<...>
👉 Новости 👉 База вопросов
Автор показывает соблазн простого распараллеливания задач на Java через
Stream API
и .parallel()
вместо явных ExecutorService
, Future
, invokeAll
и ручной обработки InterruptedException
Однако такой подход использует
common ForkJoinPool
, и его поведение не всегда предсказуемо, результаты могут отличаться между запусками, особенно при исключениях в задачах (
callsCounter
может сильно варьироваться)Если в процессе одна из задач выбрасывает
Exception
, выполнение остальных может продолжаться даже после возврата ошибки.
Параллельные стримы группируют задачи по частям коллекции, и минимальной единицей
может быть блок из нескольких элементов, это может привести к «неравномерной» нагрузке и даже ухудшению производительности по сравнению с ручным управлением через
ExecutorService
. Блокирующие операции внутри задач могут полностью "забить"
common ForkJoinPool
, что повлияет и на выполнение CompletableFuture.thenApplyAsync()
, если вы не указали свой Executor
Читать подробнее<...>
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #kubernetes
🤔 Что такое Pod Network в Kubernetes?
💬 Кратко:
Pod Network - это виртуальная сеть, которая соединяет Pod-ы внутри кластера. Она позволяет Pod-ам взаимодействовать друг с другом без необходимости ручной настройки маршрутизации.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Pod Network - это виртуальная сеть, которая соединяет Pod-ы внутри кластера. Она позволяет Pod-ам взаимодействовать друг с другом без необходимости ручной настройки маршрутизации.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🏠 Совет по Java: используйте
✅
Но, он не потокобезопасен (используйте
👉 Новости 👉 База вопросов
HashMap
как реализацию Map
, когда нужна максимальная производительность общего назначения.HashMap
внутри реализован как хеш-таблица, и в среднем операции put(), get()
и remove()
работают за O(1).Но, он не потокобезопасен (используйте
ConcurrentHashMap
, если нужна потокобезопасность).Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
#полезное
🏕 Ссылки на методы и функциональные интерфейсы:
Познакомься с ссылками на методы — более чистым и умным способом передавать поведение в современной Java.
В связке с функциональными интерфейсами они позволяют писать лаконичный, читаемый и элегантный код без потери типобезопасности и выразительности.
👉 Новости 👉 База вопросов
Познакомься с ссылками на методы — более чистым и умным способом передавать поведение в современной Java.
В связке с функциональными интерфейсами они позволяют писать лаконичный, читаемый и элегантный код без потери типобезопасности и выразительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
#Собес #kubernetes
🤔 Что такое DNS в Kubernetes?
💬 Кратко:
Kubernetes DNS - это встроенный сервис, который автоматически назначает DNS-имена сервисам и Pod-ам в кластере. Он позволяет приложениям находить друг друга по доменным именам, а не по IP-адресам.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Kubernetes DNS - это встроенный сервис, который автоматически назначает DNS-имена сервисам и Pod-ам в кластере. Он позволяет приложениям находить друг друга по доменным именам, а не по IP-адресам.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
#полезное
🥄 Телеграфируем кодом Морзе через Java Stream API
Как с помощью Java Stream API реализовать кодирование и декодирование текста в азбуке Морзе. Объясняется история азбуки Морзе, принципы её работы и показано практическое применение функционального программирования в Java для преобразования текста в Морзе и обратно. Приятного изучения
Читать гайд
👉 Новости 👉 База вопросов
Как с помощью Java Stream API реализовать кодирование и декодирование текста в азбуке Морзе. Объясняется история азбуки Морзе, принципы её работы и показано практическое применение функционального программирования в Java для преобразования текста в Морзе и обратно. Приятного изучения
Читать гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1