Java Learning
18.6K subscribers
1.62K photos
1 video
3 files
999 links
№ 5079899194

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Lombok

Lombok — это библиотека аннотаций для Java, которая позволяет сократить шаблонный код. Она генерирует код на этапе компиляции, заменяя аннотации boilerplate-кодом, который обычно пишется вручную.

#для_продвинутых
👍27
Bytecode-viewer

Bytecode-viewer — это инструмент, который позволяет просматривать байт-код Java-классов. Байт-код - это машинный код, который получается после компиляции Java-кода. Он представляет собой набор инструкций, которые интерпретатор Java Virtual Machine (JVM) использует для выполнения программы.

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

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

#для_продвинутых
👍19
Узнаем продолжительность аудио файла

Ответ на картинке.
👍16
#вопросы_с_собеседований
Что будет, если в Map положить два значения с одинаковым ключом?

Если в Map положить два значения с одинаковым ключом, то произойдет следующее:

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

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

— Конкретная реализация Map (например, HashMap) может бросить исключение, если попытаться добавить дублирующийся ключ.

Таким образом, поведение в такой ситуации зависит от конкретной реализации интерфейса Map, но в целом дублирующиеся ключи в Map запрещены.
👍17😱4
#вопросы_с_собеседований
Может ли метод принимать аргументы переменной длины?

В Java метод может принимать переменное количество аргументов двумя основными способами:

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

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

Таким образом метод становится более гибким и его можно вызывать с разным количеством аргументов в зависимости от ситуации. Это избавляет от необходимости перегружать метод для разного числа параметров.
👍212
#вопросы_с_собеседований
Что может произойти если два потока будут выполнять один и тот же код в программе?

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

Чтобы избежать таких проблем, нужно предотвратить одновременный доступ к общим данным с помощью синхронизации, например используя мониторы или блокировки.
Также полезны инструменты высокого уровня для синхронизации, такие как семафоры, очереди производителя-потребителя и другие коллекции из java.util.concurrent.

Важно тщательно продумывать доступ к общим данным в многопоточных приложениях, чтобы избежать некорректного поведения. Хороший дизайн многопоточности поможет создать надежное и эффективное приложение.
👍19🤔1
Bazel

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

#для_продвинутых
👍12🔥1
Lanterna

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

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

RefactorFirst — это инструмент для Java-кода, помогающий определить и расставить по приоритетам классы, которые следует рефакторить в первую очередь. Он работает, сканируя код на наличие «божественных классов» (God Classes) и классов с высокой степенью связности.

«Божественных классов» — это классы, которые делают слишком много и, следовательно, являются плохо спроектированными. Они могут быть трудными для понимания, тестирования и сопровождения.

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

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

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

JaCoCo (Java Code Coverage) — это инструмент с открытым исходным кодом, который используется для измерения покрытия кода Java-тестами. Он помогает разработчикам определить, какие части кода были выполнены тестами, а какие нет.

#для_продвинутых
👍12
#вопросы_с_собеседований
Расскажите про приведение типов. Что такое понижение и повышение типа?

Приведение типов — это преобразование переменной одного типа в другой.

Существует два вида приведения типов:
— Повышение типа (widening): автоматическое преобразование типа в другой, более широкий тип. Например, int в long. При этом не теряется точность, так как широкий тип может представить все значения узкого типа.
— Понижение типа (narrowing): явное приведение к более узкому типу, например double в int. Здесь возможна потеря точности, поэтому требуется явное приведение в коде.

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

Clover — это инструмент покрытия кода для Java и Groovy, который помогает разработчикам измерить насколько тестами покрыт ваш код, определить какие части кода не тестируются, улучшить качество вашего кода за счет написания тестов для непокрытых частей.

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

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

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

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

Timefold — это высокопроизводительный планировщик на основе искусственного интеллекта, написанный на Java. Он является ответвлением популярного проекта OptaPlanner и позволяет решать сложные задачи оптимизации расписаний и операций.

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

SBE (Simple Binary Encoding) — это бинарный формат данных, предназначенный для высокопроизводительного обмена сообщениями между приложениями. Он отличается простотой, компактностью и скоростью, что делает его идеальным для использования в финансовых системах, системах с высокой пропускной способностью и других приложениях, где требуется низкая задержка и высокое использование пропускной способности сети.

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

P3C (Programming Practice and Competition) — это набор правил кодирования Java, разработанный компанией Alibaba. Эти правила направлены на повышение качества и читаемости кода Java, а также на снижение вероятности ошибок.

#для_продвинутых
👍11
Jackson-dataformat-csv

Jackson-dataformat-csv — это библиотека Java, являющаяся модулем расширения популярной библиотеки Jackson для обработки JSON. Она позволяет читать и записывать данные в формате CSV (Comma Separated Values), который широко используется для хранения и обмена табличными данными.

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