seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

Параллельные аккумуляторы

Кроме блокировок, Java Concurrent может предложить еще одну интересную функцию - параллельные аккумуляторы. LongAccumulator обновляет значение, используя предоставленную функцию. Это позволяет нам реализовать алгоритм без блокировок в ряде сценариев. Обычно это предпочтительнее чем AtomicLong, когда несколько потоков обновляют общее значение.

Для того чтобы создать аккумулятор, вам нужно указать в конструкторе два аргумента. Первый из них - это функция, используемая для вычисления результата аккумулятора. Обычно это метод sum. Второй параметр указывает начальное значение нашего аккумулятора.

Теперь давайте создадим LongAccumulator с начальным значением 10000а затем вызовем метод accumulate() из нескольких потоков.

#для_продвинутых

Читать полностью…

Senior Java Developer

Как поделиться данными между двумя потоками?

Данными между потоками возможно делиться, используя общий объект или параллельные структуры данных, например BlockingQueue.

Читать полностью…

Senior Java Developer

Что такое перегрузка методов?

Перегрузка методов — это свойство полиморфизма, в котором при помощи изменения сигнатуры метода можно создать различные реализации методов для одной и той же операции:
- одинаковое имя метода;
- различные аргументы;
- различный порядок аргументов;

Например, один и тот же add() из List может быть перегружен следующим образом и будет выполнять добавление разным способом, в зависимости от аргументов метода:
- add(Object o) — просто добавляет объект;
- add(int index, Object o) — добавляет объект в определенный индекс;
- add(Collection<Object> c) — добавляет список объектов;
- add(int index, Collection<Object> c) — добавляет список объектов, начиная с определенного индекса.

Читать полностью…

Senior Java Developer

А вы знали, что чтобы стать крутым разработчиком нужен ментор?

🎓Станьте уверенным профессионалом с достойным уровнем дохода в IT индустрии вместе с менторами YKul.

➡️Запишитесь на курс

❗️Не важно, новичок вы или действующий специалист. С нами вы преуспеете – пройдете именно ваш путь вместе с опытным ментором, действующим программистом уровня senior. Не нужно оплачивать фиксированный курс длиной в несколько месяцев.

Вы сможете:
✅ писать чистый валидный код
✅ легко работать с базами данных
✅ применять GIT, JDBC и JPA
✅ использовать Spring Framework
✅ решать реальные кейсы

❓Сколько времени это займет❓

👨🏻‍💻Мы определяем ваш уровень подготовки, и согласуем индивидуальный план занятий.

Оплачивайте занятия отдельно за каждый месяц, при необходимости делайте перерыв и возвращайтесь к практике, когда это удобно вам.

👍Мы помогаем с трудоустройством как новичкам, так и работающим специалистам - тем, кто в поиске лучших вакансий!

✅Каждое завершенное задание от YKul – успешный кейс для вашего портфолио.
✅ HR специалист YKul рассмотрит ваш опыт с точки зрения работодателя, вместе с вами подготовит убедительное резюме.
✅ Проработаем все вопросы и темы, важные для успешного прохождения собеседования.
✅ Наш сертификат станет еще одним плюсом в вашем профиле сотрудника.

➡️Запишитесь на курс

Хотите протестировать?

Убедитесь, что вам подходит формат и содержание занятий: первая неделя обучения – ❗️бесплатно❗️

Реклама: ИП Кулагин Андрей Николаевич, ИНН: 740411652688

Читать полностью…

Senior Java Developer

Создание подклассов исключений

Для того чтобы создать класс собственного исключения, достаточно определить его как производный от класса Exception.

В подклассах собственных исключений совсем не обязательно реализовать что-нибудь. В самом классе Exception не определено никаких методов.

Зачастую указывать описание исключения непосредственно при его создании очень удобно, но иногда для этого лучше переопределить метод toString().

#для_продвинутых

Читать полностью…

Senior Java Developer

Метод isPowerOfTwo()

Метод isPowerOfTwo() используется для проверки, является ли число степенью двойки.

Этот метод полезен при работе с битовыми операциями и оптимизации алгоритмов.

