Java Mentor – Telegram
Java Mentor
294 subscribers
173 photos
48 videos
1 file
79 links
Download Telegram
Методы класса Object, продолжение

notify(): метод используется для возобновления выполнения потока, ожидающего монитор объекта с помощью метода wait(). Обычно используется в контексте многопоточности.

notifyAll(): аналогично методу notify(), но возобновляет выполнение всех потоков, ожидающих монитор объекта.

wait(): приостанавливает выполнение потока до тех пор, пока другой поток не вызовет метод notify() или notifyAll() на том же объекте.

wait(long timeout): аналогично методу wait(), но добавляет временное ограничение на ожидание, указанное в миллисекундах.

wait(long timeout, int nanos): аналогично методу wait(long timeout), но позволяет указать временное ограничение с точностью до наносекунд.

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

Имейте в виду, что методы notify(), notifyAll() и wait() вызываются только внутри синхронизированного блока кода или метода, который синхронизирован с использованием ключевого слова synchronized.

Учтите, что в большинстве случаев вам не понадобится использовать эти методы напрямую, так как существуют более современные и удобные механизмы для работы с многопоточностью в Java, такие как классы из пакета java.util.concurrent.
👍113
This media is not supported in your browser
VIEW IN TELEGRAM
👍13👏2
Делаю для вас видос. Делаю столько же ошибок сколько и новичок в коде)

Если плохой код - это говнокод, то неудачные дубли это…

Продолжите в комментах)
12😁3👍1
Так, ребята, не успеваю запилить видос ко времени, к которому хотелось бы, а оставлять вас без дела тоже не хочу.

Поэтому вот вам задание на следующий этап.

Изучите формат JSON

Вам необходимо научиться парсить JSON строки. Для этого:
💠 Подтяните к себе в проект библиотеку jackson. В pom.xml в блоке dependencies укажите такую зависимость (скрин того как надо укажу в комментах)

💠 Обновите зависимости проекта. Для этого в IDEA клацаете ПКМ внутри pom.xml -> maven -> reload project

💠 Для сериализации объектов в json строки и дессериализации json строк в объекты вам нужно использовать класс ObjectMapper из библиотеки jackson, которую вы подтяните шагом ранее.

💠 Просто введите в коде ObjectMapper, и если вы все сделали правильно с зависимостями, IDEA предложит импортировать данный класс.

💠 Почитайте о работе с данным классом. В основном, вам потребуется всего два метода: readValue и writeValueAsString. В комментах выложу примеры кода по работе с данным классом.

И когда вы все это сделаете, вы будете готовы к выполнению самого задания на следующий этап)

А оно вот такое:

Заведите класс Person с полями:
name - String,
age - Integer


Теперь вместо строк, вы должны сохранять объекты класса Person.

API останется тем же. Только теперь вместо простой строки, необходимо вводить конкретного person-a в json формате. Например так: { "name": "bob", "age": 25 }

Ставь лайк, если зачесались руки 🤩
17😍2
Media is too big
VIEW IN TELEGRAM
Привет, друзья!

Надо объяснить куда я пропал.

Мне хотелось сделать большой и классный видос на youtube про свое решение нашей String CRUD задачки. Но увы, я уперся и дальше что-то никак не идет. Отнимает много внутренних ресурсов, а результата ноль. И к тому же, ничего другого постить не могу, так как "не закончил ведь видос снимать".

Поэтому я решил отложить эту идею до лучших времен и двигаться дальше. Большой и классный видос я вам не покажу, но маленький, ламповый видосик, записанный на скрипучий микрофон с радостью скину)

Вы можете скачать мое решение отсюда: https://github.com/yourjm/project1/tree/string_crud

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

А я пока подумаю, как нам дальше двигаться вперед 😎
👍131
📢 Привет, друзья! В рамках нашего Sting CRUD проекта вам пришлось много парсить строки. Сегодня я предлагаю вам 10 сложных упражнений, которые помогут вам совершенствовать навык парсинга строк. Эти задания потребуют от вас применения различных методов работы со строками в Java и помогут вам стать опытными разработчиками. Готовы принять вызов? Давайте начнем!

1️⃣ Упражнение 1: Парсинг даты
Напишите метод, который принимает строку, содержащую дату в формате "dd.MM.yyyy", и возвращает объект типа LocalDate, представляющий эту дату.

2️⃣ Упражнение 2: Разбор CSV
Напишите метод, который принимает строку, содержащую данные в формате CSV (Comma-Separated Values, запятая в качестве разделителя), и возвращает массив массивов строк, представляющих значения каждой строки в CSV.

