Создание кластера Kubernetes может быть сложным процессом, который включает в себя множество опций, но сложные вещи могут стать более понятными, когда их разложить на части. В этой статье мы демистифицируем процесс создания кластера Kubernetes, понимая минимальный набор компонентов и настроек, необходимых для запуска узла Kubernetes внутри виртуальной машины.
Пользователь
Структуры данных в картинках. HashMap
Продолжаю попытки визуализировать структуры данных в Java. В предыдущих сериях мы уже ознакомились с ArrayList и LinkedList, сегодня же рассмотрим HashMap.
HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Разрешение коллизий осуществляется с помощью метода цепочек.
Сказ о том, как я за год решил более 600 leetcode задач
Всем салют!
Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...
Работа Apache Kafka на примерах. Поднимаем Kafka Cluster используя docker-compose
В этой статье продемонстрирую и объясню работу Kafka, используя как можно меньше определений и больше практики. Мы рассмотрим 3 сценария работы с Kafka. Для последнего сценария мы поднимем Kafka Cluster в Docker и с помощью UI увидим, как происходит общение между сервисами.
Kotlin, как работает suspend под капотом
Как компилятор Kotlin преобразует suspend код? Что получается в итоге? Разбираемся в машине состояний suspend кода.
CAP-теорема простым, доступным языком
При разработке распределённых систем вы наверняка часто услышите упоминания об CAP-теореме. Давайте попробуем понять её через ситуацию, которая могла возникнуть в реальной жизни.
Часть №1: Идея нового сервиса — «Позвони, напомню!»
Вчера, когда ваша супруга в очередной раз оценила тот факт, что вы вспомнили о её дне рождения и подарили шикарный подарок, в голове всплыла забавная идея. «Хм, а ведь люди вечно всё забывают». А у вас просто блестящая память! Почему бы не сделать новый сервис, который позволит полностью раскрыться вашему таланту? С каждой мыслью об этой идее вам всё больше и больше она нравится. Вы уже даже придумали рекламу, которую можно было бы напечатать в газете:
«Позвони, напомню» — Никогда не забывайте, даже если вы не помните, что забыли!
Плохо себя чувствуете из-за того, что вы что-то забыли? Не переживайте. Помощь на расстоянии одного телефонного звонка!
Если вам нужно что-то запомнить, просто позвоните и сообщите нам об этом! Допустим, позвоните нам и сообщите телефон вашего босса. Забудьте про него. Когда вам нужно будет вспомнить его, перезвоните, и мы вам обязательно напомним.
Всего 3 рубля за звонок.
Типичное обращение в ваш сервис выглядело бы вот так:
Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений
Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).
Итак, вы пытаетесь вспомнить все, что знаете перед собеседованием и не важно сколько лет опыта, без подготовки вас все равно могут поймать на том вопросе, который вы вроде бы помнили, но именно на собеседовании забыли. Это шпаргалка позволит вам освежить некоторые из ваших знаний.
Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
Spring AOP. Маленький вопросик с собеседования
public class MyServiceImpl {
@Transactional
public void method1() {
//do something
method2();
}
@Transactional (propagation=Propagation.REQUIRES_NEW)
public void method2() {
//do something
}
}
Ну, мы же все умные, документацию читаем или, по крайней мере, видео выступлений Евгения Борисова смотрим. Соответственно и правильный* ответ знаем (правильный* — это такой, который от нас ожидает услышать тот, кто спрашивает). И звучать он должен примерно так.
«В связи с тем, что для поддержки транзакций через аннотации используется Spring AOP, в момент вызова method1() на самом деле вызывается метод прокси объекта. Создается новая транзакция и далее происходит вызов method1() класса MyServiceImpl. А когда из method1() вызовем method2(), обращения к прокси нет, вызывается уже сразу метод нашего класса и, соответственно, никаких новых транзакций создаваться не будет».
Но знаете, как это бывает, вроде и ответ правильный уже давно знаешь. И применяешь это знание регулярно. А вдруг раз… и неожиданно задумаешься: «Подождите-ка, ведь если мы используем Spring AOP, то там могут создаваться прокси и через JDK, а могут и с CGLIB; а еще возможно, что CTW или LTW подключили. И что такой ответ всегда будет верен?».
Ну что ж: интересно? Надо проверить.
Еще раз про IP-адреса, маски подсетей и вообще
IP-адрес (v4) состоит из 32-бит. Любой уважающий себя админ, да и вообще айтишник (про сетевых инженеров молчу) должен уметь, будучи разбуженным среди ночи или находясь в состоянии сильного алкогольного опьянения, правильно отвечать на вопрос «из скольки бит состоит IP-адрес». Желательно вообще-то и про IPv6 тоже: 128 бит.
Обстоятельство первое. Всего теоретически IPv4-адресов может быть:
232 = 210*210*210*22 = 1024*1024*1024*4 ≈ 1000*1000*1000*4 = 4 млрд.
Ниже мы увидим, что довольно много из них «съедается» под всякую фигню.
Записывают IPv4-адрес, думаю, все знают, как. Четыре октета (то же, что байта, но если вы хотите блеснуть, то говорите «октет» — сразу сойдете за своего) в десятичном представлении без начальных нулей, разделенные точками: «192.168.11.10».
В заголовке IP-пакета есть поля source IP и destination IP: адреса источника (кто посылает) и назначения (кому). Как на почтовом конверте. Внутри пакетов у IP-адресов нет никаких масок. Разделителей между октетами тоже нет. Просто 32-бита на адрес назначения и еще 32 на адрес источника.
Телеграм бот прогноза погоды на Java Spring
Создание простого бота для Телеграм на Java Spring, который демонстрирует базовые возможности работы с Telegram API.
InlineKeyboard в Телеграмм ботах (Telegram Bots)
TelegramBot. Базовый функционал. Мухи отдельно, котлеты отдельно. (Часть 2)
Это продолжение первой части статьи по программированию ботов для телеграмм на Java
TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)
Кому интересно дальше, милости прошу под кат…
Плюсы и минусы лицензий открытого ПО
Характеристики лицензий:
1. Apache Software License
2. Лицензия BSD
3. GNU General Public License
4. Лицензии MIT
5. Mozilla Public License
6. Консорциум Всемирной паутины
Многопоточность в Java
Наиболее очевидная область применения многопоточности – это программирование интерфейсов. Многопоточность незаменима тогда, когда необходимо, чтобы графический интерфейс продолжал отзываться на действия пользователя во время выполнения некоторой обработки информации. Например, поток, отвечающий за интерфейс, может ждать завершения другого потока, загружающего файл из интернета, и в это время выводить некоторую анимацию или обновлять прогресс-бар. Кроме того он может остановить поток загружающий файл, если была нажата кнопка «отмена».
Еще одна популярная и, пожалуй, одна из самых хардкорных областей применения многопоточности – игры. В играх различные потоки могут отвечать за работу с сетью, анимацию, расчет физики и т.п.
Давайте начнем. Сначала о процессах.
java.util.concurrent. Часть первая: Зачем и почему?
Эта статья, хоть и не является прямым переводом, основана на статье Брайана Гетца Concurrency in JDK 5.0
Пишем кеш с определенным временем хранения объектов с использованием java.util.concurrent
- Легковесность
- Потокобезобасность
В общем-то и все. До написания данной задачи с java.util.concurrent дела не имел. На мысль использования этого пакета меня натолкнул один мой коллега, у которого было нечто подобное, но не соответствовало тому функционалу который был нужен. Итак, начнем:
В качестве ключа будет выступать внутренний класс, который помимо прямого назначения будет определять он является «живым» или его можно удалить с кеша, так как время его существования подошло к концу:
Учимся готовить: Spring 3 MVC + Spring Security + Hibernate
Это моя очередная статья, посвящённая разработке веб приложений на Java. Хочу предложить вам сделать небольшую систему учёта клиентов, написанную с использованием фреймворка Spring и библиотеки Hibernate.
Что будет в приложении:
Будет простой менеджер контактов, позволяющий добавлять в базу новые записи, просматривать имеющиеся, удалять ненужные. Сведения будут храниться в базе данных. Доступ к приложению – через веб, с аутентификацией и авторизацией пользователей.
Что будем использовать:
- веб фреймворк Spring MVC,
- фреймворк Spring Security,
- ORM библиотеку Hibernate,
- MySQL в качестве СУБД.
Инфраструктура:
- редактор SpringSource Tool Suite,
- сборщик проектов Maven,
- система логгирования Log4j,
- постоянное подключение к интернету.
В моей предыдущей статье о Spring MVC был упущен ряд моментов по использованию аннотаций в Java-коде и применению Maven для сборки проекта. В данной статье я попытался исправить упущение.
Цель статьи – показать начинающим веб разработчикам совместное использование различных технологий платформы Java.
Создание объектов в Javascript
Работа с объектами в JavaScript: теория и практика
В статье НЕ будет ни слова про: эмуляцию традиционной класс-объектной парадигмы, синтаксический сахар, обертки и фреймворки.
Сложность материала будет нарастать от начала к концу статьи, так что для профи первые части могут показаться скучными и банальными, но дальше будет намного интереснее :)
Java сертификация — прохождение SCJP и SCBCD
В некоторой степени хотел бы заполнить пробел этой статьей. Под катом – мое мнение по вопросу – сдавать или не сдавать сертификации, краткий обзор сертификаций по Java, а так же собственный опыт и ощущения от регистрации, подготовки и сдачи Java сертификаций SCJP и SCBCD.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность