Java for Beginner
869 subscribers
1.01K photos
275 videos
14 files
1.69K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Варианты ответа:
Anonymous Quiz
6%
check check false
53%
false
18%
check true
24%
true
😱1
Почему Entity нельзя напрямую отдавать в REST? 🤓

Ответ:

Entity привязаны к persistence-контексту, содержат ленивые связи и аннотации ORM.

Это приводит к N+1, LazyInitializationException и утечке внутренней модели. DTO решают эти проблемы.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🍾3
История IT-технологий сегодня — 17 января


ℹ️ Кто родился в этот день

Анита Борг (англ. Anita Borg Naffz; 17 января 1949 — 6 апреля 2003)американская учёная в области компьютерных технологий и вычислений. Анита родилась в Чикаго, штат Иллинойс, росла в Палатине, штат Иллинойс, а затем в Kaneohe на Гавайях и в Мукилтео (Mukilteo), Вашингтон. Основала Институт женщин и технологий (ныне AnitaB.org) и конференцию Grace Hopper Celebration. Она работала над операционными системами и высокопроизводительными вычислениями в Digital Equipment Corp (DEC), занимаясь вопросами архитектуры памяти.

Бе́нджамин Фра́нклин (англ. Benjamin Franklin [ˈbɛndʒəmɪn ˈfɹæŋklɪn]; 17 января 1706, Бостон, Провинция Массачусетс-Бэй, Британская империя — 17 апреля 1790, Филадельфия, Пенсильвания, США)американский политический деятель, дипломат, изобретатель, учёный, философ, писатель, масон, полимат. Одна из самых влиятельных фигур XVIII века. Его эксперименты с электричеством привели к открытию закона сохранения заряда и введению терминов «положительный» и «отрицательный». Вся современная двоичная логика и работа транзисторов физически базируются на концепции заряда, предложенной Франклином.


🌐 Знаковые события

1969Возвращение корабля «Союз-4». После первой в истории успешной стыковки и перехода экипажа, 17 января Владимир Шаталов успешно приземлился. Это был триумф советской космической программы, доказавший возможность сборки станций на орбите.


#Biography #Birth_Date #Events #17Января
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
С 10.01 по 16.01
Предыдущий пост(с 27.12 по 09.01)

Воскресный мотивационный пост:
не было мотивации

Запись встреч/видео:
Telegram AI Bot. Версия Telegram API 9.3+

Обучающие статьи:
Java:
Раздел 7. Алгоритмы

Глава 1: Основы анализа алгоритмов
Пространственная сложность и компромиссы
Линейный поиск и его ниша
Агрегация за один проход: максимум эффективности
Практика

Глубокая архитектура и внутреннее устройство RabbitMQ
Обработка ошибок и мониторинг RabbitMQ

Полезные статьи и видео:
ПОДКЛЮЧЕНИЕ GPT GO на ГОД!

Осознанная стоимость абстракций: Autoboxing в современной Java
Перевод Spring Boot приложения с HTTP на HTTPS без ругани браузера

Как и всегда, задачи можно найти под тегом - #Tasks, вопросы с собеседований - #собеседование
👍31
История IT-технологий сегодня — 18 января


ℹ️ Кто родился в этот день

Рэй Милтон Долби (англ. Ray Milton Dolby; 18 января 1933, Портленд — 12 сентября 2013, Сан-Франциско) — американский инженер и изобретатель. Вошёл в историю как разработчик системы шумопонижения, получившей его имя. Логотип Dolby значился на миллионах единиц звукозаписывающего оборудования и аудиокассет, производившихся в мире на протяжении нескольких десятилетий.


🌐 Знаковые события

2012 — Википедия на одни сутки закрыла доступ к своему англоязычному сайту в знак протеста против обсуждаемого в США законопроекта о борьбе с интернет-пиратством.


#Biography #Birth_Date #Events #18Января
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
2. Миграции с Flyway и LiquiBase. Основы управления БД

Это не очередной tutorial по настройке Flyway. Это инженерный разбор двух подходов к управлению БД, с реальными примерами на Spring Boot и PostgreSQL.

Я покажу:

🔹 Почему
@Entity ≠ схема БД и чем это опасно на проде
🔹 Как Hibernate "ломает" данные при ddl-auto=update (живая демонстрация с падением!)
🔹 Полное сравнение Flyway vs Liquibase — философия, плюсы, минусы
🔹 REAL-WORLD примеры миграций для существующего проекта OrderHub
🔹 Ошибки, с которыми столкнулся лично я, и как их исправить
🔹 И немного дебага как всегда)

