🤖 Generative AI: как ускорить разработку с помощью Github Copilot и Databricks English SDK
Давайте разберемся, что же могут помощники и SDK, а чего от них ожидать еще рано. Рассмотрим наиболее популярные решения от Github и Databricks: варианты использования и их ограничения. Также поговорим о перспективах профессии AI-инженера.
🔗 Читать статью
🔗 Зеркало
Давайте разберемся, что же могут помощники и SDK, а чего от них ожидать еще рано. Рассмотрим наиболее популярные решения от Github и Databricks: варианты использования и их ограничения. Также поговорим о перспективах профессии AI-инженера.
🔗 Читать статью
🔗 Зеркало
Метод regionMatches()
Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали).
Параметры
ignoreCase — логическая переменная со значением true — игнорировать регистр, со значением false — не игнорировать регистр.
toffset — позиция, с которой начнем отсчет.
other — другая строка, часть которой мы будем сравнивать.
ooffset — позиция, с которой начнем отсчет в строке other
len — количество символов для сравнения.
#код
Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали).
Параметры
ignoreCase — логическая переменная со значением true — игнорировать регистр, со значением false — не игнорировать регистр.
toffset — позиция, с которой начнем отсчет.
other — другая строка, часть которой мы будем сравнивать.
ooffset — позиция, с которой начнем отсчет в строке other
len — количество символов для сравнения.
#код
fail-fast поведение
Fail-fast поведение (fail-fast behavior) — это принцип в программировании, который подразумевает, что программа должна обнаруживать ошибки и некорректные условия как можно раньше и немедленно генерировать исключения или останавливать выполнение, чтобы предотвратить дальнейшие некорректные операции и минимизировать возможные повреждения данных или неправильное поведение программы.
В Java fail-fast поведение реализуется с использованием механизмов. Если в процессе выполнения программы обнаруживается какое-либо нарушение, например, попытка доступа за пределы массива или передача недопустимого аргумента в метод, генерируется исключение, и выполнение программы прерывается.
#код
Fail-fast поведение (fail-fast behavior) — это принцип в программировании, который подразумевает, что программа должна обнаруживать ошибки и некорректные условия как можно раньше и немедленно генерировать исключения или останавливать выполнение, чтобы предотвратить дальнейшие некорректные операции и минимизировать возможные повреждения данных или неправильное поведение программы.
В Java fail-fast поведение реализуется с использованием механизмов. Если в процессе выполнения программы обнаруживается какое-либо нарушение, например, попытка доступа за пределы массива или передача недопустимого аргумента в метод, генерируется исключение, и выполнение программы прерывается.
#код
Какие подклассы класса Writer вы знаете, для чего они предназначены?
• Writer — абстрактный класс, описывающий символьный вывод;
• BufferedWriter — буферизованный выходной символьный поток;
• CharArrayWriter — выходной поток, который пишет в символьный массив;
• FileWriter — выходной поток, пишущий в файл;
• FilterWriter — абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• OutputStreamWriter — выходной поток, транслирующий байты в символы;
• PipedWriter — выходной канал;
• PrintWriter — выходной поток символов, включающий методы print() и println();
• StringWriter — выходной поток, пишущий в строку;
#вопросы_с_собеседований
• Writer — абстрактный класс, описывающий символьный вывод;
• BufferedWriter — буферизованный выходной символьный поток;
• CharArrayWriter — выходной поток, который пишет в символьный массив;
• FileWriter — выходной поток, пишущий в файл;
• FilterWriter — абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• OutputStreamWriter — выходной поток, транслирующий байты в символы;
• PipedWriter — выходной канал;
• PrintWriter — выходной поток символов, включающий методы print() и println();
• StringWriter — выходной поток, пишущий в строку;
#вопросы_с_собеседований
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, которая была похожа на автовайринг по конструктору или по типу. Для получения более подробной информации об этих опциях можете обратиться к статье.