ScheduledExecutorService
ScheduledExecutorService — это интерфейс в Java из пакета java.util.concurrent, который предоставляет возможность планирования и выполнения задач с задержкой или периодически.
Основные реализации ScheduledExecutorService:
ScheduledThreadPoolExecutor — это конкретная реализация ScheduledExecutorService, предоставляемая в стандартной библиотеке Java. Она является потокобезопасной реализацией и использует пул потоков для выполнения задач.
SingleThreadScheduledExecutor — это реализация ScheduledExecutorService, которая использует только один поток для выполнения задач. Она может быть полезной, если вы хотите, чтобы задачи выполнялись последовательно в заданном порядке.
#код
ScheduledExecutorService — это интерфейс в Java из пакета java.util.concurrent, который предоставляет возможность планирования и выполнения задач с задержкой или периодически.
Основные реализации ScheduledExecutorService:
ScheduledThreadPoolExecutor — это конкретная реализация ScheduledExecutorService, предоставляемая в стандартной библиотеке Java. Она является потокобезопасной реализацией и использует пул потоков для выполнения задач.
SingleThreadScheduledExecutor — это реализация ScheduledExecutorService, которая использует только один поток для выполнения задач. Она может быть полезной, если вы хотите, чтобы задачи выполнялись последовательно в заданном порядке.
#код
BitSail — это распределенный высокопроизводительный механизм интеграции данных, который поддерживает пакетные, потоковые и инкрементальные сценарии.
💥Stars: 1393
📝Forks: 271
Открыть репозиторий
💥Stars: 1393
📝Forks: 271
Открыть репозиторий
Удачное и неудачное использование Optional
Optional — это контейнер для объекта, который может содержать или не содержать значение null.
Удачным примером использования Optional является метод orElseGet(), который позволяет вернуть значение по умолчанию, если значение Optional равно null. (изображение 1)
Неудачным примером использования Optional является метод get(), который вызывает исключение NoSuchElementException, если значение Optional равно null. (изображение 2)
#код
Optional — это контейнер для объекта, который может содержать или не содержать значение null.
Удачным примером использования Optional является метод orElseGet(), который позволяет вернуть значение по умолчанию, если значение Optional равно null. (изображение 1)
Неудачным примером использования Optional является метод get(), который вызывает исключение NoSuchElementException, если значение Optional равно null. (изображение 2)
#код
Очередной #дайджест по Java:
☕️ Разбираемся в «базовых» алгоритмах для высоконагруженного проекта
В своей статье автор собрал примерный список алгоритмов, которые использует в работе с высоконагруженным проектом с большой кодовой базой.
☕️ Почему WebAssembly плохо годится для Java
Развернутый ответ на часто задаваемый автору статьи вопрос.
☕️ Java на стероидах, или опыт работы с Jmix
Как после привычного Spring за месяц сделать сайт с платформой быстрой разработки Jmix. Коротко о технологии, особенностях, возникающих в процессе вопросах и ответах на них.
☕️ ChatGPT на Java пишет renamer для файлов
Автор делится опытом взаимодействия с нейросетью для написания простой программы.
☕️ Как перезапускать упавшие тесты параллельно
Тесты часто бывают нестабильными. Когда тест падает, его можно попробовать перезапустить несколько раз, но перезапуски могут увеличивать время сборки в 2-3 раза. В этой статье рассказано о том, как решить эту проблему.
☕️ Разбираемся в «базовых» алгоритмах для высоконагруженного проекта
В своей статье автор собрал примерный список алгоритмов, которые использует в работе с высоконагруженным проектом с большой кодовой базой.
☕️ Почему WebAssembly плохо годится для Java
Развернутый ответ на часто задаваемый автору статьи вопрос.
☕️ Java на стероидах, или опыт работы с Jmix
Как после привычного Spring за месяц сделать сайт с платформой быстрой разработки Jmix. Коротко о технологии, особенностях, возникающих в процессе вопросах и ответах на них.
☕️ ChatGPT на Java пишет renamer для файлов
Автор делится опытом взаимодействия с нейросетью для написания простой программы.
☕️ Как перезапускать упавшие тесты параллельно
Тесты часто бывают нестабильными. Когда тест падает, его можно попробовать перезапустить несколько раз, но перезапуски могут увеличивать время сборки в 2-3 раза. В этой статье рассказано о том, как решить эту проблему.
Любите ли вы писать тесты? Или считаете эту работу слишком скучной и бесполезной?
#интерактив
#интерактив
Checked exceptions
Checked exceptions — это исключения, которые должны быть обработаны или объявлены в сигнатуре метода при помощи throws ключевого слова. Они обычно представляют собой ситуации, которые программист может предвидеть и обработать. Примеры таких исключений включают: IOException, SQLException, FileNotFoundException.
Если вы вызываете метод, который объявляет checked exception, вы должны либо обработать это исключение с помощью конструкции try-catch, либо продолжить передачу исключения вверх по стеку вызовов.
#код
Checked exceptions — это исключения, которые должны быть обработаны или объявлены в сигнатуре метода при помощи throws ключевого слова. Они обычно представляют собой ситуации, которые программист может предвидеть и обработать. Примеры таких исключений включают: IOException, SQLException, FileNotFoundException.
Если вы вызываете метод, который объявляет checked exception, вы должны либо обработать это исключение с помощью конструкции try-catch, либо продолжить передачу исключения вверх по стеку вызовов.
#код
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
☕ Существуют статические и нестатические блоки инициализации.
☕ Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
☕ Несколько блоков инициализации выполняются в порядке следования в коде класса.
☕ Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
☕ Блок инициализации возможно создать и в анонимном классе.
#вопросы_с_собеседований
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
☕ Существуют статические и нестатические блоки инициализации.
☕ Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
☕ Несколько блоков инициализации выполняются в порядке следования в коде класса.
☕ Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
☕ Блок инициализации возможно создать и в анонимном классе.
#вопросы_с_собеседований
Генерируем простой web интерфейс для просмотра таблиц PostgreSQL
Пересмотрев несколько библиотек на GitHub для отображения таблиц, автор остановился на Tabulator, которая из коробки умеет отображать таблицы с сортировкой, фильтрацией и разбивкой на страницы, автоматически распознает типы колонок, с отличной документацией, доступной для понимания не фронтэндером. А также позволяет быстро делать прототип, разрешая настраивать типы отображения поля даже в режиме автоопределения.
Читать статью
Пересмотрев несколько библиотек на GitHub для отображения таблиц, автор остановился на Tabulator, которая из коробки умеет отображать таблицы с сортировкой, фильтрацией и разбивкой на страницы, автоматически распознает типы колонок, с отличной документацией, доступной для понимания не фронтэндером. А также позволяет быстро делать прототип, разрешая настраивать типы отображения поля даже в режиме автоопределения.
Читать статью
Декартово произведение
Декартово произведение (cartesian product) в математике означает комбинацию всех возможных пар элементов из двух множеств. В Java это понятие может использоваться для описания ситуации, когда необходимо создать все возможные комбинации элементов из двух или более наборов данных.
Например, представьте, что у вас есть два множества: A = {1, 2} и B = {a, b}. Декартово произведение этих множеств будет: {(1, a), (1, b), (2, a), (2, b)}.
Проблема декартова произведения может возникнуть, когда вам нужно сгенерировать или обработать все возможные комбинации элементов из двух или более коллекций.
Для решения проблемы декартова произведения можно использовать вложенные циклы, рекурсию или специализированные библиотеки, такие как Apache Commons Collections или Stream API, чтобы более эффективно генерировать и обрабатывать комбинации элементов из разных множеств.
#код
Декартово произведение (cartesian product) в математике означает комбинацию всех возможных пар элементов из двух множеств. В Java это понятие может использоваться для описания ситуации, когда необходимо создать все возможные комбинации элементов из двух или более наборов данных.
Например, представьте, что у вас есть два множества: A = {1, 2} и B = {a, b}. Декартово произведение этих множеств будет: {(1, a), (1, b), (2, a), (2, b)}.
Проблема декартова произведения может возникнуть, когда вам нужно сгенерировать или обработать все возможные комбинации элементов из двух или более коллекций.
Для решения проблемы декартова произведения можно использовать вложенные циклы, рекурсию или специализированные библиотеки, такие как Apache Commons Collections или Stream API, чтобы более эффективно генерировать и обрабатывать комбинации элементов из разных множеств.
#код
Часто ли вы прибегаете к помощи нейросетей в работе?
#интерактив
#интерактив
Что такое ThreadGroup?
ThreadGroup представляет собой класс, предоставляемый Java для создания и управления группами потоков. Он может содержать другие подгруппы потоков, образуя иерархию. Основной целью ThreadGroup является обеспечение единого механизма управления и мониторинга для всех потоков внутри группы.
ThreadGroup предоставляет некоторый уровень организации и управления, но в большинстве современных приложений управление потоками осуществляется с использованием более высокоуровневых конструкций, таких как классы из пакета java.util.concurrent, которые предоставляют более гибкие и безопасные средства для работы с параллельным исполнением.
#код
ThreadGroup представляет собой класс, предоставляемый Java для создания и управления группами потоков. Он может содержать другие подгруппы потоков, образуя иерархию. Основной целью ThreadGroup является обеспечение единого механизма управления и мониторинга для всех потоков внутри группы.
ThreadGroup предоставляет некоторый уровень организации и управления, но в большинстве современных приложений управление потоками осуществляется с использованием более высокоуровневых конструкций, таких как классы из пакета java.util.concurrent, которые предоставляют более гибкие и безопасные средства для работы с параллельным исполнением.
#код
Большой гайд по Spring 5 для начинающих и тех, кто хочет прояснить какие-то забытые моменты.
Смотреть гайд
Смотреть гайд
Очередной #дайджест по Java:
☕ Нагрузочное тестирование API без использования UI
В этой статье автор говорит о нагрузочном тестировании при помощи JMeter-Java-Dsl и реализует первый нагрузочный тест для API с генерацией динамических значений.
☕ Удобная подсветка покрытия кода тестами в Merge Request GitLab
И у GitLab есть свои минусы. Например, разработчики до сих пор не смогли реализовать визуализацию покрытия тестов.
☕Реквием по «Расскажи, как работает HashMap?»
За долгие годы коммерческого опыта автор прошел огромное количество технических собеседований, посвященных Java и друзьям. Менялись интервьюеры и язык повествования, глубина вопросов и количество собеседований, но что‑то оставалось неизменным — «разогревочный» вопрос «расскажи, как работает HashMap?».
☕ Создание аналога Google Фото на Spring Boot
В этом видео автор показывает, как создать приложение, похожее на Google Фото, с помощью Spring Boot.
☕ Нагрузочное тестирование API без использования UI
В этой статье автор говорит о нагрузочном тестировании при помощи JMeter-Java-Dsl и реализует первый нагрузочный тест для API с генерацией динамических значений.
☕ Удобная подсветка покрытия кода тестами в Merge Request GitLab
И у GitLab есть свои минусы. Например, разработчики до сих пор не смогли реализовать визуализацию покрытия тестов.
☕Реквием по «Расскажи, как работает HashMap?»
За долгие годы коммерческого опыта автор прошел огромное количество технических собеседований, посвященных Java и друзьям. Менялись интервьюеры и язык повествования, глубина вопросов и количество собеседований, но что‑то оставалось неизменным — «разогревочный» вопрос «расскажи, как работает HashMap?».
☕ Создание аналога Google Фото на Spring Boot
В этом видео автор показывает, как создать приложение, похожее на Google Фото, с помощью Spring Boot.
Конкатенация
Конкатенация — это операция объединения или склеивания двух или более строк или последовательностей символов для создания новой строки. В общем смысле, это означает соединение элементов в одну последовательность. Этот термин применяется не только к строкам, но и к другим типам данных, которые могут быть объединены.
#код
Конкатенация — это операция объединения или склеивания двух или более строк или последовательностей символов для создания новой строки. В общем смысле, это означает соединение элементов в одну последовательность. Этот термин применяется не только к строкам, но и к другим типам данных, которые могут быть объединены.
#код
Автовайринг в Spring
В среде Spring существует четыре типа автовайринга.
✔️ autowire byName
✔️ autowire byType
✔️ autowire by constructor
✔️ autowiring by @Autowired and @Qualifier annotations
До Spring 3.1 также поддерживалась autowire by autodetect, которая была похожа на автовайринг по конструктору или по типу. Для получения более подробной информации об этих опциях можете обратиться к статье.
В среде Spring существует четыре типа автовайринга.
✔️ autowire byName
✔️ autowire byType
✔️ autowire by constructor
✔️ autowiring by @Autowired and @Qualifier annotations
До Spring 3.1 также поддерживалась autowire by autodetect, которая была похожа на автовайринг по конструктору или по типу. Для получения более подробной информации об этих опциях можете обратиться к статье.
🔍🤖 40 сервисов на базе AI, которые помогут найти работу в 2023 году
Как составить резюме, оптимизировать сопроводительное письмо и найти вакансию в 2023 году? Использовать сервисы на основе искусственного интеллекта. Какие именно — рассказываем в этой статье.
🔗 Читать статью
🔗 Зеркало
Как составить резюме, оптимизировать сопроводительное письмо и найти вакансию в 2023 году? Использовать сервисы на основе искусственного интеллекта. Какие именно — рассказываем в этой статье.
🔗 Читать статью
🔗 Зеркало
Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак.
Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().
#вопросы_с_собеседований
При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак.
Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().
#вопросы_с_собеседований
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека питониста
Библиотека devops’a
Библиотека тестировщика
Библиотека пхпшника
💼Каналы с вакансиями
Вакансии по питону, Django, Flask
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity
Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека питониста
Библиотека devops’a
Библиотека тестировщика
Библиотека пхпшника
💼Каналы с вакансиями
Вакансии по питону, Django, Flask
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity
Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Метод Character.toString()
Метод Character.toString() используется для преобразования символа (char) в строку (String).
Метод принадлежит классу Character и полезен, когда нужно конвертировать символ в строку для вывода или конкатенации.
#код
Метод Character.toString() используется для преобразования символа (char) в строку (String).
Метод принадлежит классу Character и полезен, когда нужно конвертировать символ в строку для вывода или конкатенации.
#код