Найти в Дзене
Не рекурсией единой. Решаем задачи с деревьями, используя очередь⁠⁠
В предыдущих частях мы познакомились с рекурсивным подходом решения деревьев. В этой части мы воспользуемся стэком. Рекурсия далека от идеала. Рекурсия чаще всего используется только во время собеседований (а этот цикл статей именно направлен на подгтовку к собеседования). В промышленной разработке её чаще избегают изза потенциальных следующих потенциальных проблем: Очеред (или Стэк) - популярный подход в решении задач на деревья. Во многом, задача на деревья определяется тем, как мы можем проитерироваться по всем узлам...
1 год назад
Проверяем является ли дерево бинарным деревом поиска
Продолжаем цикл статей про деревья. Основной целью этого цикла является практика и подготовка к собеседованиям а не промышленные решения (о них я расскажу в следующих частях). В этой части мы еще раз воспользуемся рекурсией для решения одной популярной задачи. Задача - проверить является ли дерево ли бинарным деревом поиска? Для начала определимся что такое бинарное дерево поиска: Такое дерево называется Бинарным Деревом Поиска (Binary Search Tree). Но не стоит путать его с балансированым бинарным деревом...
1 год назад
Продолжаем решать деревья. Инвертирование дерева - одна из самых популярных задач⁠⁠
Эта часть является продолжением цикла лекций про деревья. В этой части мы снова воспользуемся рекурсией чтобы инвертировать дерево. Задача довольно популярна и по сложности является довольно простой. Допустим у нас есть дерево Допустим у нас есть дерево ниже: Инвертируем дерево Целью является инвертировать дерево. Те для каждого узла нужно поменять местами его левый и правый наследники...
1 год назад
Рекурсивно обходим деревья. Прямой, Центрированый, Обратный обходы⁠⁠
В прошлой части мы ознакомились с базовыми понятиями деревьев и обошли одно дерево рекурсией. В данной статье мы еще раз рассмотрим понятие рекурсии и посмотрим как небольшие во время итерации могут повлиять на результат. В данной части мы сфокусируемся на итерации, а в следующе мы уже будем использовать эти подходы для решения задач. Обход деревьев часто ощущается как лабиринт Давайте рассмотрим уже знакомое дерево: Прямой обход дерева (Префиксный) - NLR В прошло части мы уже итерировались по дереву рекурсивно...
1 год назад
Что такое деревья и как с ними работать. Используем Java⁠⁠
Деревья являются одним из самых пугающих вещей в разработке. Еще хуже дело обстоит, когда программист встречает задачу, связанную с деревьями, во время собеседования. В этой статье я постараюсь минимизировать боль, связанную с этой темой. Деревья бывают разные. Мы рассмотрим двоичное сбалансированное. В данной статье мы рассмотрим наиболее популярные — двоичные сбалансированные (красно-черные) деревья. Пример бинарного дерева. У каждого листка может быть не более двух наследников. Основные понятия...
1 год назад
Записываем состояние виртуальной машины Java с помощью Flight Recorder. Анализируем запись
Анализ работы JVM (Java Virtual Machine) Среди множества способов и решений для анализа виртуальной машины Java есть одно хорошее решение — Flight Recorder. Благодаря этой утилите работающая Java-машина может записывать все происходящее внутри. Достоинства Flight Recorder Если сравнивать Flight Recorder с другими похожими решениями то можно отметить Запуск Flight Recorder. Предположим, вы уже создали свое приложение и готовы запустить его с помощью JAR. Если вы хотите при старте приложения запустить...
1 год назад
Regex - язык регулярных выражений для новичков. Интеграция Regex'a c Java. Введение⁠⁠
Птичка, цветочек, прямые линии. Почти неотличимо от обычного регекса) Регулярные выражения, можно сказать, представляют собой своего рода язык запросов, благодаря которому можно выполнять следующие ключевые задачи: Regex не ограничивается только языком Java. Этот язык используется повсеместно в области информационных технологий. Зная его, вы можете применять свои навыки в множестве контекстов. Поддержка регулярных выражений присутствует в большинстве языков программирования, и множество программ полагаются на регулярные запросы...
1 год назад
Переезд айтишником в Великобритании. Схемы получения визы⁠⁠
Статья о том как можно законно переехать в Англию айтишником (хотя и не только им). Какие есть способы и стратегии переезда на постоянное место жительство в Великобриташку. Проще всего переехать айтишникам. Но не только им. В первую очередь эта статья пригодится - программистам, тестировщикам, аналитикам, веб дизайнерам и всем кто участвует в разработке софта. Но не только им. Но это совершенно не значит что описанные ниже визы пригодны лишь для них. Я встречал людей вообще вне айти которые также получали спонсорство или приезжали учеными (тоже по рабочей визе)...
1 год назад
GraphQL все еще неизвестный зверь в промышленной разработке
В данной статье мы разберем, что такое GraphQL, и построим приложение с использованием Java и Spring. GraphQL стал опенсорсным в 2015 году, однако за десять лет так и не достиг такой же популярности, как REST-архитектура (на графике ниже видно, что нет явной тенденции к большему росту). Нельзя прямо сравнивать GraphQL с REST, поскольку первый представляет собой язык запросов, а второй – архитектурный стиль. Тем не менее, оба имеют реализации в промышленной разработке. GraphQL в двух словах это гибкий контракт...
1 год назад
Архитектура минимального Java проекта перед трудоустройством⁠⁠
Эту статью я планировал написать еще миллиард лет назад тк многие спрашивали что нужно знать и уметь, перед тем как пытаться заходить в айти Java джуном (хотя по сути интерном а не джуном). Три Базовых Слоя. Фронт, Бэк, База. Большинство архитектур представлено в виде трех слоев. Каждый слой может варьироваться. Фронт может быть: Бэк может быть: База может быть: Что за цирк? Почему так сложна? Я не перечислил все вариации, но для новичка и вышесказанное уже выглядит немного пугающе. Для новичка пойдет следующий вариант: Красное - значит так себе, но пойдет...
1 год назад
Используем Grafana для визуализации данных. Подключаем базу данных, оповещения и строим графики. Часть 1⁠⁠
Grafana это бесплатное решение для визуализации данных. Из коробки она может довольно легко подтянуть данные с логов, баз данных а также приложений. Если понять основные моменты работы с графаной то визуализировать данные на ней довольно удобно. Графана довольно мощный инструмент и имеет множество возможностей. Запускаем Grafana в докере. Используя докер мы можем запустить графану, чтобы это сделать нужно: Содержание файла доступно по этой ссылке. Welcome to Grafana. Через несколько секунд на вашем сервере на 3000 порту будет доступна Grafana...
1040 читали · 1 год назад
Простейший способ ускорить изучение мира программирования. Арендуем копеечный сервер и используем его для разработки и инфраструктуры⁠⁠
Многие начинающие программисты кодят исключительно на своем компьютере те "локалхосте" и не имеют представления где и как запускаются программы в промышленности. Арендованный сервер за 50-100 руб в месяц не просто будет ответом на оба вопроса, но также станет хорошим толчком к пониманию общей инфраструктуры, необходимой для программиста. Ищем дешевый сервер. Этап первый. Ищем копеечный сервер для самых базовых нужд, используя https://poiskvps.ru/ и это не рекламный хост, а один из наиболее популярных...
1 год назад