Исходный код проекта на GitHub очень ждет Ваших звезд.

Ссылка на Youtube
Ссылка на Рутьюб

Смотрите, ставьте лайки, подписывайтесь на каналы!✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥21
История IT-технологий сегодня — 19 января


ℹ️ Кто родился в этот день

Леони́д Вита́льевич Канторо́вич (19 января 1912[9], Санкт-Петербург — 7 апреля 1986, Москва) — советский математик и экономист, один из создателей линейного программирования. Лауреат премии по экономике памяти Альфреда Нобеля 1975 года «за вклад в теорию оптимального распределения ресурсов». Академик АН СССР (1964), доктор физико-математических наук (1935), профессор.


🌐 Знаковые события

1978 — основан институт Санкт-Петербургский институт информатики и автоматизации РАН.

1983 — Apple представила один из первых персональных компьютеров с графическим интерфейсом (GUI) и мышью. Несмотря на коммерческий провал из-за цены в $10 000, именно Lisa проложила путь для Macintosh и Windows. Она ввела такие понятия, как «рабочий стол», «иконки» и «окна».


#Biography #Birth_Date #Events #19Января
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Раздел 7. Алгоритмы

Глава 3: Алгоритмы сортировки и подготовка данных

Назначение и стоимость сортировки: стратегическая инвестиция в данные

Сортировка — это процесс упорядочивания элементов согласно определенному критерию сравнения. Это одна из наиболее изученных и практически значимых операций в информатике, чья важность простирается далеко за пределы простого упорядочивания. Основные цели сортировки можно разделить на три категории.

Ускорение поиска

Главное практическое применение сортировки — обеспечение быстрого поиска. Неотсортированные данные допускают только линейный поиск с временной сложностью O(n). После сортировки становится возможным бинарный поиск, сокращающий время до O(log n). Это преобразует поиск из линейной в логарифмическую операцию, что для миллиона элементов означает сокращение с миллиона сравнений до всего 20.