3️⃣ Упражнение 3: Поиск и замена
Напишите метод, который принимает строку и два шаблона: начальный и конечный. Метод должен найти все вхождения начального шаблона в строку и заменить их на конечный шаблон.

4️⃣ Упражнение 4: Извлечение чисел
Напишите метод, который принимает строку и извлекает из нее все числа, возвращая их в виде массива целых чисел.

5️⃣ Упражнение 5: Парсинг JSON
Напишите метод, который принимает строку, содержащую данные в формате JSON, и возвращает объект, представляющий эти данные.

6️⃣ Упражнение 6: Обратный порядок слов, игнорируя знаки препинания
Напишите метод, который меняет порядок слов в строке на обратный, игнорируя знаки препинания, и возвращает новую строку.

7️⃣ Упражнение 7: Проверка сбалансированности скобок
Напишите метод, который принимает строку, содержащую скобки (круглые, квадратные и фигурные) и проверяет, является ли она сбалансированной, то есть каждой открывающей скобке соответствует закрывающая.

8️⃣ Упражнение 8: Удаление HTML-тегов
Напишите метод, который удаляет все HTML-теги из строки и возвращает новую строку без тегов.

9️⃣ Упражнение 9: Подсчет слов с учетом регистра
Напишите метод, который подсчитывает количество вхождений каждого слова в строке, учитывая регистр, и возвращает словарь, где ключами являются слова, а значениями - их количество.

🔟 Упражнение 10: Разбор URL
Напишите метод, который принимает строку, содержащую URL, и разбирает ее на составляющие (протокол, хост, путь и т.д.), возвращая объект, представляющий эти компоненты.

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

Завтра я выложу решения для каждого упражнения, и вы сможете сверить свои результаты с моими.

Удачи, и продолжайте развиваться в программировании на Java! 🚀💻
👍13
Media is too big
VIEW IN TELEGRAM
Теперь скину вам свое решение по работе с объектом класса Person вместо строки.

Посмотреть изменения можно сздесь:
https://github.com/yourjm/project1/pull/1/files

Скачать решение можно отсюда:
https://github.com/yourjm/project1/tree/person_json

Ссылка на требования к данному этапу:
https://news.1rj.ru/str/your_java_mentor/67
Media is too big
VIEW IN TELEGRAM
Как и обещал, делаю ревью человеку, который первым выложил решение к задаче.
@MikhailSumarokov это твое)

Напоминаю, что теперь бесплатно ревью буду делать только первому решившему.

Для всех остальных, ревью в видео-формате будет доступно за:
небольшой донат
либо
рекламку моего канал и (небольшой донат) / 2

Если вы хотите получить видео-разбор своего решения, напишите мне в лс (@zor_07), либо под этим постом чирканите "хочу ревью"
👍10
Привет, друзья!

Вчера я выложил вам задачки на парсинг строк.
В комментах к этому посту выложу решения к каждой задачке.

Сохраняйте, чтобы не потерять!

Обратите внимание, что эти примеры решений являются лишь одним из множества возможных подходов. Ваше решение может отличаться в зависимости от требований и предпочтений.

Успехов в выполнении этих упражнений, и продолжайте развиваться в программировании на Java! 🚀💻
🔥81
Привет, друзья!

Хочу дать вам следующее задание по нашему CRUD приложению.

Работа с HashMap - это конечно круто, но работа с реальной БД - еще круче 😎

Поэтому следующее задание - развернуть базу данных и создать в ней таблицу Person с полями id, age и name.

Но не просто развернуть, а сделать это в докер-контейнере 🐳

Соберем все воедино.

1. Напишите docker-compose файл, который развернет вам Postgres контейнер
2. Напишите init.sql файл, внутри которого напишите скрипт создания таблицы Person
3. Попробуйте настроить docker-compose таким образом, чтобы он выполнил скрипт init.sql

Завтра-послезавтра выложу свое решение 🚀
🔥10
Отвечу отдельным постом на этот вопрос.

1️⃣ Первый шаг по выполнению задания по развертыванию бд в докере - установка самого докера

Для этого, в зависимости от того, какая у вас ОС надо гуглить:
Docker install windows/ubuntu/mac/итп

Для того, чтобы удостовериться, что вы правильно установили докер необходимо выполнить команду:
docker run hello-world

Данная команда скачает вам образ докер контейнера и развернет его. Если все ок, вы должны будете увидеть сообщение, которое начинается со слов:
Hello from Docker!