#это_база

Читать полностью…

Senior Java Developer

Метааннотации

Метааннотации используются для предоставления дополнительной информации о классах, методах и полях.

Они позволяют влиять на работу компилятора, среды выполнения и других инструментов без изменения самого кода.

Метааннотации добавляются перед объявлением класса, метода или поля и заключаются в символы @.

Например, метааннотация Deprecated помечает элемент устаревшим.

Метааннотация SuppressWarnings отключает предупреждения компилятора.

#это_база

Читать полностью…

Senior Java Developer

Изучите работу с высоконагруженными системами на курсе «Highload Architect» от OTUS

Всего за 5 месяцев вы:
✅ научитесь использовать решения, которые выдерживают сотни тысяч (и даже миллионы) запросов в секунду;
✅ сможете правильно оптимизировать работоспособность серверов;
✅ актуализируйте и систематизируйте знания в сфере HighLoad.
Программа курса полностью актуализирована и заточена под современные требования престижных работодателей.

Не упустите возможность получить вакантное место в крупном проекте! Обучение начнется уже 31 октября и в честь Хеллоуина вы можете записаться на курс со скидкой 15% по промокоду «Hello15». Пройдите тестирование прямо сейчас, чтобы воспользоваться предложением: https://otus.pw/poqQ/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KPYog

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какие классы поддерживают чтение и запись потоков в компрессированном формате?

В Java для работы с потоками в сжатом формате используются классы из пакета java.util.zip:

ZipInputStream и ZipOutputStream — для чтения и записи архивов в формате ZIP.
GZIPInputStream и GZIPOutputStream — для чтения и записи файлов в формате GZIP.
InflaterInputStream и DeflaterOutputStream — для чтения и записи данных в формате ZLIB.

Эти классы являются обертками потоков ввода/вывода и позволяют прозрачно читать и записывать сжатые данные, как если бы речь шла о обычных потоках.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Существует ли возможность перенаправить потоки стандартного ввода/вывода?

Да, в Java есть возможность перенаправить стандартные потоки ввода/вывода. Это можно сделать с помощью класса System и его методов setIn(), setOut() и setErr().

Таким образом можно гибко управлять вводом/выводом приложения, не меняя исходный код. Это полезно для логирования, unit-тестирования и в других случаях.

Читать полностью…

Senior Java Developer

🏆 Yandex Cup 2023 — открытый чемпионат для настоящих творцов

Разработчики — художники нового мира. Они создают смыслы, правила и законы, манифестируют идеи, творят миры и целые вселенные. И, если их предшественники делали это, используя слова, краски и звуки, то современные творцы создают новую реальность с помощью программного кода.

Искусство писать код

Тема чемпионата в этом году «Решаем искусство». Участников ждут нестандартные задачи на стыке IT и творчества, а лучшие встретятся лицом к лицу в финале, чтобы оживить арт-инсталляцию и разделить между собой 8 500 000 рублей.

Показать своё мастерство можно в 6 направлениях:

🔸 Фронтенд
🔸 Бэкенд
🔸 Мобильная разработка
🔸 Аналитика
🔸 Алгоритмы
🔸 Машинное обучение

Финал и церемония награждения пройдут офлайн в офисе Яндекса в Казахстане. Яндекс предоставит финалистам проезд и проживание в Алматы.

Регистрация открыта до 29 октября включительно:

👉 Участвую!

#Yandex_Cup23

Читать полностью…

Senior Java Developer

unmodifiableMap

UnmodifiableMap используется для создания неизменяемого представления отображения, это позволяет предоставить доступ к отображению, не давая возможности изменить его.

Как видно из примера, при попытке изменить неизменяемое отображение unmodifiableMap выбрасывается исключение UnsupportedOperationException. Это гарантирует, что исходное отображение не будет случайно изменено.

Читать полностью…

Senior Java Developer

unmodifiableSet

UnmodifiableSet используется для создания неизменяемого представления набора, это позволяет предоставить доступ к набору, не давая возможности изменить его.