// Демонстрация разницы в поиске
public class SearchComparison {
// Линейный поиск в неотсортированном массиве
public static int linearSearch(int[] array, int target) {
for (int i = 0; i < array.length; i++) {
if (array[i] == target) return i;
}
return -1;
}

// Бинарный поиск в отсортированном массиве
public static int binarySearch(int[] sortedArray, int target) {
int left = 0, right = sortedArray.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (sortedArray[mid] == target) return mid;
if (sortedArray[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
}


Улучшение представления данных

Сортировка делает данные понятными для человека. Пользовательские интерфейсы, отчеты, лог-файлы — везде отсортированные данные воспринимаются легче. Сортировка по алфавиту, дате, приоритету или релевантности — это не техническая необходимость, а требование человеко-компьютерного взаимодействия.

Обеспечение группировки и агрегации

Сортировка является предварительным шагом для многих алгоритмов анализа данных.

После сортировки идентичные или схожие элементы располагаются рядом, что упрощает:
Удаление дубликатов за один проход
Построение гистограмм и частотных распределений
Выполнение операций слияния (как в MergeSort)
Реализацию алгоритмов слияния интервалов или поиска пересечений


Сортировка как стратегическая инвестиция

Сортировку можно рассматривать как инвестицию с отложенной выгодой. Мы платим относительно высокую первоначальную цену — O(n log n) операций — чтобы получить ускорение в будущих операциях. Эта модель окупается, когда количество операций поиска значительно превышает единицу.

Рассмотрим математическую модель:
Стоимость сортировки: C₁ × n log n
Стоимость одного линейного поиска: C₂ × n
Стоимость одного бинарного поиска: C₃ × log n

Точка безубыточности наступает, когда k операций бинарного поиска после сортировки становятся выгоднее k операций линейного поиска без сортировки:
C₁ × n log n + k × C₃ × log n < k × C₂ × n
Для типичных значений (n=1000, C₁≈C₂≈C₃) получаем, что уже при 10-15 операциях поиска сортировка окупается.


Оптимизация для повторного использования

Отсортированные данные становятся активом, который можно многократно использовать для различных целей.

Один раз отсортировав массив сотрудников по фамилии, мы получаем возможность:
Быстрого поиска конкретного сотрудника
Генерации алфавитного списка
Поиска сотрудников в заданном алфавитном диапазоне
Объединения с другим отсортированным списком
Это преобразует данные из пассивного состояния в активную структуру, поддерживающую множество операций.


#Java #для_новичков #beginner #algorithm #sorted
👍4
Кэш-дружественность отсортированных данных

Современные процессоры сильно зависят от кэш-памяти. Отсортированные данные обладают лучшей пространственной локальностью: последовательные обращения к памяти с высокой вероятностью попадают в кэш. Это особенно важно для итеративных алгоритмов, где каждый проход по отсортированным данным выполняется на 20-40% быстрее благодаря уменьшению количества кэш-промахов.


Устойчивость сортировки: концепция и практическая ценность

Сортировка называется устойчивой (stable), если она сохраняет относительный порядок элементов с одинаковыми ключами. Формально: если до сортировки элемент A предшествовал элементу B, и их ключи сортировки равны, то после сортировки A останется перед B.

Практический пример: многоуровневая сортировка

Рассмотрим каталог книг с полями: автор, год издания, название. Требуется отсортировать книги по автору, а внутри каждого автора — по году издания.

Без устойчивой сортировки задача требует сложной логики:
// Сложный компаратор для неустойчивой сортировки
Comparator<Book> complexComparator = Comparator
.comparing(Book::getAuthor)
.thenComparing(Book::getYear);
books.sort(complexComparator); // Работает, но если сортировка неустойчива,
// порядок внутри автора может нарушиться


С устойчивой сортировкой решение элегантно:
// Сначала сортируем по вторичному ключу
books.sort(Comparator.comparing(Book::getYear));

// Затем сортируем по основному ключу
books.sort(Comparator.comparing(Book::getAuthor));

// После второй сортировки порядок годов сохранится для каждого автора
// благодаря устойчивости


Устойчивость гарантирует, что результат двух последовательных сортировок эквивалентен сортировке составным ключом.

Где устойчивость критически важна

Визуализация данных: При построении графиков, где элементы должны сохранять дополнительную атрибутику после сортировки по значению.
Транзакционные системы: В финансовых приложениях, где порядок одинаковых транзакций должен сохраняться согласно времени поступления.
Обработка последовательностей: В биоинформатике при анализе геномных данных, где относительный порядок элементов с одинаковым весом несет смысловую нагрузку.
Инкрементальная сортировка: При добавлении новых элементов в уже отсортированную коллекцию и последующей повторной сортировке.

Цена устойчивости

Устойчивость обычно достигается за счет:
Дополнительной памяти (как в MergeSort)
Более сложных алгоритмов сравнения
Незначительного увеличения времени выполнения
Неустойчивые алгоритмы (как QuickSort или HeapSort) часто быстрее и используют меньше памяти, но требуют осторожности при работе с составными ключами.


Количественная оценка стоимости сортировки

Стоимость сортировки можно амортизировать на все последующие операции.

Для коллекции из n элементов, над которой выполняется m операций поиска:
Без сортировки: Суммарная стоимость = m × O(n) = O(m × n)
С сортировкой: Суммарная стоимость = O(n log n) + m × O(log n)
Разница становится существенной при m > log n. Для n=1000 (log n ≈ 10) уже при 11 поисках сортировка окупается.

Влияние на системную архитектуру

Решение о предварительной сортировке влияет на проектирование систем:
Пакетная обработка: Сортировка выполняется один раз при загрузке данных, затем используется для множества запросов.
Интерактивные системы: Для часто изменяющихся данных поддерживается индексированная структура (как B-дерево), которая обеспечивает и сортировку, и быстрый поиск.
Распределенные системы: Данные распределяются между узлами уже отсортированными (shard-ключи), что позволяет выполнять параллельный поиск.


#Java #для_новичков #beginner #algorithm #sorted
👍5
Компромисс: сортировка vs индексация

Сортировка — не единственный способ ускорить поиск. Альтернатива — построение индекса (например, хеш-таблицы).

Сравнение:
Сортировка: O(n log n) времени, O(1) дополнительной памяти (in-place), поддерживает диапазонные запросы
Хеширование: O(n) времени, O(n) дополнительной памяти, точечный доступ O(1), нет поддержки диапазонов
Выбор зависит от паттерна доступа: частые диапазонные запросы требуют сортировки, точечные — хеширования.


Практические рекомендации

Когда сортировать данные
Предварительная сортировка: Когда известно, что данные будут многократно использоваться для поиска или анализа.
Кэширование отсортированных представлений: Хранить данные в основной форме, но создавать отсортированные копии для частых запросов.
Ленивая сортировка: Откладывать сортировку до первого запроса, требующего порядка.

Когда избегать сортировки

Единичные операции: Если требуется одна операция поиска, линейный поиск может быть эффективнее.
Частые модификации: При постоянных добавлениях/удалениях поддержание отсортированного состояния требует дополнительных затрат.
Ограниченные ресурсы: На устройствах с ограниченной памятью in-place сортировка предпочтительнее, но может быть слишком дорогой по времени.

Выбор алгоритма сортировки

Критерии выбора:
Устойчивость: Нужна ли сохранение относительного порядка?
Память: Доступна ли дополнительная память O(n)?
Время: Важна ли гарантия O(n log n) в худшем случае?
Данные: Частично отсортированы ли данные?

#Java #для_новичков #beginner #algorithm #sorted
👍6
Что выведет код?

import java.util.*;

public class Task190126 {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(5, 2, 9, 1, 5, 6);
Comparator<Integer> comparator = (a, b) -> {
if (a % 2 == b % 2) return 0;
return a % 2 == 0 ? -1 : 1;
};
Collections.sort(list, comparator);
System.out.println(list);
}
}


#Tasks
👍3
Что такое idempotency и зачем она нужна? 🤓

Ответ:

Идемпотентная операция даёт одинаковый результат при повторном выполнении.

Это критично для REST, retries и distributed systems.

Например, повторный POST без идемпотентности может создать дубликаты.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
История IT-технологий сегодня — 20 января

ℹ️ Кто родился в этот день

Уильям Ральф Райт (англ. William Ralph Wright, род. 20 января 1960 года, Атланта, Джорджия, США) — американский разработчик и дизайнер компьютерных игр, основатель компании по разработке игр Maxis, а позднее — и компании Syntertainment. Получил наибольшую известность как первоначальный дизайнер популярных компьютерных игр SimCity, The Sims и Spore. Был удостоен премии BAFTA.

Андре́-Мари́ Ампе́р (фр. André-Marie Ampère; 20 января 1775 — 10 июня 1836) французский физик, математик и естествоиспытатель. Джеймс Максвелл назвал Ампера «Ньютоном электричества». Ампер создал первую теорию, которая выражала связь электрических и магнитных явлений, ввёл в физику понятие электрического тока и проницательно предположил, что магнетизм вызван электрическими токами «на молекулярном уровне». Внёс значительный вклад в механику, теорию вероятностей, математический анализ.

Кэндзиро Такаянаги (яп. 高柳 健次郎 Такаянаги Кэндзиро:, 20 января 1899, Хамамацу — 23 июля 1990, Йокосука) японский конструктор, создатель первого в мире полностью электронного телеприёмника. Увлёкся телевидением в 1925 году после прочтения во французском журнале статьи о новой технологии. Уже в 1926 году доктор Такаянаги впервые в мире при помощи электронно-лучевой трубки продемонстрировал изображение каны イ. После Второй мировой войны Такаянаги пришёл в компанию JVC, где занимал должность вице-президента.

А еще наш один из самых первых подписчиков - @RumEvo. С днем рождения 🎉


🌐 Знаковые события

1960 — осуществлён первый пуск межконтинентальной баллистической ракеты Р-7А на предельную дальность в район Тихого океана. Принятие ракеты на вооружение.


#Biography #Birth_Date #Events #20Января
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🍾1
Как вы считаете, стоит ли мне настроить выпуск свежих видео и статей сначала на чем-то типа boosty, чтобы заработать шекелей, а потом и везде, или я просто охуел от наглости и таких мыслей?
Anonymous Poll
28%
Да ты охуел!
52%
Не, а что правильно, за труд можно и попросить плату.
20%
Мне похер, я не понимаю, что я тут делаю
🔥1👾1
Раздел 7. Алгоритмы

Глава 3: Алгоритмы сортировки и подготовка данных

Квадратичные сортировки: фундамент понимания

Классические алгоритмы O(n²)

Квадратичные сортировки представляют собой интеллектуальную основу для понимания более сложных алгоритмов. Их простота позволяет ясно увидеть фундаментальные принципы упорядочивания данных.

Пузырьковая сортировка (Bubble Sort)
Принцип работы: алгоритм последовательно сравнивает соседние элементы и меняет их местами, если они находятся в неправильном порядке. За каждый проход наибольший "всплывающий" элемент занимает свою окончательную позицию.

public class BubbleSort {
public static void sort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Обмен элементов
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}


Характеристики:
Временная сложность: O(n²) в худшем и среднем случае
Пространственная сложность: O(1) (in-place)
Устойчивость: да (не меняет порядок равных элементов)
Особенность: после k итераций последние k элементов находятся на своих местах
Оптимизация: добавление флага прекращает выполнение, если на проходе не было обменов. Для уже отсортированного массива это дает O(n).

Сортировка выбором (Selection Sort)

Принцип работы: алгоритм делит массив на отсортированную и неотсортированную части. На каждом шаге он находит минимальный элемент в неотсортированной части и перемещает его в конец отсортированной.

public class SelectionSort {
public static void sort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) {
minIdx = j;
}
}
// Обмен текущего элемента с минимальным
int temp = arr[minIdx];
arr[minIdx] = arr[i];
arr[i] = temp;
}
}
}


