Java Learning
18.7K subscribers
1.62K photos
1 video
3 files
998 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Сортировка слиянием (Merge Sort)

Сортировка слиянием - это алгоритм сортировки, который основан на разделении массива на меньшие части, сортировке каждой части и объединении этих частей в отсортированный массив. Он имеет сложность O(n log n) и может быть эффективно использован для сортировки больших наборов данных.

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

#для_продвинутых
👍192
Сервлеты

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

Сервлет получает запрос от браузера, обрабатывает его и отправляет ответ в браузер.

#для_продвинутых
👍171
Интерфейс Predicate

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

#для_продвинутых
👍16
Получить атомное время из интернет-часов

Для получения атомного времени из интернет-часов в Java вы можете воспользоваться классом java.net.URL для выполнения HTTP-запроса к одному из сервисов времени, таким как «time.google.com». Затем вы можете обработать полученный ответ и извлечь атомное время.

Обратите внимание, что формат ответа от сервиса времени может различаться, и вам может потребоваться настроить метод parseAtomicTime для вашего конкретного сервиса. Подобные сервисы могут предоставлять атомное время в разных форматах, таких как ISO 8601 или Unix Timestamp.

#для_начинающих
👍8
Инвертированный индекс

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

Ниже приведен пример простой реализации инвертированного индекса на языке Java. Этот пример демонстрирует создание инвертированного индекса для небольшой коллекции документов.

#для_продвинутых
👍93
Конечный автомат

Конечный автомат (Finite State Machine, FSM) — это модель вычислений, которая состоит из набора состояний, переходов между состояниями и действий, выполняемых при переходе из одного состояния в другое.

Для простого примера можно использовать светофор. Светофор может иметь три состояния: красный, желтый и зеленый. Когда светофор находится в состоянии красный, машины должны останавливаться, когда он находится в состоянии желтый, машины должны готовиться к остановке, а когда светофор находится в состоянии зеленый, машины могут двигаться.

#для_продвинутых
👍13
Bit Set

BitSet — это класс, предназначенный для работы с наборами битов. Он предоставляет удобные методы для установки, сброса, получения и манипулирования битами в наборе. Этот класс полезен, когда вам нужно хранить и обрабатывать большое количество булевых значений (true/false) или флагов, используя минимальное количество памяти.

#для_начинающих
👍8
Comparator

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

В этом примере MyComparator реализует интерфейс Comparator для целых чисел (Integer) и сортирует список чисел в обратном порядке.

Вы можете также использовать анонимные классы или лямбда-выражения для создания компараторов более компактным способом.

#для_начинающих
👍114
ReentrantLock

ReentrantLock - это класс в Java, который предоставляет механизм блокировки с возможностью повторного входа.

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

#для_начинающих
👍181
Тип Optional

Тип Optional используется для представления возможности отсутствия значения. Он обертывает другой тип данных и может содержать либо значение этого типа, либо быть пустым (null).

Этот код создает Optional объект, который может содержать строку. Если строка доступна, она будет возвращена; в противном случае будет возвращено значение "Default Value".

Использование Optional способствует более чистому и безопасному коду при работе с возможно отсутствующими значениями.

#для_начинающих
👍20
Класс LinkedList

Класс LinkedList представляет собой двусвязный список, который является одной из структур данных для хранения и управления коллекцией элементов. LinkedList предоставляет реализацию интерфейсов List и Deque, что означает, что он может использоваться как список элементов и как двусторонняя очередь (двунаправленный список).

#для_начинающих
👍13🔥2
Большие числа BigInteger

В Java для работы с большими числами (такими, которые не умещаются в примитивные типы данных) используется класс BigInteger из пакета java.math. Этот класс позволяет производить арифметические операции с большими числами, которые могут содержать до 2^31-1 битов.

#для_начинающих
👍16
SynchronousQueue

SynchronousQueue — это блокирующая очередь, в которой каждая операция вставки должна ждать соответствующей операции удаления другим потоком и наоборот.

В этом примере создается SynchronousQueue. Затем запускаются два потока: производитель и потребитель. Производитель пытается добавить значение в очередь с помощью метода put(). Этот метод заблокирует выполнение, пока другой поток не вызовет метод take(). Когда потребитель вызывает метод take(), он получает значение из очереди, и выполнение производителя продолжается.
👍16
Шифр Цезаря

Шифр Цезаря — это простой шифр подстановки, который сдвигает каждую букву в сообщении на фиксированное количество позиций в алфавите.

В этом примере мы создали класс CaesarCipher, который содержит два метода: encrypt и decrypt. encrypt принимает сообщение и сдвиг, чтобы зашифровать его, а decrypt принимает зашифрованное сообщение и сдвиг, чтобы дешифровать его.

Заметьте, что этот код предназначен только для демонстрации принципа работы шифра Цезаря и не обеспечивает высокую степень безопасности.

#для_начинающих
👍17
Hibernate ORM

Hibernate ORM - это фреймворк для работы с базами данных, который позволяет разработчикам работать с объектами вместо запросов SQL. Hibernate позволяет ускорить процесс разработки и уменьшить количество кода, необходимого для работы с базой данных.

В этом примере мы создаем класс Student, который аннотируется с помощью аннотаций Hibernate, указывающих, что данный класс является сущностью, а его поля соответствуют столбцам в таблице базы данных. Затем мы создаем объект SessionFactory и используем его для сохранения и получения объекта Student из базы данных.

#для_начинающих
👍16
Интерфейс UnaryOperator

Интерфейс UnaryOperator — это функциональный интерфейс, введенный в Java 8 в пакете java.util.function. Этот интерфейс представляет собой оператор, который принимает один аргумент и возвращает результат того же типа, что и входной аргумент. Он представляет унарную операцию, то есть операцию, которая применяется к одному операнду.

#для_продвинутых
👍10
Метод replaceFirst()

Метод replaceFirst() в Java используется для замены первого подстроки в строке на другую подстроку. Этот метод является частью класса java.lang.String и принимает два параметра: регулярное выражение (регулярное выражение) и замену.

Сигнатура метода:

public String replaceFirst(String regex, String replacement)

Где:
regex — это регулярное выражение, которое вы ищете в строке.
replacement — строка, которой вы заменяете первое найденное совпадение с regex.

#для_начинающих
👍18
Callable

Callable — это интерфейс из пакета java.util.concurrent, который представляет собой задачу, которую можно выполнить и получить результат, а также обработать исключение, если оно произошло во время выполнения задачи. Он аналогичен интерфейсу Runnable, но в отличие от Runnable, Callable может возвращать результат выполнения и бросать проверяемые исключения.

#для_продвинутых
👍8
Как вызвать один конструктор из другого?

В Java, вы можете вызвать один конструктор из другого с использованием ключевого слова this. Это делается с целью избежать дублирования кода в разных конструкторах класса.

В приведенном выше примере конструктор по умолчанию вызывает конструктор с параметром, передавая ему значение 0.

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

#для_начинающих
👍22
Класс Properties

Класс Properties — это подкласс Hashtable. Он используется для хранения списков значений, в которых ключ является String, а значение также является String.

Класс Properties используется множеством других классов. Например, это тип объекта, возвращаемый System.getProperties(), когда тот получает внешние значения.

Properties определяет следующие переменную экземпляра. Эта переменная содержит список свойств по умолчанию, связанный с объектом Properties.

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

Методы и классы, объявленные Properties, можно посмотреть здесь.

#для_продвинутых
👍162