Как видно из примера, при попытке изменить неизменяемый набор unmodifiableSet выбрасывается исключение UnsupportedOperationException. Это гарантирует, что исходный набор не будет случайно изменен.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что такое Nashorn?

Nashorn — это JavaScript движок на языке Java, который был введен в JDK 8.

Основные возможности:

— Позволяет выполнять JavaScript код из Java приложения. JavaScript код может взаимодействовать с java классами и объектами.

— Поддерживает ECMAScript 5.1 стандарт.

— JIT компиляция JavaScript кода в байт-код на лету, что обеспечивает высокую производительность.

— Потокобезопасность: один экземпляр Nashorn можно безопасно использовать из нескольких потоков.

— Интеграция с javax.script API для поддержки других скриптовых языков.

— Упрощает создание и встраивание скриптовых компонентов в Java приложениях.

Читать полностью…

Senior Java Developer

unmodifiableList

unmodifiableList используется для создания неизменяемого списка на основе другого списка.

Это позволяет вернуть неизменяемую обертку вокруг модифицируемого списка, чтобы предотвратить случайные изменения этого списка.

Созданный список нельзя изменить: нельзя добавлять/удалять элементы, изменять их, иначе будет выброшено исключение.

В примере на основе mutableList создан неизменяемый список. Попытка изменить его выбросит исключение, но изменения в mutableList отразятся в immutableList.

#это_база

Читать полностью…

Senior Java Developer

Стартануть в IT быстро и эффективно — подготовительный курс по Java-разработке.

Начинаем уже 7 ноября!

Даем: 62 урока с практикой в браузере, 3 онлайн вебинара и 1 сессию лайвкодинга с практикующим разработчиком.

Получаем: крепкие знания базы языка, умение понимать код и первую программу на Java, написанную вместе с наставником.

Всего 990 ₽ и ваше жгучее желание начать. Приходите с любым бэкграундом: нам не важны возраст, пол, образование и текущая профессия.

Запишитесь прямо сейчас!

Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:LjN8KCPGk

Читать полностью…

Senior Java Developer

👨‍💻 Начинаем неделю полезно, с подборки ресурсов для прокачки SQL

В этой подборке вас ждут: курсы, интерактивные уроки, задачи, тесты и одна онлайн-песочница, чтобы создавать, тестировать и отлаживать SQL-запросы.

👉 SQLZoo
Интерактивные уроки и задачи для изучения SQL. Начинаются с простых запросов, постепенно увеличивая сложность.

👉 Codecademy SQL
На этом курсе вы узнаете, как управлять большими наборами данных и их анализировать. Время прохождения курса ≈ 8 часов.

👉 SQLBolt
Уроки и задачи для начинающих и продвинутых пользователей SQL.

👉 SQLCourse
Уроки, задания и тесты для проверки знаний по SQL для новичков и опытных.

👉 Khan Academy SQL
Уроки и задачи для изучения SQL. Для закрепления пройденной теории, в конце модуля ждут проекты. Например, нужно разработать базу данных магазина.

👉 Mode Analytics SQL Tutoria
Курс SQL от Mode Analytics. Есть блоки для новичков и продвинутых.

👉 SQL Exercises
Сайт с задачами и упражнениями для изучения SQL. По результатам тестирования можно заказать сертификат «SQL Data Manipulation Language Specialist».

👉 SQL Fiddle
Онлайн-песочница SQL, позволяет создавать, тестировать и отлаживать SQL-запросы.

Тестил какой-то ресурс или проходил курс из этой подборки и хочешь поделится впечатлением? Или есть ресурс по SQL, который хочешь порекомендовать? Пиши в комментарии 👇

erid: LjN8KNTeF

#ресурсы #sql

Читать полностью…

Senior Java Developer

Реверс массива

Реверс массива в Java означает изменение порядка элементов массива на противоположный. То есть, элементы, которые изначально были в начале массива, становятся в конце, и наоборот.

Реверс массива может быть полезным во многих ситуациях программирования. Например, это может потребоваться для изменения порядка элементов перед их обработкой или выводом, или для выполнения действий, которые требуют доступа к элементам массива в обратном порядке.

