Сори за спам. Сегодня это последнее сообщение.
Немного контекста - на видеозаписях выше я сделал ревью решений по задачке, которую опубликовал еще раньше.
Ребята, мне важно получить от вас обратную связь за свои труды. Дайте знать реакциями на этом сообщении интересно ли вам было. Ну и пишите в коментах свои вопросы, пожелания, любую другую обратную связь)
Также я буду крайне признателен, если вы порекомендуете данный канал своим друзьям 😊
Немного контекста - на видеозаписях выше я сделал ревью решений по задачке, которую опубликовал еще раньше.
Ребята, мне важно получить от вас обратную связь за свои труды. Дайте знать реакциями на этом сообщении интересно ли вам было. Ну и пишите в коментах свои вопросы, пожелания, любую другую обратную связь)
Также я буду крайне признателен, если вы порекомендуете данный канал своим друзьям 😊
Telegram
Java Mentor
Итак 4 человека откликнулись на зов кодинга!
Возможно подтянутся еще желающие, а мы начнем.
Для мотивации:
До тех пор, пока хоть кто-то будет выполнять требования с двумя звездочками (⚛️⚛️), я буду модернизировать задачку таким образом, чтобы по итогу…
Возможно подтянутся еще желающие, а мы начнем.
Для мотивации:
До тех пор, пока хоть кто-то будет выполнять требования с двумя звездочками (⚛️⚛️), я буду модернизировать задачку таким образом, чтобы по итогу…
❤14🔥7
Хочу поговорить о try-with-resources. Это важная тема, как показало ревью.
Если не закрывать ресурсы после работы с ними - могут возникнуть утечки памяти.
try-with-resources - удобная конструкция для работы с ресурсами, гарантирующая их корректное закрытие.
Обратите внимание на конструкцию
Помимо работы с файлами,
Это позволяет избежать ошибок и гарантирует, что ресурсы будут закрыты даже в случае исключения.
try-with-resources - мощный инструмент, улучшающий безопасность и читаемость кода. Используйте его, чтобы сделать код эффективнее и надежнее.
Удачи в кодинге!
Если не закрывать ресурсы после работы с ними - могут возникнуть утечки памяти.
try-with-resources - удобная конструкция для работы с ресурсами, гарантирующая их корректное закрытие.
Обратите внимание на конструкцию
try (..) { .. }. Внутри круглых скобок мы создаем объекты, которые реализуют интерфейс AutoCloseable. В нашем случае это BufferedReader, который оборачивает FileReader. Важно отметить, что все эти объекты будут автоматически закрыты по окончании блока try.Помимо работы с файлами,
try-with-resources также применяется для работы с другими ресурсами (сетевые соединения, БД). Главное убедиться, что используемые объекты реализуют интерфейс AutoCloseable.Это позволяет избежать ошибок и гарантирует, что ресурсы будут закрыты даже в случае исключения.
try-with-resources - мощный инструмент, улучшающий безопасность и читаемость кода. Используйте его, чтобы сделать код эффективнее и надежнее.
Удачи в кодинге!
👍16❤4
Привет, друзья!
Уже традиционно - планы на неделю.
🔜 Будет больше теоретических постов. Постараюсь раз в день радовать вас тем, что может пригодиться на собеседованиях, так что советую не пропускать!
🔜 У StringCrudDatabase проекта будет продолжение:
1️⃣ Ждите видос, где я запилю задачку в режиме лайв-кодинга. Тем из вас кто сделал задачку будет крайне полезно. Также оставлю ссылку на гит репозиторий, чтобы вы могли скачать код и все потыкать самостоятельно
2️⃣Появятся новые требования. Задача станет сложнее и интереснее. После этого я дам вам недельку на то, чтобы вы все закодили. Затем, также в режиме лайв-кодинга, я выложу свое решение, чтобы вы могли сравнить свое решение с моим и отрефакторить при необходимости свой код.
Мы будем повторять итерацию несколько раз и из нашего консольного приложения получится полноценный пет-проект на боевом стеке!
Я настоятельно рекомендую всем, кто еще не брался за выполнение задачи взяться за нее. Я считаю что это очень крутая возможность:
✅Прокачать навык решения задачи
✅Прокачать навык организации и структурирования кода
✅Запилить пет-проект с поддержкой Senior разработчика
Я также буду делать ревью кода. Бесплатно - только первому выложившему решение. Остальным либо за донат, либо за репосты в вк или инсте.
Итого на этой неделе нас ждут:
▶️посты по теории (7шт)
▶️ видос от меня по решению задачи (1шт)
▶️ новые требования для задачи (1шт)
Уже традиционно - планы на неделю.
🔜 Будет больше теоретических постов. Постараюсь раз в день радовать вас тем, что может пригодиться на собеседованиях, так что советую не пропускать!
🔜 У StringCrudDatabase проекта будет продолжение:
1️⃣ Ждите видос, где я запилю задачку в режиме лайв-кодинга. Тем из вас кто сделал задачку будет крайне полезно. Также оставлю ссылку на гит репозиторий, чтобы вы могли скачать код и все потыкать самостоятельно
2️⃣Появятся новые требования. Задача станет сложнее и интереснее. После этого я дам вам недельку на то, чтобы вы все закодили. Затем, также в режиме лайв-кодинга, я выложу свое решение, чтобы вы могли сравнить свое решение с моим и отрефакторить при необходимости свой код.
Мы будем повторять итерацию несколько раз и из нашего консольного приложения получится полноценный пет-проект на боевом стеке!
Я настоятельно рекомендую всем, кто еще не брался за выполнение задачи взяться за нее. Я считаю что это очень крутая возможность:
✅Прокачать навык решения задачи
✅Прокачать навык организации и структурирования кода
✅Запилить пет-проект с поддержкой Senior разработчика
Я также буду делать ревью кода. Бесплатно - только первому выложившему решение. Остальным либо за донат, либо за репосты в вк или инсте.
Итого на этой неделе нас ждут:
▶️посты по теории (7шт)
▶️ видос от меня по решению задачи (1шт)
▶️ новые требования для задачи (1шт)
🔥10❤3
А начнем мы с immutable objects.
На собеседованиях часто спрашивают:
❓ Что такое неизменяемый объект?
❓ Зачем нужны неизменяемые объекты?
❓ Как создать неизменяемый объект?
Неизменяемый объект - это объект, состояние которого не может быть изменено после создания. Когда объект является неизменяемым, его поля остаются постоянными и не могут быть изменены в течение его жизни.
Преимущества immutable objects:
💠 Потокобезопасность: Неизменяемые объекты безопасны для использования в многопоточной среде. Поскольку их состояние не может изменяться, нет необходимости в синхронизации доступа к ним.
💠 Безопасность: Поскольку неизменяемые объекты не могут быть изменены, они не подвержены ошибкам, связанным с изменением своего состояния случайным образом. Это особенно полезно, когда объект передается другим частям программы или потокам, и вы хотите быть уверены, что его состояние останется неизменным.
💠 Производительность: Поскольку неизменяемые объекты не могут быть изменены, их можно кэшировать и использовать повторно. Это может привести к улучшению производительности, особенно если создание новых объектов является затратной операцией.
💠 Еще одним важным применением неизменяемых объектов является использование их в качестве ключей для HashMap. В HashMap ключи хранятся в виде хэш-таблицы, и для быстрого доступа к элементам требуется эффективное вычисление хэш-кода. Если ключ изменяется, то его хэш-код также может измениться, что может привести к непредсказуемому поведению HashMap.
Использование неизменяемых объектов в качестве ключей гарантирует, что хэш-код ключа остается неизменным. Это обеспечивает правильное функционирование HashMap и предотвращает потерю элементов или неправильную работу при поиске элементов по ключу.
Создание immutable object:
▪️ Объявить все поля как private final:
▪️ Не предоставлять методы для изменения полей (сеттеры). Вместо этого, инициализировать значения полей через конструктор класса:
▪️Не возвращать изменяемые объекты, такие как коллекции, массивы или другие объекты. Вместо этого, возвращать их защищенные копии:
На собеседованиях часто спрашивают:
❓ Что такое неизменяемый объект?
❓ Зачем нужны неизменяемые объекты?
❓ Как создать неизменяемый объект?
Неизменяемый объект - это объект, состояние которого не может быть изменено после создания. Когда объект является неизменяемым, его поля остаются постоянными и не могут быть изменены в течение его жизни.
Преимущества immutable objects:
💠 Потокобезопасность: Неизменяемые объекты безопасны для использования в многопоточной среде. Поскольку их состояние не может изменяться, нет необходимости в синхронизации доступа к ним.
💠 Безопасность: Поскольку неизменяемые объекты не могут быть изменены, они не подвержены ошибкам, связанным с изменением своего состояния случайным образом. Это особенно полезно, когда объект передается другим частям программы или потокам, и вы хотите быть уверены, что его состояние останется неизменным.
💠 Производительность: Поскольку неизменяемые объекты не могут быть изменены, их можно кэшировать и использовать повторно. Это может привести к улучшению производительности, особенно если создание новых объектов является затратной операцией.
💠 Еще одним важным применением неизменяемых объектов является использование их в качестве ключей для HashMap. В HashMap ключи хранятся в виде хэш-таблицы, и для быстрого доступа к элементам требуется эффективное вычисление хэш-кода. Если ключ изменяется, то его хэш-код также может измениться, что может привести к непредсказуемому поведению HashMap.
Использование неизменяемых объектов в качестве ключей гарантирует, что хэш-код ключа остается неизменным. Это обеспечивает правильное функционирование HashMap и предотвращает потерю элементов или неправильную работу при поиске элементов по ключу.
Создание immutable object:
▪️ Объявить все поля как private final:
private final String name;
private final int age;▪️ Не предоставлять методы для изменения полей (сеттеры). Вместо этого, инициализировать значения полей через конструктор класса:
public ImmutablePerson(String name, int age) {
this.name = name;
this.age = age;
}▪️Не возвращать изменяемые объекты, такие как коллекции, массивы или другие объекты. Вместо этого, возвращать их защищенные копии:
public List<String> getNames() {
return Collections.unmodifiableList(names);
}👍8🔥4
Привет, друзья!
Вопрос "Какие методы есть у класса Object" довольно часто встречается на собеседованиях.
Давайте взглянем как можно на него ответить:
Это лишь некоторые методы Object. Они предоставляют базовую функциональность, настраиваемую по вашим потребностям.
И если вас спросят, есть ли еще какие-либо методы у Object, можно будет рассказать о методах
Вопрос "Какие методы есть у класса Object" довольно часто встречается на собеседованиях.
Давайте взглянем как можно на него ответить:
equals(Object obj): сравнивает объекты на равенство. Можно переопределить для сравнения по значениюhashCode(): возвращает уникальный идентификатор объекта. Используется с коллекциямиtoString(): возвращает строковое представление объекта. Переопределите для более информативного выводаgetClass(): возвращает объект Class, представляющий класс объектаclone(): создает и возвращает копию объекта. Можно переопределить для глубокого копированияfinalize(): вызывается перед удалением объекта из памяти. Но нет никаких гарантий, что данный метод будет вызван, поэтому использовать данный метод не нужноЭто лишь некоторые методы Object. Они предоставляют базовую функциональность, настраиваемую по вашим потребностям.
И если вас спросят, есть ли еще какие-либо методы у Object, можно будет рассказать о методах
notify и wait, которые мы рассмотрим в след посте❤11🔥6👍1
Методы класса Object, продолжение
Эти методы связаны с концепцией мониторов и синхронизации потоков выполнения в Java. Они используются для координации работы потоков и обеспечения безопасного доступа к ресурсам в многопоточной среде.
Имейте в виду, что методы
Учтите, что в большинстве случаев вам не понадобится использовать эти методы напрямую, так как существуют более современные и удобные механизмы для работы с многопоточностью в Java, такие как классы из пакета java.util.concurrent.
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.
👍11❤3
Делаю для вас видос. Делаю столько же ошибок сколько и новичок в коде)
Если плохой код - это говнокод, то неудачные дубли это…
Продолжите в комментах)
Если плохой код - это говнокод, то неудачные дубли это…
Продолжите в комментах)
❤12😁3👍1
Так, ребята, не успеваю запилить видос ко времени, к которому хотелось бы, а оставлять вас без дела тоже не хочу.
Поэтому вот вам задание на следующий этап.
Изучите формат JSON
Вам необходимо научиться парсить JSON строки. Для этого:
💠 Подтяните к себе в проект библиотеку jackson. В pom.xml в блоке dependencies укажите такую зависимость (скрин того как надо укажу в комментах)
💠 Обновите зависимости проекта. Для этого в IDEA клацаете ПКМ внутри pom.xml -> maven -> reload project
💠 Для сериализации объектов в json строки и дессериализации json строк в объекты вам нужно использовать класс
💠 Просто введите в коде
💠 Почитайте о работе с данным классом. В основном, вам потребуется всего два метода:
И когда вы все это сделаете, вы будете готовы к выполнению самого задания на следующий этап)
А оно вот такое:
Заведите класс
Теперь вместо строк, вы должны сохранять объекты класса
API останется тем же. Только теперь вместо простой строки, необходимо вводить конкретного person-a в json формате. Например так:
Ставь лайк, если зачесались руки 🤩
Поэтому вот вам задание на следующий этап.
Изучите формат 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
И сделать мне ревью кода. Вопросы и замечания приветствуются. Пояснения к коду смотрите в видосике. Надеюсь, вы найдете для себя много чего-полезного.
А я пока подумаю, как нам дальше двигаться вперед 😎
Надо объяснить куда я пропал.
Мне хотелось сделать большой и классный видос на youtube про свое решение нашей String CRUD задачки. Но увы, я уперся и дальше что-то никак не идет. Отнимает много внутренних ресурсов, а результата ноль. И к тому же, ничего другого постить не могу, так как "не закончил ведь видос снимать".
Поэтому я решил отложить эту идею до лучших времен и двигаться дальше. Большой и классный видос я вам не покажу, но маленький, ламповый видосик, записанный на скрипучий микрофон с радостью скину)
Вы можете скачать мое решение отсюда: https://github.com/yourjm/project1/tree/string_crud
И сделать мне ревью кода. Вопросы и замечания приветствуются. Пояснения к коду смотрите в видосике. Надеюсь, вы найдете для себя много чего-полезного.
А я пока подумаю, как нам дальше двигаться вперед 😎
👍13❤1
📢 Привет, друзья! В рамках нашего 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! 🚀💻
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