Узнаем размер каталога с помощью Java
Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.
Каталог может содержать N файлов, для расчета размера каталога требуется суммирование размеров всех файлов.
Подробнее можно посмотреть здесь.
#код
Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.
Каталог может содержать N файлов, для расчета размера каталога требуется суммирование размеров всех файлов.
Подробнее можно посмотреть здесь.
#код
10 полезных книг для Java программиста на русском языке
Небольшая подборка интересных и полезных книг для Java программиста по самому языку, фреймворкам и программированию в целом.
🔗 Основной сайт
🔗 Зеркало
Небольшая подборка интересных и полезных книг для Java программиста по самому языку, фреймворкам и программированию в целом.
🔗 Основной сайт
🔗 Зеркало
Spring Transactions
Spring Transactions — это механизм, предоставляемый Spring Framework, который позволяет управлять транзакциями в Java-приложениях. Он предоставляет абстракцию уровня транзакций, которая скрывает детали управления транзакциями в низкоуровневых API базы данных, и упрощает создание транзакционных приложений.
В коде на первом изображении мы используем аннотацию @Transactional для указания того, что метод createUser() должен выполняться в контексте транзакции. Все операции с базой данных, включая вставку новой записи, будут обернуты в транзакцию.
На втором изображении представлен пример использования первого кода, мы создаем двух пользователей и пытаемся сохранить их в базе данных. Затем мы генерируем исключение RuntimeException.
В результате выполнения данного кода изменения в базе данных будут отменены, так как выполнявшиеся операции были выполнены в контексте транзакции, которая была отменена после генерации исключения.
#код
Spring Transactions — это механизм, предоставляемый Spring Framework, который позволяет управлять транзакциями в Java-приложениях. Он предоставляет абстракцию уровня транзакций, которая скрывает детали управления транзакциями в низкоуровневых API базы данных, и упрощает создание транзакционных приложений.
В коде на первом изображении мы используем аннотацию @Transactional для указания того, что метод createUser() должен выполняться в контексте транзакции. Все операции с базой данных, включая вставку новой записи, будут обернуты в транзакцию.
На втором изображении представлен пример использования первого кода, мы создаем двух пользователей и пытаемся сохранить их в базе данных. Затем мы генерируем исключение RuntimeException.
В результате выполнения данного кода изменения в базе данных будут отменены, так как выполнявшиеся операции были выполнены в контексте транзакции, которая была отменена после генерации исключения.
#код
Каким будет результат выполнения следующего кода?
Объяснение: В этом коде мы вызываем метод divide, который выполняет деление двух чисел. При делении на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. В блоке finally всегда выполняется инструкция return 0, поэтому в итоге результатом будет значение -1.
Этот вопрос проверяет понимание исключений, блоков try-catch-finally и порядка выполнения кода в Java.
#вопросы_с_собеседований
Объяснение: В этом коде мы вызываем метод divide, который выполняет деление двух чисел. При делении на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. В блоке finally всегда выполняется инструкция return 0, поэтому в итоге результатом будет значение -1.
Этот вопрос проверяет понимание исключений, блоков try-catch-finally и порядка выполнения кода в Java.
#вопросы_с_собеседований
Всё о Java / Войти в IT после 30 / Интервью с Senior Java Developer
Роман пришел в IT в 30 лет после курсов, что совершенно не помешало развить в себе отличные навыки разработки. В выпуске обсудили историю Романа, разобрали Java EE, Spring, Hibernate, Criteria API, JSP, Maven, Ant, Android SDK, среды разработки, фишки войти в айти и менторинга и много других не менее умных и интересных вещей из мира Java. А еще нормально зацепили Kotlin.
Смотреть видео
Роман пришел в IT в 30 лет после курсов, что совершенно не помешало развить в себе отличные навыки разработки. В выпуске обсудили историю Романа, разобрали Java EE, Spring, Hibernate, Criteria API, JSP, Maven, Ant, Android SDK, среды разработки, фишки войти в айти и менторинга и много других не менее умных и интересных вещей из мира Java. А еще нормально зацепили Kotlin.
Смотреть видео
Рассказываем про мир job-сайтов: где программисту опубликовать резюме, чтобы быстрее найти работу в IT.
🔗 Основной сайт
🔗 Зеркало
🔗 Основной сайт
🔗 Зеркало
Пузырьковая сортировка
Данный алгоритм сортировки известен в первую очередь за счёт своей простоты, однако при этом он имеет одну из наиболее низких скоростей выполнения.
Пузырьковая сортировка весьма и весьма медленная, с временной сложностью O(N²), так как мы имеем вложенные циклы. Внешний проход по элементам выполняется за N раз, внутренний — тоже N раз, и в итоге мы получаем N*N, N² итераций.
#код
Данный алгоритм сортировки известен в первую очередь за счёт своей простоты, однако при этом он имеет одну из наиболее низких скоростей выполнения.
Пузырьковая сортировка весьма и весьма медленная, с временной сложностью O(N²), так как мы имеем вложенные циклы. Внешний проход по элементам выполняется за N раз, внутренний — тоже N раз, и в итоге мы получаем N*N, N² итераций.
#код
Очередной #дайджест статей по Java:
☕️ Инструментация байт-кода Java
В рамках текущей статьи рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
☕️ Симуляция реальности: разбираемся в мок-серверах и пишем свой
Проблематика: проблема черного ящика и почему это вообще нужно решать.
☕️ Эффективное и комплексное устранение утечек памяти в Android
Про OutOfMemoryError и работу GC.
☕️ Особенности разработки автотестов различными инструментами, а также статистика по использованию
Однозначным плюсом внедрения автотестов на проекте является сокращение времени на тестирование и сокращение возможности ошибки при тестировании человеком.
☕️ Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR
☕️ Как на самом деле работает Java ClassLoader system? (с картинками)
Будучи разработчиком Java, вы наверняка сталкивались с ClassNotFoundException или NoClassDefFoundError — загадочными сообщениями, которые на мгновение останавливают наш процесс разработки. Класс не найден — понятно по названию, но не найден где? Кто и как его ищет, куда доставляет?
☕️ SpringBoot и вебсокеты: едем в кластер
В этой статье затронута тема горизонтального масштабирования SpringBoot-приложений, использующих вебсокеты. Основная особенность таких приложений — наличие состояния (state). Вебсокеты для работы используют постоянное TCP-соединение, собственно оно и является этим состоянием. А наличие состояния обычно вызывает проблемы при масштабировании.
☕️ Инструментация байт-кода Java
В рамках текущей статьи рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
☕️ Симуляция реальности: разбираемся в мок-серверах и пишем свой
Проблематика: проблема черного ящика и почему это вообще нужно решать.
☕️ Эффективное и комплексное устранение утечек памяти в Android
Про OutOfMemoryError и работу GC.
☕️ Особенности разработки автотестов различными инструментами, а также статистика по использованию
Однозначным плюсом внедрения автотестов на проекте является сокращение времени на тестирование и сокращение возможности ошибки при тестировании человеком.
☕️ Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR
☕️ Как на самом деле работает Java ClassLoader system? (с картинками)
Будучи разработчиком Java, вы наверняка сталкивались с ClassNotFoundException или NoClassDefFoundError — загадочными сообщениями, которые на мгновение останавливают наш процесс разработки. Класс не найден — понятно по названию, но не найден где? Кто и как его ищет, куда доставляет?
☕️ SpringBoot и вебсокеты: едем в кластер
В этой статье затронута тема горизонтального масштабирования SpringBoot-приложений, использующих вебсокеты. Основная особенность таких приложений — наличие состояния (state). Вебсокеты для работы используют постоянное TCP-соединение, собственно оно и является этим состоянием. А наличие состояния обычно вызывает проблемы при масштабировании.
Какой ноутбук считаете наиболее подходящим для программирования и почему?
#интерактив
#интерактив
🧩 Всё о массивах
Массив — последовательный набор значений одного типа. Эта структура данных используется чаще всего в приложениях и во многих коллекциях.
В ролике автор подробнее разбирает массив и как внутри него проходят операции вставки, удаления и поиска элемента.
Смотреть видео
Массив — последовательный набор значений одного типа. Эта структура данных используется чаще всего в приложениях и во многих коллекциях.
В ролике автор подробнее разбирает массив и как внутри него проходят операции вставки, удаления и поиска элемента.
Смотреть видео
Чем отличается Lambda от анонимного класса?
Хотя в некоторых случаях они и могут быть использованы взаимозаменяемо, Lambda-выражения и анонимные классы имеют различия.
Разберем основные из них:
1. Синтаксис: Lambda-выражения имеют более краткий и лаконичный синтаксис по сравнению с анонимными классами.
2. Область применения: Lambda-выражения могут быть использованы только для функциональных интерфейсов, в то время как анонимные классы могут быть использованы для любых интерфейсов и абстрактных классов.
3. Ключевое слово this: В анонимных классах ключевое слово this ссылается на сам анонимный класс, в то время как в lambda-выражениях this ссылается на объемлющий.
4. Производительность: Lambda-выражения обычно имеют лучшую производительность по сравнению с анонимными классами, так как они компилируются в приватные методы и используют инструкцию invokedynamic.
#вопросы_с_собеседований
Хотя в некоторых случаях они и могут быть использованы взаимозаменяемо, Lambda-выражения и анонимные классы имеют различия.
Разберем основные из них:
1. Синтаксис: Lambda-выражения имеют более краткий и лаконичный синтаксис по сравнению с анонимными классами.
2. Область применения: Lambda-выражения могут быть использованы только для функциональных интерфейсов, в то время как анонимные классы могут быть использованы для любых интерфейсов и абстрактных классов.
3. Ключевое слово this: В анонимных классах ключевое слово this ссылается на сам анонимный класс, в то время как в lambda-выражениях this ссылается на объемлющий.
4. Производительность: Lambda-выражения обычно имеют лучшую производительность по сравнению с анонимными классами, так как они компилируются в приватные методы и используют инструкцию invokedynamic.
#вопросы_с_собеседований
Метод interrupt()
interrupt() используется для прерывания потока исполнения. Этот метод является частью класса Thread и позволяет прервать поток, вызывая исключение InterruptedException, если поток находится в состоянии ожидания или блокировки. Если поток не находится в таком состоянии, метод interrupt() устанавливает флаг прерывания, который можно проверить с помощью метода isInterrupted().
Метод interrupt() может применяться в различных ситуациях, например, когда необходимо остановить поток по запросу пользователя или когда поток должен завершиться по достижении определенного условия.
#код
interrupt() используется для прерывания потока исполнения. Этот метод является частью класса Thread и позволяет прервать поток, вызывая исключение InterruptedException, если поток находится в состоянии ожидания или блокировки. Если поток не находится в таком состоянии, метод interrupt() устанавливает флаг прерывания, который можно проверить с помощью метода isInterrupted().
Метод interrupt() может применяться в различных ситуациях, например, когда необходимо остановить поток по запросу пользователя или когда поток должен завершиться по достижении определенного условия.
#код
🔎 Собственный поисковик на Java
ElasticSearch может быстро искать ключевые слова среди огромного количества данных, и его фишка в том, что его используют многие крупные компании: IBM, Github и даже Netflix. В этом видео автор знакомит с Elasticsearch, учит строить архитектуру приложения и показывает, как писать собственную поисковую систему с использованием Java + ElasticSearch.
Перейти к просмотру
ElasticSearch может быстро искать ключевые слова среди огромного количества данных, и его фишка в том, что его используют многие крупные компании: IBM, Github и даже Netflix. В этом видео автор знакомит с Elasticsearch, учит строить архитектуру приложения и показывает, как писать собственную поисковую систему с использованием Java + ElasticSearch.
Перейти к просмотру
Сколько всего курсов по программированию вы купили?
#интерактив
#интерактив