#для_продвинутых

Читать полностью…

Senior Java Developer

Сеттеры

В Java сеттеры (setters) являются методами класса, которые используются для установки значений приватных переменных (полей) класса. Они обеспечивают механизм инкапсуляции данных, позволяя контролировать доступ к полям класса и обеспечивать безопасность данных.

#для_начинающих

Читать полностью…

Senior Java Developer

🤔 Хотите прокачать свой стартап, но не знаете, где искать надежную информацию и советы от профессионалов?

Подпишитесь на СберСтартап, примите участие в крутых активностях SberUnity и получите возможность попасть на мероприятия Сбера! 💚

Реклама. Публичное акционерное общество «Сбербанк России», ПАО Сбербанк ИНН 7707083893

Читать полностью…

Senior Java Developer

Мы устраиваем Yandex Backend Tour по городам России!

Наши разработчики хотят познакомиться со специалистами из разных городов страны. Мы приедем в Москву, Нижний Новгород, Екатеринбург, Новосибирск и Санкт-Петербург. Ребята расскажут, почему они любят свои сервисы, какими технологиями пользуются и что предлагают кандидатам. На встречах будут сотрудники из 14 разных сервисов Яндекса. После мы вместе послушаем стендап Севы Ловкачева, устроим нетворкинг, отдохнём и поболтаем о жизни.

Кроме этого, мы устроим онлайн-трансляцию встречи из Москвы — вы сможете подключиться и пообщаться с нашими разработчиками из любого города России.

Вот расписание встреч:

🔸 13 ноября онлайн-трансляция

🔸 13 ноября офлайн-встреча в Москве

🔸 14 ноября офлайн-встреча в Нижнем Новгороде

🔸 15 ноября офлайн-встреча в Екатеринбурге

🔸 16 ноября офлайн-встреча в Новосибирске

🔸 17 ноября офлайн-встреча в Санкт-Петербурге

А с 20 по 26 ноября мы проведём Week Offer Backend: предложим всего за одну неделю получить офер в одну из 14 участвующих команд. Приглашаем кандидатов с опытом разработки от трёх лет на одном из этих языков программирования: С++, С#, Python, Java, Go и Scala. Принимаем заявки до 19 ноября.

Узнать подробности и зарегистрироваться можно здесь.

Реклама. ООО "Яндекс". erid: 2VtzqvmR6Kp

Читать полностью…

Senior Java Developer

Метод weakCompareAndSwap()

Метод weakCompareAndSwap() используется для атомарного обновления полей объекта без блокировки.

Он позволяет сравнить значение поля с ожидаемым значением и установить новое значение, если они равны. Это полезно при реализации неблокирующих алгоритмов параллельного программирования.

В этом примере два потока пытаются атомарно изменить значение счетчика с 0 на 1 и 2 соответственно. Метод weakCompareAndSwap гарантирует, что только один поток сможет успешно выполнить изменение.

Читать полностью…

Senior Java Developer

Метод compareAndSwap()

Метод compareAndSwap() используется для атомарного обновления значения переменной.

Он позволяет изменить значение переменной только в том случае, если ее текущее значение совпадает с ожидаемым. Это помогает избежать состояния гонки при многопоточном доступе.

В примере мы объявляем AtomicInteger count и инициализируем его значением 0. Метод increment() сначала получает текущее значение в переменную currentValue, затем в цикле do-while вызывается compareAndSet, который проверяет равно ли текущее значение count значению currentValue, если да, то устанавливает новое значение currentValue + 1, если нет (значение изменилось другим потоком), то цикл повторяется.

Таким образом гарантируется атомарное инкрементирование переменной count.

Читать полностью…

Senior Java Developer

Освойте микросервисную архитектуру за 5 месяцев на курсе «Microservice Architecture» от OTUS

В процессе обучения вы:
✅ рассмотрите множество нетривиальных проблем проектирования backend-приложений и их дальнейшего сопровождения;
✅ изучите не только паттерны проектирования новых сервисов, но и подходы к работе с legacy-сервисами;
✅ научитесь решать проблемы с согласованностью изменений или с оркестрацией сервисов;
- как разработчик научитесь базовым навыкам работы с Kubernetes.