Характеристики:
Временная сложность: всегда O(n²) независимо от исходных данных
Количество сравнений: n(n-1)/2
Количество обменов: n-1 (минимальное среди квадратичных алгоритмов)
Устойчивость: нет (может менять порядок равных элементов)
Преимущество: минимальное количество операций записи, что важно для устройств с ограниченным ресурсом записи (например, флеш-память)

Сортировка вставками (Insertion Sort)

Принцип работы: алгоритм строит отсортированную последовательность постепенно, вставляя каждый новый элемент в правильную позицию относительно уже отсортированной части.

public class InsertionSort {
public static void sort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;

// Сдвигаем элементы, большие key, вправо
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
}


Характеристики:
Временная сложность: O(n²) в худшем случае, O(n) в лучшем (уже отсортированный массив)
Количество сравнений: от n-1 до n(n-1)/2
Количество обменов: от 0 до n(n-1)/2
Устойчивость: да
Особенность: эффективен на небольших наборах данных (n < 50) и почти отсортированных массивах


Адаптивность сортировки вставками

Эффективность на почти отсортированных данных
Сортировка вставками обладает свойством адаптивности: ее время выполнения зависит от степени упорядоченности входных данных. Для массива, в котором каждый элемент находится не более чем на k позиций от своего окончательного места, сложность составляет O(nk).

