🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
FairSemaphore
Это класс, реализующий семафор, который обеспечивает справедливое распределение разрешений между потоками. Это означает, что потоки, ожидающие разрешения, будут получать его в порядке очереди, а не в случайном порядке.
В примере на картинке два потока будут пытаться получить доступ к ресурсу, который защищен с помощью FairSemaphore. Потоки будут получать доступ к ресурсу по очереди, а не в случайном порядке.
Это класс, реализующий семафор, который обеспечивает справедливое распределение разрешений между потоками. Это означает, что потоки, ожидающие разрешения, будут получать его в порядке очереди, а не в случайном порядке.
В примере на картинке два потока будут пытаться получить доступ к ресурсу, который защищен с помощью FairSemaphore. Потоки будут получать доступ к ресурсу по очереди, а не в случайном порядке.
Forwarded from Библиотека devops’а
☸️ Покоряем Kubernetes: от базовых концепций к эффективному управлению контейнерами
Умение работать с Kubernetes — ценный навык для продвинутого разработчика, и совершенно необходимый — для каждого DevOps-инженера. Расскажем просто и понятно, как разобраться в основных концепциях Kubernetes.
Читать статью
#гайд
Умение работать с Kubernetes — ценный навык для продвинутого разработчика, и совершенно необходимый — для каждого DevOps-инженера. Расскажем просто и понятно, как разобраться в основных концепциях Kubernetes.
Читать статью
#гайд
✍️✍️ Юнит-тесты: чек-лист методик проектирования
Все много раз слышали о необходимости писать модульные тесты и о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.
Автор задумался: есть ли руководство, которое облегчило бы генерацию тестовых сценариев и помогло выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.
Материал будет полезен разработчикам, которые уже пишут модульные тесты и которые только думают внедрять их в свой проект, а также желают применить методики проектирования тестов.
Читать статью
#почитать
Все много раз слышали о необходимости писать модульные тесты и о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.
Автор задумался: есть ли руководство, которое облегчило бы генерацию тестовых сценариев и помогло выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.
Материал будет полезен разработчикам, которые уже пишут модульные тесты и которые только думают внедрять их в свой проект, а также желают применить методики проектирования тестов.
Читать статью
#почитать
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Метод newSingleThreadExecutor()
Метод newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.
В примере выше создается ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.
Метод newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.
В примере выше создается ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.
🧠 Знания — сила! Что должен изучить каждый программист?
Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Пройти опрос
Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Пройти опрос
Очередной #дайджест по Java
☕ Spring AI 0.8.0 уже доступен — удобный API для моделей искусственного интеллекта, API для хранения векторов, вызов функций, ETL-фреймворк для инженерии данных
☕ Quarkus — горячий тренд Java-разработки
☕ Apache Kafka 3.7.0 — описание основных функций, о которых вы должны знать
☕ Как выдержать критику от других разрабов — чужие мнения и своя самооценка
☕ Slim Docker Images для Java — как создавать слим Docker-образы для Java-приложений с помощью Alpine Linux и Jlink
☕ Spring AI 0.8.0 уже доступен — удобный API для моделей искусственного интеллекта, API для хранения векторов, вызов функций, ETL-фреймворк для инженерии данных
☕ Quarkus — горячий тренд Java-разработки
☕ Apache Kafka 3.7.0 — описание основных функций, о которых вы должны знать
☕ Как выдержать критику от других разрабов — чужие мнения и своя самооценка
☕ Slim Docker Images для Java — как создавать слим Docker-образы для Java-приложений с помощью Alpine Linux и Jlink
😶🌫️😶🌫️ Изоляция в тестах с Kafka
Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов.
В статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep()
Читать статью
#туториал
Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов.
В статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep()
Читать статью
#туториал
ServletContext
Интерфейс, предоставляющий методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.
Некоторые из основных методов ServletContext:
getInitParameter(String name): возвращает значение инициализационного параметра сервлета, указанного по имени.
getInitParameterNames(): возвращает имена всех инициализационных параметров сервлета.
getAttribute(String name): возвращает значение атрибута, сохраненного в контексте сервлета по имени.
setAttribute(String name, Object object): устанавливает значение атрибута в контексте сервлета.
getRequestDispatcher(String path): возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.
getRealPath(String path): преобразует виртуальный путь в абсолютный путь на сервере.
Интерфейс, предоставляющий методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.
Некоторые из основных методов ServletContext:
getInitParameter(String name): возвращает значение инициализационного параметра сервлета, указанного по имени.
getInitParameterNames(): возвращает имена всех инициализационных параметров сервлета.
getAttribute(String name): возвращает значение атрибута, сохраненного в контексте сервлета по имени.
setAttribute(String name, Object object): устанавливает значение атрибута в контексте сервлета.
getRequestDispatcher(String path): возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.
getRealPath(String path): преобразует виртуальный путь в абсолютный путь на сервере.
🍍Подборка лучших статей «Библиотеки программиста» за февраль: сохраняй в заметки, чтобы не пропустить #самыйсок
😈 Даркнет: как устроен теневой рынок труда
🚀🏢 Стартапы vs IT-гиганты: куда лучше устроиться Junior-разработчику
🗄️ Базовые запросы SQL: получение записей из БД
🥇 Спортивная мотивация и мотивация в IT, что общего?
😺🐙💡 Как сделать креативный профиль на GitHub
🎮👨💻 15 игр, которые научат программированию
🧑🏻🏫 Менторство в IT: как стать айтишником, найти работу мечты и облегчить себе жизнь
⛩️ 6 способов нестандартно войти в Айти
📈 5 трендов в подборе ИТ-специалистов на 2024 год
🐍⛓️ Цепи Маркова: генерирование читабельной бессмыслицы за 20 строк на Python
☕📦 10 Java-библиотек, которые изменят твой код навсегда
🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали
😈 Даркнет: как устроен теневой рынок труда
🚀🏢 Стартапы vs IT-гиганты: куда лучше устроиться Junior-разработчику
🗄️ Базовые запросы SQL: получение записей из БД
🥇 Спортивная мотивация и мотивация в IT, что общего?
😺🐙💡 Как сделать креативный профиль на GitHub
🎮👨💻 15 игр, которые научат программированию
🧑🏻🏫 Менторство в IT: как стать айтишником, найти работу мечты и облегчить себе жизнь
⛩️ 6 способов нестандартно войти в Айти
📈 5 трендов в подборе ИТ-специалистов на 2024 год
🐍⛓️ Цепи Маркова: генерирование читабельной бессмыслицы за 20 строк на Python
☕📦 10 Java-библиотек, которые изменят твой код навсегда
🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Агрегация
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
Forwarded from Книги для джавистов | Java
📚Quick Functional Programming (2023)
✍️Автор: David Matuszek
📃Страниц: 128
Функциональное программирование - это мощный инструмент, который вы можете использовать в дополнение ко всем своим обычным инструментам, в той мере, в какой ваш текущий основной язык поддерживает его. Большинство языков имеют хотя бы базовую поддержку.
Попробуйте функциональное программирование. Вы можете быть удивлены, насколько сильно один инструмент может помочь вам в повседневном программировании.
Скачать книгу
✍️Автор: David Matuszek
📃Страниц: 128
Функциональное программирование - это мощный инструмент, который вы можете использовать в дополнение ко всем своим обычным инструментам, в той мере, в какой ваш текущий основной язык поддерживает его. Большинство языков имеют хотя бы базовую поддержку.
Попробуйте функциональное программирование. Вы можете быть удивлены, насколько сильно один инструмент может помочь вам в повседневном программировании.
Скачать книгу
Forwarded from Книги для джавистов | Java
📚Pro Jakarta EE 10: Open Source Enterprise Java-based Cloud-native Applications Development (2023)
✍️Автор: Peter Späth
📃Страниц: 512
Эта книга поможет вам создавать более сложные корпоративные облачные и другие приложения на базе Java, которые могут работать в корпоративных и других критически важных средах.
Что внутри:
🔸Создавайте сложные приложения Jakarta EE
🔸Создайте рабочий процесс профессиональной разработки с помощью Jakarta EE
🔸Создавайте более продвинутые приложения для веб-разработки
🔸Работайте с более продвинутыми вспомогательными технологиями для повышения зрелости и стабильности приложений в корпоративной среде
Скачать книгу
✍️Автор: Peter Späth
📃Страниц: 512
Эта книга поможет вам создавать более сложные корпоративные облачные и другие приложения на базе Java, которые могут работать в корпоративных и других критически важных средах.
Что внутри:
🔸Создавайте сложные приложения Jakarta EE
🔸Создайте рабочий процесс профессиональной разработки с помощью Jakarta EE
🔸Создавайте более продвинутые приложения для веб-разработки
🔸Работайте с более продвинутыми вспомогательными технологиями для повышения зрелости и стабильности приложений в корпоративной среде
Скачать книгу
Очередной #дайджест по Java
✅ Обязательные знания для тимлида — в помощь всем текущим и будущим руководителям
✅ Асинхронная работа с файловой системой в Vert.x — узнаем больше про экосистему для создания реактивных приложений на JVM
✅ Программирую, учусь и работаю 24/7 но этого все еще мало — история о вредном трудоголизме
✅ Изоляция в тестах с Kafka — опыт запуска Kafka в тестовых сценариях
✅ Создание REST API с использованием Spring WebFlux и Security — рассмотрен пример создания REST API с использованием следующих технологий: Spring Boot 3, Spring Security (JWT), Spring WebFlux, Spring Data R2DBC
✅ Обязательные знания для тимлида — в помощь всем текущим и будущим руководителям
✅ Асинхронная работа с файловой системой в Vert.x — узнаем больше про экосистему для создания реактивных приложений на JVM
✅ Программирую, учусь и работаю 24/7 но этого все еще мало — история о вредном трудоголизме
✅ Изоляция в тестах с Kafka — опыт запуска Kafka в тестовых сценариях
✅ Создание REST API с использованием Spring WebFlux и Security — рассмотрен пример создания REST API с использованием следующих технологий: Spring Boot 3, Spring Security (JWT), Spring WebFlux, Spring Data R2DBC
PreferencesFactory
Интерфейс PreferencesFactory используется для создания объектов Preferences.
Он предоставляет два метода:
systemRoot(): возвращает корневой узел предпочтений системы.
userRoot(): возвращает корневой узел предпочтений пользователя, вызвавшего метод.
Поставщики новых реализаций Preferences должны предоставлять соответствующие реализации PreferencesFactory, чтобы их можно было установить вместо реализации по умолчанию, зависящей от платформы.
Интерфейс PreferencesFactory используется для создания объектов Preferences.
Он предоставляет два метода:
systemRoot(): возвращает корневой узел предпочтений системы.
userRoot(): возвращает корневой узел предпочтений пользователя, вызвавшего метод.
Поставщики новых реализаций Preferences должны предоставлять соответствующие реализации PreferencesFactory, чтобы их можно было установить вместо реализации по умолчанию, зависящей от платформы.