💻 Программа подойдёт архитекторам, разработчикам, системным аналитикам, администраторам и DevOps-инженерам.

В конце программы вы получите практическую помощь в трудоустройстве и карьерную консультацию от эксперта.

🌐 Оцените свой уровень знаний для обучения на курсе: https://otus.pw/V39c/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K74P8

Читать полностью…

Senior Java Developer

charBuffer

Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит классу String.

Этот метод возвращает объект CharBuffer, который представляет последовательность символов строки.
CharBuffer позволяет эффективно читать и манипулировать символами строки без создания копий.

В этом примере создается строка "Hello". Затем из этой строки получаем буфер символов методом charBuffer().
В цикле посимвольно читаем из буфера символы и выводим их на экран.

#это_база

Читать полностью…

Senior Java Developer

Метод insert()

Метод insert() используется для вставки элемента в список в заданную позицию. Он принадлежит интерфейсу List и его реализациям, таким как ArrayList.

Этот метод вставляет указанный элемент element по заданному индексу index и сдвигает все последующие элементы вправо.

*Индексы начинаются с 0.
*Если индекс меньше 0 или больше размера списка, будет выброшено исключение.

#это_база

Читать полностью…

Senior Java Developer

За что люблю шоу Яндекса «1х1» на YouTube — в нем сотрудники компании встречаются и обсуждают насущные вопросы, а в последнем выпуске еще и рассказали, как попасть к ним в команду.

Тех директора Никита Илясов (Еда) и Станислав Макеев (Лавка) в новом выпуске обсудили то, какой они видят разработку через пять лет и поговорили о своих факапах в работе.

Еще из интересного в этом выпуске — опытные разработчики дали советы джунам.

Подписывайтесь на канал, чтобы узнать больше о мире технологий и послушать опытных спецов.

Читать полностью…

Senior Java Developer

⚡️В 2023 году уже не найти работу с большим доходом, для обычных людей.

Всё потому что, необходимо разбираться в IT и искусственном интеллекте.

TECHNOHYPE — это проект, который ежедневно публикует информацию о новых разработках и открытиях. А самое главное, учит применять их в жизни.

❗️Также для наших подписчиков полностью бесплатный ChatGPT бот, который:

→ Даст ответ на любой вопрос
→ Сделает за вас 90 % работы
→ Переведёт текст, как настоящий человек


Если хотите быть в тренде, то этот канал для вас: @techno_hype_official

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Расскажите о параллельной обработке в Java 8.

Основные возможности:

Потоки (threads): позволяют запускать код параллельно в нескольких потоках.

Fork/Join framework: фреймворк для разбиения задач на подзадачи и объединения результатов. Помогает эффективно использовать многоядерные процессоры.

Parallel Streams: позволяют применять операции к стримам данных параллельно с использованием Fork/Join. Ускоряет обработку больших объемов данных.

Concurrent collections: потокобезопасные коллекции для многопоточных приложений, например ConcurrentHashMap.

Executors: исполнители помогают управлять пулами потоков и очередями задач.

Atomics: атомарные переменные для синхронизации доступа без блокировок.

Locks: блокировки для синхронизации доступа к ресурсам из разных потоков.

Читать полностью…

Senior Java Developer

Ключевое слово transient

Ключевое слово transient используется для того, чтобы пометить поля класса, значения которых не должны сериализовываться.

При сериализации объекта в поток все поля объекта записываются в этот поток. Но если поле помечено как transient, то его значение пропускается и не сериализуется.

Это нужно в случаях, когда некоторые данные объекта не имеет смысла сохранять при сериализации. Например, кэшированные или вычисляемые значения, которые могут быть повторно вычислены после десериализации.

В  этом примере поле cachedHashCode помечено как transient, поэтому при десериализации его значение будет равно стандартному значению для типа int, т.е. 0, вместо кэшированного значения хеш-кода.

#это_база

Читать полностью…
Subscribe to a channel