На практически отсортированных данных (k мало) алгоритм приближается к линейному времени.

#Java #для_новичков #beginner #algorithm #sorted
👍5
Это делает его идеальным для:
Досортировки результатов предыдущих частичных сортировок
Поддержания порядка в динамически изменяемых коллекциях
Обработки потоковых данных, где новые элементы добавляются к уже отсортированной последовательности

Механизм адаптации

Алгоритм эффективен благодаря двум свойствам:
Локальность: при вставке нового элемента перемещения происходят только в его окрестности
Инкрементальность: каждая итерация поддерживает частично отсортированное состояние
Для уже отсортированного массива внутренний цикл while никогда не выполняется, и алгоритм делает ровно n-1 сравнение.


Применение в современных гибридных алгоритмах

Timsort: промышленный стандарт

Timsort — гибридный алгоритм, используемый в Python, Java (для массивов объектов), Android и V8. Он сочетает сортировку вставками и слиянием, демонстрируя эволюцию простых алгоритмов в промышленные решения.

В Timsort сортировка вставками применяется для:
Создания минимальных упорядоченных сегментов (run)
Досортировки мелких подмассивов (обычно до 32-64 элементов)

// Упрощенная концепция Timsort
public class TimsortConcept {
private static final int RUN = 32;

public static void timsort(int[] arr) {
// 1. Разбиваем на маленькие сегменты
for (int i = 0; i < arr.length; i += RUN) {
insertionSort(arr, i, Math.min(i + RUN - 1, arr.length - 1));
}

// 2. Сливаем сегменты попарно
// ... (реализация слияния)
}

// Оптимизированная сортировка вставками для диапазона
private static void insertionSort(int[] arr, int left, int right) {
for (int i = left + 1; i <= right; i++) {
int key = arr[i];
int j = i - 1;

// Используем бинарный поиск для нахождения позиции
int pos = binarySearch(arr, key, left, j);

// Сдвигаем элементы
while (j >= pos) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
}


Причины выбора сортировки вставками для мелких массивов

Низкие константы: У сортировки вставками небольшие накладные расходы по сравнению с рекурсивными алгоритмами
Кэш-дружественность: Последовательный доступ к памяти хорошо работает с кэшем процессора
Адаптивность: На почти отсортированных данных она работает быстрее теоретически более быстрых алгоритмов

Другие гибридные применения

Introsort: использует быструю сортировку, но переключается на пирамидальную при глубокой рекурсии, а для маленьких подмассивов — на сортировку вставками
Сортировка Шелла: использует идею сортировки вставками, но сравнивает элементы, отстоящие далеко друг от друга, постепенно уменьшая шаг

Педагогическая ценность квадратичных алгоритмов

Квадратичные сортировки служат идеальной точкой входа в изучение алгоритмов по нескольким причинам:

Наглядность: Принципы работы можно понять без сложной математики
Полнота: Охватывают основные стратегии: сравнение соседей (пузырьковая), поиск минимума (выбором), вставка в упорядоченную последовательность (вставками)
Естественность: Сортировка вставками соответствует тому, как люди обычно упорядочивают карты в руке

Нижняя планка эффективности

Эти алгоритмы устанавливают базовый уровень, от которого можно измерять прогресс. Понимание, почему O(n²) неприемлемо для больших n, мотивирует изучение более эффективных методов.

Для n=1000:
Квадратичная сортировка: ~1,000,000 операций
Эффективная сортировка (n log n): ~10,000 операций
Разница в 100 раз становится критичной при масштабировании


Развитие алгоритмического мышления

Анализ квадратичных алгоритмов учит важным навыкам:

Анализ сложности: Понимание вложенных циклов и их стоимости
Оптимизация: Как небольшие изменения (флаг в пузырьковой) влияют на производительность
Адаптивность: Почему одни алгоритмы лучше работают на определенных данных


#Java #для_новичков #beginner #algorithm #sorted
👍4
Что выведет код?

import java.util.Arrays;
import java.util.Comparator;

public class Task200126 {
public static void main(String[] args) {
Integer[] arr = {5, 2, 8, 1, 9};
Comparator<Integer> comp = (a, b) -> a % 2 - b % 2;
insertionSort200126(arr, comp);
System.out.println(Arrays.toString(arr));
}

static <T> void insertionSort200126(T[] arr, Comparator<T> comp) {
for (int i = 1; i < arr.length; i++) {
T key = arr[i];
int j = i - 1;
while (j >= 0 && comp.compare(arr[j], key) > 0) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
}


#Tasks
👍3
👍3
Почему логирование в catch без проброса исключения опасно? 🤓

Ответ:

Ошибка маскируется, система продолжает работать в неконсистентном состоянии.

Это усложняет диагностику и может привести к скрытым сбоям.

Либо обрабатываем ошибку полностью, либо пробрасываем дальше.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
История IT-технологий сегодня — 21 января

ℹ️ Кто родился в этот день

Ким Дотком (нем. Kim Dotcom, при рождении Шмиц, нем. Schmitz, Kimble или Kim Tim Jim Vestor; 21 января 1974, Киль, Германия) — немецко-финский предприниматель, бывший владелец крупнейшего файлообменника Megaupload, с января по сентябрь 2013 года — владелец нового файлообменника Mega. Был арестован 19 января 2012 года в Новой Зеландии по запросу ФБР, но 22 февраля отпущен под залог. Власти США инкриминировали предпринимателю вымогательство, отмывание денег и массовые нарушения авторских прав и добивались его экстрадиции в США (слушания по экстрадиции проходили в августе 2012 года, но не увенчались успехом). В феврале 2017 года Верховный суд Новой Зеландии санкционировал экстрадицию основателя сайта Megaupload Кима Доткома в США.

Пол Гарднер А́ллен (англ. Paul Gardner Allen, 21 января 1953, Сиэтл, Вашингтон, США — 15 октября 2018, Сиэтл)американский предприниматель, соучредитель корпорации Microsoft, которую он вместе со своим школьным приятелем Биллом Гейтсом основал в 1975 году. Капитал Аллена в 2018 году составлял $20,3 млрд.


🌐 Знаковые события

2004 — на 18-й марсианский день (Sol 18), марсоход Spirit внезапно перестал передавать данные и начал непрерывно перезагружаться. Файловая система флэш-памяти марсохода переполнилась мелкими файлами, оставшимися от полета, и RAM не хватило для их индексации при загрузке. Инженеры с Земли смогли удаленно отладить систему на расстоянии 56 млн км, удалив лишние файлы. Этот кейс вошел в учебники по программированию космических аппаратов.


#Biography #Birth_Date #Events #21Января
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1