SOLID на практике в автоматизации тестирования
Как на практике реализовать все принципы и упростить разработку тестирования BDD ?
Примером будет интеграционное тестирование, но вам ничего не помешает реализовать для End2End
Читать статью
Как на практике реализовать все принципы и упростить разработку тестирования BDD ?
Примером будет интеграционное тестирование, но вам ничего не помешает реализовать для End2End
Читать статью
Telegraph
SOLID на практике в автоматизации тестирования
Как на практике реализовать все принципы и упростить разработку тестирования BDD ? Для чего нужны принципы SOLID При создании программных систем использование принципов SOLID способствует созданию такой системы, которую будет легко поддерживать и расширять…
👍13🔥2❤1
В этом новом видео "История систем контроля версий" автор рассказывает об эволюции систем контроля версий, начиная с первых командных интерфейсов и заканчивая современными децентрализованными системами. Автор описывает основные принципы и функциональность таких систем, как SCCS, RCS, CVS, SVN и Git, рассказывает о их преимуществах и ограничениях, а также о том, как они повлияли на развитие современного программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥2
Introducing Spring Framework 6: Learning and Building Java-based Applications With Spring, Second Edition (2022) PDF, ePUB
Spring Framework 6 remains - by far - the leading de-facto "out of the box" practical Java meta application development framework for building complex enterprise, cloud-native applications as well as web applications and microservices. Introducing Spring Framework 6 is your hands-on tutorial guide for learning the Spring Framework 6 from top to bottom, and allows you to build an example application along the way from the ground-up.
As you learn the Spring Framework over the course of this book, you’ll incrementally build your first Spring application piece-by-piece as you learn each module, project or component of the Spring Framework and its extensions and ecosystem. As you learn the various fundamentals, you'll then apply them immediately to your Spring application. This Spring application, My Documents, enables you to learn by doing.
Spring Framework 6 remains - by far - the leading de-facto "out of the box" practical Java meta application development framework for building complex enterprise, cloud-native applications as well as web applications and microservices. Introducing Spring Framework 6 is your hands-on tutorial guide for learning the Spring Framework 6 from top to bottom, and allows you to build an example application along the way from the ground-up.
As you learn the Spring Framework over the course of this book, you’ll incrementally build your first Spring application piece-by-piece as you learn each module, project or component of the Spring Framework and its extensions and ecosystem. As you learn the various fundamentals, you'll then apply them immediately to your Spring application. This Spring application, My Documents, enables you to learn by doing.
👍5❤2🔥1
В чём заключается разница между IO и NIO?
• Java IO (input-output) является потокоориентированным, а
• Потоки ввода/вывода в
• В
• Java IO (input-output) является потокоориентированным, а
Java NIO (new/non-blocking io)
– буфер-ориентированным. Потокоориентированный ввод/вывод подразумевает чтение/запись из потока/в поток одного или нескольких байт в единицу времени поочередно. Данная информация нигде не кэшируются. Таким образом, невозможно произвольно двигаться по потоку данных вперед или назад. В Java NIO
данные сначала считываются в буфер, что дает больше гибкости при обработке данных.• Потоки ввода/вывода в
Java IO
являются блокирующими. Это значит, что когда в потоке выполнения вызывается read()
или write()
метод любого класса из пакета java.io.*
, происходит блокировка до тех пор, пока данные не будут считаны или записаны. Поток выполнения в данный момент не может делать ничего другого. Неблокирующий режим Java NIO
позволяет запрашивать считанные данные из канала (channel) и получать только то, что доступно на данный момент, или вообще ничего, если доступных данных пока нет. Вместо того, чтобы оставаться заблокированным пока данные не станут доступными для считывания, поток выполнения может заняться чем-то другим. Тоже самое справедливо и для неблокирующего вывода. Поток выполнения может запросить запись в канал некоторых данных, но не дожидаться при этом пока они не будут полностью записаны.• В
Java NIO
имеются селекторы, которые позволяют одному потоку выполнения мониторить несколько каналов ввода. Т.е. существует возможность зарегистрировать несколько каналов с селектором, а потом использовать один поток выполнения для обслуживания каналов, имеющих доступные для обработки данные, или для выбора каналов, готовых для записи.👍28🎉2❤1
МТС начала прием заявок на ИТ-олимпиаду True Tech Champ
Олимпиада имеет два трека для разных возрастных категорий:
— учащиеся старших классов и студенты могут соревноваться за призы до 1 млн рублей
— ИТ-специалисты могут выиграть до 3 млн рублей.
Регистрация доступна с 4 сентября по 5 октября на официальном сайте мероприятия.
Участникам предоставляется образовательная поддержка, включая курсы и мастер-классы. Это мероприятие призвано объединить ИТ-сообщество и выявить новые таланты в России.
Олимпиада имеет два трека для разных возрастных категорий:
— учащиеся старших классов и студенты могут соревноваться за призы до 1 млн рублей
— ИТ-специалисты могут выиграть до 3 млн рублей.
Регистрация доступна с 4 сентября по 5 октября на официальном сайте мероприятия.
Участникам предоставляется образовательная поддержка, включая курсы и мастер-классы. Это мероприятие призвано объединить ИТ-сообщество и выявить новые таланты в России.
😁10👍5
Графический интерфейс для bash, делаем работу в командной строке удобнее
Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи. После этого интерфейс командной строки выглядит как-то бедно. Конечно, он очень хорошо продуман, сделан настолько удобным, насколько это возможно в текстовом UI, но в графическом UI возможностей намного больше. Представляю вам плагин для JetBrains IDE, позволяющий работать в командной строке cо всеми удобствами IDE.
Читать статью
Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи. После этого интерфейс командной строки выглядит как-то бедно. Конечно, он очень хорошо продуман, сделан настолько удобным, насколько это возможно в текстовом UI, но в графическом UI возможностей намного больше. Представляю вам плагин для JetBrains IDE, позволяющий работать в командной строке cо всеми удобствами IDE.
Читать статью
Teletype
Графический интерфейс для bash, делаем работу в командной строке удобнее
Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом...
👍19🤩1
Prostore — простой Event sourcing + CQRS фреймворк
На данный момент на рынке мало Event sourcing + CQRS фреймворков. А те, что есть, непопулярны и имеют слабую поддержку, поэтому многие создают свои in-house решения. В этой статье расскажу о выполненном командой «Programming Store» проекте Prostore, который может послужить примером при создании вашего собственного решения.
Читать статью
На данный момент на рынке мало Event sourcing + CQRS фреймворков. А те, что есть, непопулярны и имеют слабую поддержку, поэтому многие создают свои in-house решения. В этой статье расскажу о выполненном командой «Programming Store» проекте Prostore, который может послужить примером при создании вашего собственного решения.
Читать статью
Teletype
Prostore — простой Event sourcing + CQRS фреймворк
На данный момент на рынке мало Event sourcing + CQRS фреймворков. А те, что есть, непопулярны и имеют слабую поддержку, поэтому многие...
👍13❤3🔥2
Что такое «каналы»?
Каналы (channels) – это логические (не физические) порталы, абстракции объектов более низкого уровня файловой системы (например, отображенные в памяти файлы и блокировки файлов), через которые осуществляется ввод/вывод данных, а буферы являются источниками или приёмниками этих переданных данных. При организации вывода, данные, которые необходимо отправить, помещаются в буфер, который затем передается в канал. При вводе, данные из канала помещаются в заранее предоставленный буфер.
Каналы напоминают трубопроводы, по которым эффективно транспортируются данные между буферами байтов и сущностями по ту сторону каналов. Каналы – это шлюзы, которые позволяют получить доступ к сервисам ввода/вывода операционной системы с минимальными накладными расходами, а буферы – внутренние конечные точки этих шлюзов, используемые для передачи и приема данных.
Каналы (channels) – это логические (не физические) порталы, абстракции объектов более низкого уровня файловой системы (например, отображенные в памяти файлы и блокировки файлов), через которые осуществляется ввод/вывод данных, а буферы являются источниками или приёмниками этих переданных данных. При организации вывода, данные, которые необходимо отправить, помещаются в буфер, который затем передается в канал. При вводе, данные из канала помещаются в заранее предоставленный буфер.
Каналы напоминают трубопроводы, по которым эффективно транспортируются данные между буферами байтов и сущностями по ту сторону каналов. Каналы – это шлюзы, которые позволяют получить доступ к сервисам ввода/вывода операционной системы с минимальными накладными расходами, а буферы – внутренние конечные точки этих шлюзов, используемые для передачи и приема данных.
👍9🔥4❤2
Айтишники, у вас бывало такое: пишете код и думаете, что он достоин Нобелевской премии, Оскара и всех наград этого мира? 💎
Тогда вам точно нужно попробовать свои силы в Конкурсе красоты кода, который запустил Сбер специально ко Дню программиста. Чтобы побороться за звание «Автор самого красивого кода» и получить один из пятнадцати iPhone 14, нужно:
✔️ Выбрать дисциплину по душе и скилам: Python, Java, Data Science, Frontend или Android.
✔️ Написать свой эталонный код до 18 сентября по ссылке.
✔️ Дождаться результатов — их объявят 21 сентября.
Переходи по ссылке, читай подробности, и вперёд — к коду мечты 💚
Тогда вам точно нужно попробовать свои силы в Конкурсе красоты кода, который запустил Сбер специально ко Дню программиста. Чтобы побороться за звание «Автор самого красивого кода» и получить один из пятнадцати iPhone 14, нужно:
✔️ Выбрать дисциплину по душе и скилам: Python, Java, Data Science, Frontend или Android.
✔️ Написать свой эталонный код до 18 сентября по ссылке.
✔️ Дождаться результатов — их объявят 21 сентября.
Переходи по ссылке, читай подробности, и вперёд — к коду мечты 💚
👍8🔥2
Красивый код с Java Optional и Either
Многие из Java разработчиков, особенно начинающие, упускают из вида возможности функционального программирования. 😒
Предложенная сегодня статья научит вас последовательному соединению экземпляров Optional и Either для написания лаконичного и красивого кода.
Хорошей практики!
Читать статью
Многие из Java разработчиков, особенно начинающие, упускают из вида возможности функционального программирования. 😒
Предложенная сегодня статья научит вас последовательному соединению экземпляров Optional и Either для написания лаконичного и красивого кода.
Хорошей практики!
Читать статью
👍16🔥5❤3
Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?
Если очередь пула потоков заполнилась, то поданная задача будет «отклонена». Например - метод
Если очередь пула потоков заполнилась, то поданная задача будет «отклонена». Например - метод
submit()
у ThreadPoolExecutor
выкидывает RejectedExecutionException
, после которого вызывается RejectedExecutionHandler
.👍15🔥4
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
Читать статью
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
Читать статью
Teletype
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть...
👍19❤5🔥1
В чём заключается различие между методами submit() и execute() у пула потоков?
Оба метода являются способами подачи задачи в пул потоков, но между ними есть небольшая разница.
Оба метода являются способами подачи задачи в пул потоков, но между ними есть небольшая разница.
execute(Runnable command)
определён в интерфейсе Executor
и выполняет поданную задачу и ничего не возвращает.submit()
– перегруженный метод, определённый в интерфейсе ExecutorService
. Способен принимать задачи типов Runnable
и Callable
и возвращать объект Future
, который можно использовать для контроля и управления процессом выполнения, получения его результата.👍27🔥5
❓Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!
👩💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.
👩💻 Kotlin Developer - самый топовый канал для котлин разработчика!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3
Pro Spring 6 with Kotlin: An In-depth Guide to Using Kotlin APIs in Spring Framework 6 (2023) True PDF, ePUB
Master the fundamentals of Spring Framework 6 while learning from the real-world experiences of Spring experts. Over the course of this book, you'll learn how to leverage Spring 6 in tandem with the Kotlin programming language to build complex enterprise applications from top to bottom. From monoliths to cloud native apps for streaming microservices, you’ll gain insight into every aspect of the process, including transactions, data access, persistence, and web and presentation tiers.
As you progress through the book, the authors demonstrate how to run Kotlin with a single command, deploy new utility methods in String class, use Local-Variable Syntax for Lambda Parameters Nested Based Access Control, read/write strings to and from files, and using Flight Recorder. Also, a whole new generation of dependencies are available, and you’ll see exactly how to make optimal use of them.
Master the fundamentals of Spring Framework 6 while learning from the real-world experiences of Spring experts. Over the course of this book, you'll learn how to leverage Spring 6 in tandem with the Kotlin programming language to build complex enterprise applications from top to bottom. From monoliths to cloud native apps for streaming microservices, you’ll gain insight into every aspect of the process, including transactions, data access, persistence, and web and presentation tiers.
As you progress through the book, the authors demonstrate how to run Kotlin with a single command, deploy new utility methods in String class, use Local-Variable Syntax for Lambda Parameters Nested Based Access Control, read/write strings to and from files, and using Flight Recorder. Also, a whole new generation of dependencies are available, and you’ll see exactly how to make optimal use of them.
👍12🔥2❤1
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
Cтек
– участок памяти, тесно связанный с потоками. У каждого потока есть свой стек, которые хранит локальные переменные, параметры методов и стек вызовов. Переменная, хранящаяся в стеке одного потока, не видна для другого.Куча
– общий участок памяти, который делится между всеми потоками. Объекты, неважно локальные или любого другого уровня, создаются в куче. Для улучшения производительности, поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи используется ключевое слово volatile.👍32🔥6
Создание локального Kubernetes окружения просто и за 15 минут
В данном видео рассмотрен пример работы с локальным kubernetes окружения. Также пример создания docker образа для spring boot приложений.
В данном видео рассмотрен пример работы с локальным kubernetes окружения. Также пример создания docker образа для spring boot приложений.
YouTube
Создание локального Kubernetes окружения просто и за 15 минут
В данном видео рассмотрен пример работы с локальным kubernetes окружения. Также пример создания docker образа для spring boot приложений.
Мои ссылки:
✅ Информационный канал (https://t.me/kirya522) с анонсами и инсайдами
🌐 сайт (https://kirya522.tech/)
📹…
Мои ссылки:
✅ Информационный канал (https://t.me/kirya522) с анонсами и инсайдами
🌐 сайт (https://kirya522.tech/)
📹…
👍16❤3🔥3😁1
Погружение в паттерны проектирования (2021) PDF + Архив с примерами кода
Книга «Погружение в Паттерны Проектирования» описывает 22 классических паттерна проектирования, а также 8 принципов проектирования, на которых они основаны.
Каждая глава начинается с разбора определённой проблемы, возникающей при проектировании, и шаг за шагом подводит читателя к решению с помощью одного из паттернов.
Далее идёт детальный разбор структуры паттерна и его вариаций, а также пример реализации в коде.
Затем, читатель знакомится с кейсами использования паттерна и учится воспроизводить паттерн по шагам.
Заканчиваются главы обсуждением плюсов и минусов паттерна, а также обзором его связей с другими паттернами.
Книга «Погружение в Паттерны Проектирования» описывает 22 классических паттерна проектирования, а также 8 принципов проектирования, на которых они основаны.
Каждая глава начинается с разбора определённой проблемы, возникающей при проектировании, и шаг за шагом подводит читателя к решению с помощью одного из паттернов.
Далее идёт детальный разбор структуры паттерна и его вариаций, а также пример реализации в коде.
Затем, читатель знакомится с кейсами использования паттерна и учится воспроизводить паттерн по шагам.
Заканчиваются главы обсуждением плюсов и минусов паттерна, а также обзором его связей с другими паттернами.
👍15🔥4
Что такое ThreadLocal-переменная?
У каждого потока - т.е. экземпляра класса
Например, если мы объявим
Следует обратить внимание, что
Так же важно отметить, что т.к.
ThreadLocal
- класс, позволяющий имея одну переменную, иметь различное её значение для каждого из потоков.У каждого потока - т.е. экземпляра класса
Thread
- есть ассоциированная с ним таблица ThreadLocal-переменных
. Ключами таблицы являются cсылки на объекты класса ThreadLocal
, а значениями - ссылки на объекты, «захваченные» ThreadLocal-переменными
, т.е. ThreadLocal-переменные
отличаются от обычных переменных тем, что у каждого потока свой собственный, индивидуально инициализируемый экземпляр переменной. Доступ к значению можно получить через методы get()
или set()
.Например, если мы объявим
ThreadLocal-переменную
: ThreadLocal<Object> locals = new ThreadLocal<Object>();
. А затем, в потоке, сделаем locals.set(myObject)
, то ключом таблицы будет ссылка на объект locals
, а значением - ссылка на объект myObject
. При этом для другого потока существует возможность «положить» внутрь locals
другое значение.Следует обратить внимание, что
ThreadLocal
изолирует именно ссылки на объекты, а не сами объекты. Если изолированные внутри потоков ссылки ведут на один и тот же объект, то возможны коллизии.Так же важно отметить, что т.к.
ThreadLocal-переменные
изолированы в потоках, то инициализация такой переменной должна происходить в том же потоке, в котором она будет использоваться. Ошибкой является инициализация такой переменной (вызов метода set()
) в главном потоке приложения, потому как в данном случае значение, переданное в методе set()
, будет «захвачено» для главного потока, и при вызове метода get()
в целевом потоке будет возвращен null
.👍26🔥10
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Класс Object. Разбор вопросов на собеседование.
В данном видео я разбираю вопросы по классу Object на собеседование для начинающих Java разработчиков. Это вопросы из моего личного списка, те что я сам время от времени задаю.
Привожу их тут, чтобы помочь в подготовке, так как практика показывает, что…
Привожу их тут, чтобы помочь в подготовке, так как практика показывает, что…
❤11👍7