2️⃣ Затем, вам необходимо установить docker-compose. Гуглить по аналогии с поисковым запросом по установке докера. Только вместо docker укажите docker-compose

В интернете много статей на эту тему.

Как только вы выполните эти пункты можете задавать следующий вопрос)

✳️ Я разделяю философию - изучай делая. В работе программиста всегда нужно будет изучать новые технологии, фреймворки и тулы.
Позже я все равно расскажу о докере, а пока попробуйте сделать самостоятельно )
🔥61👍1
Продолжаем плавно знакомиться с Docker 🐳

💡 Представьте себе виртуальную машину, на которой будет установлен linux, в этот linux установится Java, maven и прочие технологии, требуемые для работы Java приложения. И внутри этой ВМ вы запустите свое приложение.

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

Докер контейнер - это запускаемая и изолированная среда, в которой работает приложение и все его зависимости. Он создается на основе докер образа.

Докер образ - это шаблон или инструкция для создания докер контейнера. Например, мы можем "сказать" докеру - создай мне образ, на основе ОС Ubuntu, установи на него Java 17. И на основе данного образа вы сможете запускать множество контейнеров.

А Docker - это ПО, которое помогает упаковать и запустить приложения в изолированных средах, т.е. контейнерах.

Сегодня была упрощенная теория, практика будет завтра)
👍62
🏁 Spring CRUD проект, карта активности

Цель - создать простой пет-проект на Spring-Boot

1️⃣ CRUD операции на строке используя HashMap
Задание
Мое решение

2️⃣ Заменяем строку на Person, используем JSON
Задание
Мое решение

3️⃣ Развертываем БД в докер-образе
Задание
Мое решение

4️⃣ Замена HashMap на реальную базу данных с использованием JDBC
Задание
Мое решение

PS Данная карта будет пополняться по мере прохождения
11
Java Mentor pinned a photo
This media is not supported in your browser
VIEW IN TELEGRAM
4
Media is too big
VIEW IN TELEGRAM
Итак, друзья!

Вот что сделано: https://github.com/yourjm/project1/compare/person_json...docker_compose

Для тех, кто желает ворваться в наш маленький квест по созданию пет-проекта на Spring, можно скачать проект вот отсюда посмотреть что было уже сделано, и продолжать работу прям со следующего задания, модифицируя написанный мною код

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

Те из вас, кто уже начал кодить со мной - вы большие молодцы, продолжайте в том же духе 😎

Для вас специальное задания - повторить мои действия из видео, и написать в комментах, что базу развернуть удалось. Будут вопросы - пишите также в комменты

ЗЫ Что вообще происходит
🔥111
Приветствую всех любителей нажимать на кнопочки и получать за это деньги!

Решил запилить навигационный пост, чтобы всем было удобнее ориентироваться тут 🔍

Для тех, кто у нас совсем недавно, расскажу кратко про себя и наш ламповый чатик.

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

В этом канале я делюсь различными материалами по Java, а также агитирую людей писать код 💻

Навигация по каналу:

Обо мне
💠 Меня зовут Анзор...
💠 Это видео я снял 4 месяца назад...
💠 Картиночки...

Наставничество
👨‍🏫 О моем наставничестве

Отзывы учеников
👨‍🎓 Отзыв от Дани
👨‍🎓 Отзыв от Адама

Проекты нашего канала
🧑‍💻 Spring CRUD
8👍4
Java Mentor pinned a photo
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Итак, мой первый пет-проект, игра морской бой

Я начал писать его еще в школе, когда занимался паскалем у репетитора. Но не смог победить проблему, которую озвучил в кружопеле выше 🤯

А спустя годы и два отчисления из универа, я вдруг почувствовал, что созрел 🦾

На видео выше демонстрация того, как компьютер "стреляет" по оппоненту. Здесь нет передачи хода человеку, стреляет только компьютер. Он стреляет рандомно, но попав в какой-то кораблик, добивает его системно.

Я был счастлив, когда все заработало 🥹

Я написал данный проект на SWING. Это библиотека для создания графических интерфейсов на Java. Почти никто не пишет GUI на Java сейчас (как собственно этого никто не делал и тогда).

Но у меня не было наставника, который сказал бы мне учить Spring, так что я потратил уйму времени на изучение невостребованного стека. Я об этом, конечно, не жалею, но сейчас стараюсь уберегать своих учеников от подобных ошибок 👨‍🎓

PS Видео сделано 7 лет назад, так что отнеситесь с пониманием к его качеству и выбору музыки 😅
11🔥1🤩1