💰 Обзор зарплат: сколько сейчас зарабатывают айтишники
В этой статье обсуждаем самую животрепещущую тему — зарплату. Присоединяйтесь :)
🔗 Читать статью
🔗 Зеркало
В этой статье обсуждаем самую животрепещущую тему — зарплату. Присоединяйтесь :)
🔗 Читать статью
🔗 Зеркало
Комбинирование хеш-таблиц
Комбинирование двух хеш-таблиц вручную через цикл очень неэффективно. Вот альтернативное решение этой проблемы, которое вам возможно понравится.
#код
Комбинирование двух хеш-таблиц вручную через цикл очень неэффективно. Вот альтернативное решение этой проблемы, которое вам возможно понравится.
#код
Приходилось ли вам переходить на более младшую позицию в другую компанию? Например, с Senior на Middle при релокации.
#интерактив
#интерактив
Метод Character.isWhitespace()
Метод Character.isWhitespace() используется для проверки, является ли символ пробельным.
Метод принимает символ и возвращает булево значение.
Считается, что символ является пробельным, если он соответствует одному из следующих значений: пробел (' '), табуляция (\t), перевод строки (\n), перевод страницы (\f), возврат каретки (\r). Метод удобно использовать для проверок вводимых данных, парсинга строк.
#код
Метод Character.isWhitespace() используется для проверки, является ли символ пробельным.
Метод принимает символ и возвращает булево значение.
Считается, что символ является пробельным, если он соответствует одному из следующих значений: пробел (' '), табуляция (\t), перевод строки (\n), перевод страницы (\f), возврат каретки (\r). Метод удобно использовать для проверок вводимых данных, парсинга строк.
#код
Очередной #дайджест по Java:
☕️ Преобразование закрытого ключа КриптоПро CSP по ГОСТ 2012 в контейнер p12, который понимает java
Интересная техническая статья.
☕️ Как легко перейти с Java на Rust: Особенности и советы
Автор делится опытом из своей рабочей практики.
☕️ Распространённые паттерны опечаток при программировании
Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты.
☕️ Всё, что вам нужно знать о таймаутах
Как установить оптимальное значение таймаутов в микросервисной архитектуре, чтобы достичь максимальной производительности и отказоустойчивости.
☕️ Java и современный процессор, Часть 1: Память и иерархия кэша
Разобравшись в том, как процессоры, память и кэш влияют на выполнение программ, вы сможете лучше понять производительность приложений и оптимизировать свой подход к их написанию.
☕️ Преобразование закрытого ключа КриптоПро CSP по ГОСТ 2012 в контейнер p12, который понимает java
Интересная техническая статья.
☕️ Как легко перейти с Java на Rust: Особенности и советы
Автор делится опытом из своей рабочей практики.
☕️ Распространённые паттерны опечаток при программировании
Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты.
☕️ Всё, что вам нужно знать о таймаутах
Как установить оптимальное значение таймаутов в микросервисной архитектуре, чтобы достичь максимальной производительности и отказоустойчивости.
☕️ Java и современный процессор, Часть 1: Память и иерархия кэша
Разобравшись в том, как процессоры, память и кэш влияют на выполнение программ, вы сможете лучше понять производительность приложений и оптимизировать свой подход к их написанию.
🤖 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, чтобы более эффективно генерировать и обрабатывать комбинации элементов из разных множеств.
#код
Часто ли вы прибегаете к помощи нейросетей в работе?
#интерактив
#интерактив