Грокаем функциональное мышление (2023) PDF
Кодовые базы разрастаются, становясь всё сложнее и запутаннее, что не может не пугать разработчиков. Как обнаружить код, изменяющий состояние вашей системы? Как сделать код таким, чтобы он не увеличивал сложность и запутанность кодовой базы? Большую часть «действий», изменяющих состояние, можно превратить в «вычисления», чтобы ваш код стал проще и логичнее. Вы научитесь бороться со сложными ошибками синхронизации, которые неизбежно проникают в асинхронный и многопоточный код, узнаете, как компонуемые абстракции предотвращают дублирование кода, и откроете для себя новые уровни его выразительности. Книга предназначена для разработчиков среднего и высокого уровня, создающих сложный код. Примеры, иллюстрации, вопросы для самопроверки и практические задания помогут надежно закрепить новые знания.
Кодовые базы разрастаются, становясь всё сложнее и запутаннее, что не может не пугать разработчиков. Как обнаружить код, изменяющий состояние вашей системы? Как сделать код таким, чтобы он не увеличивал сложность и запутанность кодовой базы? Большую часть «действий», изменяющих состояние, можно превратить в «вычисления», чтобы ваш код стал проще и логичнее. Вы научитесь бороться со сложными ошибками синхронизации, которые неизбежно проникают в асинхронный и многопоточный код, узнаете, как компонуемые абстракции предотвращают дублирование кода, и откроете для себя новые уровни его выразительности. Книга предназначена для разработчиков среднего и высокого уровня, создающих сложный код. Примеры, иллюстрации, вопросы для самопроверки и практические задания помогут надежно закрепить новые знания.
👍26🔥3🤩2
Java — один из самых популярных языков программирования в мире. Хотите начать путь в IT с его изучения? Присоединяйтесь к практическому онлайн-интенсиву по Java-разработке 31 июля в 19:00 (МСК).
Мы расскажем, какие навыки нужны разработчику для трудоустройства, а также сравним возможности Java и Python.
При регистрации дарим гайд по профессии Java-разработчика: 👉https://epic.st/kbvlEF
💪Вы попробуете написать Telegram-бота, даже если никогда не программировали.
🔔Спикер — Даниил Пилипенко, основатель и директор центра подбора IT-специалистов SymbioWay. Более 19 лет работает в сфере Java и веб-разработки. За его плечами более 500 выступлений на семинарах и конференциях.
🎁Участвуйте, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox. Всем дошедшим до конца интенсива дарим электронную книгу издательства МИФ «Разум под контролем» Роджера Сайпа и Робба Збиерски.
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Мы расскажем, какие навыки нужны разработчику для трудоустройства, а также сравним возможности Java и Python.
При регистрации дарим гайд по профессии Java-разработчика: 👉https://epic.st/kbvlEF
💪Вы попробуете написать Telegram-бота, даже если никогда не программировали.
🔔Спикер — Даниил Пилипенко, основатель и директор центра подбора IT-специалистов SymbioWay. Более 19 лет работает в сфере Java и веб-разработки. За его плечами более 500 выступлений на семинарах и конференциях.
🎁Участвуйте, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox. Всем дошедшим до конца интенсива дарим электронную книгу издательства МИФ «Разум под контролем» Роджера Сайпа и Робба Збиерски.
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
👍4❤2
Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()?
Если итератор указывает на последний элемент коллекции, то возникнет исключение
Если итератор указывает на последний элемент коллекции, то возникнет исключение
NoSuchElementException, иначе будет возвращен следующий элемент.👍13
Модернизация Java Enterprise: облачные технологии для разработчиков (2023) PDF, ePUB
В разговорах о технологиях постоянно упоминаются контейнеры, микросервисы и распределенные системы, однако большинство приложений по-прежнему работают на базе монолитных архитектур, основанных на традиционных процессах разработки. Давайте поближе познакомимся с хорошо зарекомендовавшими себя моделями на основе Java и разберемся, как перенести эти монолитные приложения в будущее.
Опираясь на многолетний опыт модернизации приложений, Маркус Эйзеле и Натале Винто показывают, что необходимо сделать для обновления приложений Java, как разделить на части монолитные приложения и перейти на современный программный стек, работающий как в облаке, так и в локальной среде.
В разговорах о технологиях постоянно упоминаются контейнеры, микросервисы и распределенные системы, однако большинство приложений по-прежнему работают на базе монолитных архитектур, основанных на традиционных процессах разработки. Давайте поближе познакомимся с хорошо зарекомендовавшими себя моделями на основе Java и разберемся, как перенести эти монолитные приложения в будущее.
Опираясь на многолетний опыт модернизации приложений, Маркус Эйзеле и Натале Винто показывают, что необходимо сделать для обновления приложений Java, как разделить на части монолитные приложения и перейти на современный программный стек, работающий как в облаке, так и в локальной среде.
👍15🔥4❤1
❓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
👍7🔥2🤩1
Сколько элементов будет пропущено, если Iterator.next() будет вызван после 10-ти вызовов Iterator.hasNext()?
Нисколько -
Нисколько -
hasNext() осуществляет только проверку наличия следующего элемента.👍21🔥5❤1
Более чем за десять лет работы со Spring Framework и Enterprise Java автор успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это из-за того, что магия фреймворков иногда ломается, и делает это очень неочевидно.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Когда ломается магия фреймворков...
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это…
Всё это…
👍13🔥6
Kafka в действии (2022) True PDF
Это практическое руководство показывает, как использовать распределенную потоковую платформу Apache Kafka для удовлетворения различных бизнес-требований. Рассказывается, как устроена Kafka и где она может пригодиться на практике; описываются характеристики проектов, в которых может пригодиться эта платформа. Рассматриваются основные ее компоненты – клиенты и кластер, представлены варианты улучшения работающего кластера. Книга адресована разработчикам, желающим ознакомиться с идеей потоковой обработки данных. Для изучения примеров кода понадобятся базовые знания командной строки; желательно иметь навыки программирования на языке Java.
Это практическое руководство показывает, как использовать распределенную потоковую платформу Apache Kafka для удовлетворения различных бизнес-требований. Рассказывается, как устроена Kafka и где она может пригодиться на практике; описываются характеристики проектов, в которых может пригодиться эта платформа. Рассматриваются основные ее компоненты – клиенты и кластер, представлены варианты улучшения работающего кластера. Книга адресована разработчикам, желающим ознакомиться с идеей потоковой обработки данных. Для изучения примеров кода понадобятся базовые знания командной строки; желательно иметь навыки программирования на языке Java.
👍15🔥6
Как поведёт себя коллекция, если вызвать iterator.remove()?
Если вызову
Если вызову
iterator.remove() предшествовал вызов iterator.next(), то iterator.remove() удалит элемент коллекции, на который указывает итератор, в противном случае будет выброшено IllegalStateException().👍27
В этом видео автор рассказывает, как решить тестовое задание SQL Parser на Java/Kotlin.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Тестовое задание Java Kotlin - SQL Parser
В этом видео я рассказываю, как решить тестовое задание SQL Parser на Java/Kotlin.
Каркас - https://github.com/peterarsentev/job4j_sql_parser
Тестовые задания - https://github.com/Ecwid/new-job/blob/master/SQL-parser.md
Курс по Java/Kotlin - https://job4j.ru/
Каркас - https://github.com/peterarsentev/job4j_sql_parser
Тестовые задания - https://github.com/Ecwid/new-job/blob/master/SQL-parser.md
Курс по Java/Kotlin - https://job4j.ru/
👍9❤🔥1❤1🎅1
В этом видео автор рассказывает о том, что такое лямбда-выражения в языке программирования Java. На примерах показывает, для чего нужны лямбды, и какую роль они играют при написании кода в функциональном стиле.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Лямбда-выражения.
В этом видео я рассказываю о том, что такое лямбда-выражения в языке программирования Java. На примерах показываю, для чего нужны лябды, и какую роль они играют при написании кода в функциональном стиле.
Стать спонсором канала:
https://www.youtube.com/c…
Стать спонсором канала:
https://www.youtube.com/c…
👍20🔥2❤1
Spring в действии, 6-е издание (2022) True PDF
Каждый разработчик на Java должен быть знаком со Spring! Почему? Этот мощный фреймворк избавляет от множества утомительной работы, связанной с настройкой и решением повторяющихся задач, и упрощает создание готового к работе программного обеспечения промышленного качества. Последние обновления в значительной мере способствуют увеличению продуктивности программиста при разработке микросервисов, реактивных служб и других современных приложений. Неудивительно, что больше половины всех разработчиков на Java используют Spring.
Перед вами перевод 6-го издания великолепной книги Крейга Уоллса. Шаг за шагом вы пройдете путь создания законченного веб-приложения на основе базы данных. Новое издание охватывает не только основы Spring, но и новые возможности, такие как реактивные потоки или интеграция с Kubernetes и RSocket.
Каждый разработчик на Java должен быть знаком со Spring! Почему? Этот мощный фреймворк избавляет от множества утомительной работы, связанной с настройкой и решением повторяющихся задач, и упрощает создание готового к работе программного обеспечения промышленного качества. Последние обновления в значительной мере способствуют увеличению продуктивности программиста при разработке микросервисов, реактивных служб и других современных приложений. Неудивительно, что больше половины всех разработчиков на Java используют Spring.
Перед вами перевод 6-го издания великолепной книги Крейга Уоллса. Шаг за шагом вы пройдете путь создания законченного веб-приложения на основе базы данных. Новое издание охватывает не только основы Spring, но и новые возможности, такие как реактивные потоки или интеграция с Kubernetes и RSocket.
👍23🔥6❤4
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
При следующем вызове методов итератора будет выброшено
При следующем вызове методов итератора будет выброшено
ConcurrentModificationException.👍14
Шпаргалка по структурам данных в Java
К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу поделиться с вами своей шпаргалкой, которую использую перед собеседованиями для повторения структур данных в Java.
Читать статью
К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу поделиться с вами своей шпаргалкой, которую использую перед собеседованиями для повторения структур данных в Java.
Читать статью
Teletype
Шпаргалка по структурам данных в Java
К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу...
👍17🔥10❤1
Основы программирования с Java (2022) True PDF
Эта книга предназначена для всех, кто хочет изучить основы программирования с использованием языка Java.
Эта книга даст понимание основных элементов программирования на Java и абстракции данных с использованием объектно-ориентированного подхода. С этой книгой Вы научитесь писать программы с использованием переменных, массивов, управляющих операторов, циклов, рекурсии, абстракции данных и объектов в интегрированной среде разработки. Вы изучите основы языка программирования Java, познакомитесь с его синтаксисом, типами данных, объектами и классами и многим другим.
Эта книга предназначена для всех, кто хочет изучить основы программирования с использованием языка Java.
Эта книга даст понимание основных элементов программирования на Java и абстракции данных с использованием объектно-ориентированного подхода. С этой книгой Вы научитесь писать программы с использованием переменных, массивов, управляющих операторов, циклов, рекурсии, абстракции данных и объектов в интегрированной среде разработки. Вы изучите основы языка программирования Java, познакомитесь с его синтаксисом, типами данных, объектами и классами и многим другим.
👍12🔥2
Как избежать ConcurrentModificationException во время перебора коллекции?
• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу
• Использовать
• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока
Отрицательная сторона последних двух вариантов - ухудшение производительности.
• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу
fail-safe.• Использовать
ConcurrentHashMap и CopyOnWriteArrayList.• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока
synchronized.Отрицательная сторона последних двух вариантов - ухудшение производительности.
👍20
new vs valueOf
Старайтесь всегда использовать метод
Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
Старайтесь всегда использовать метод
valueOf вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение. Сейчас объясню, почему.Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
❤37👍5
Зачем добавили ArrayList, если уже был Vector?
• Методы класса
• По умолчанию,
• Методы класса
Vector синхронизированы, а ArrayList - нет;• По умолчанию,
Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.Vector это устаревший класс и его использование не рекомендовано.👍30
Каким будет результат сравнения в следующем коде?
Ответ:
s1 == s2 ? true
s1 == s3 ? false
s1 equals s3 ? true
Вопрос на понимание работы пула строк в Java и на понимание сравнения строк. Разберем детально: Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект. Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта. Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через equals, а содержимое данных строк одинаково.
Ответ:
s1 == s2 ? true
s1 == s3 ? false
s1 equals s3 ? true
Вопрос на понимание работы пула строк в Java и на понимание сравнения строк. Разберем детально: Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект. Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта. Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через equals, а содержимое данных строк одинаково.
👍41❤5🔥5
Spring быстро (2022) True PDF
Java-программистам необходим фреймворк Spring. Этот невероятный инструмент универсален: вы можете разрабатывать как приложения для малого бизнеса, так и микросервисные архитектуры промышленного масштаба. Освоить Spring не так-то просто, но первый шаг сделать легко! Книга предназначена для Java-разработчиков, желающих создавать приложения на основе Spring. Информативные иллюстрации, понятные примеры, а также ясное и живое изложение Лауренциу Спилкэ позволят быстро овладеть необходимыми навыками. Вы научитесь планировать, разрабатывать и тестировать приложения. Благодаря акценту на наиболее важных функциях разберетесь в богатой экосистеме фреймворка Spring.
Java-программистам необходим фреймворк Spring. Этот невероятный инструмент универсален: вы можете разрабатывать как приложения для малого бизнеса, так и микросервисные архитектуры промышленного масштаба. Освоить Spring не так-то просто, но первый шаг сделать легко! Книга предназначена для Java-разработчиков, желающих создавать приложения на основе Spring. Информативные иллюстрации, понятные примеры, а также ясное и живое изложение Лауренциу Спилкэ позволят быстро овладеть необходимыми навыками. Вы научитесь планировать, разрабатывать и тестировать приложения. Благодаря акценту на наиболее важных функциях разберетесь в богатой экосистеме фреймворка Spring.
🔥20👍9❤3
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
ArrayList:
• доступ к произвольному элементу по индексу за константное время
• доступ к элементам по значению за линейное время
• вставка в конец в среднем производится за константное время
• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
• на добавление и удаление в начало или конец списка потребуется константное
• вставка или удаление в/из произвольного место константное
• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
ArrayList это список, реализованный на основе массива, а LinkedList — это классический двусвязный список, основанный на объектах с ссылками между ними.ArrayList:
• доступ к произвольному элементу по индексу за константное время
O(1);• доступ к элементам по значению за линейное время
O(N);• вставка в конец в среднем производится за константное время
O(1);• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
capacity) не изменяется);• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
O(N);• на добавление и удаление в начало или конец списка потребуется константное
O(1);• вставка или удаление в/из произвольного место константное
O(1);• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.👍38❤4🔥1