Java for Beginner
673 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Как вам изменения на канале?
Снижение количества постов, изменение тем, новые темы?
Anonymous Poll
88%
Отлично! Лучше чем было! 👍
12%
Да не заметно разницы... ☺️
0%
Все стало только хуже! Админ возвращай взад!😝
Есть мысль собраться завтра в 16:00 по МСК и разобрать написание идеального контроллера 🧑‍💻

Вы придете?
Anonymous Poll
48%
Да, тема интересная, я буду! 🙂
29%
Я бы хотел, но занят ☹️
0%
Че там разбирать то? Нафига? 😠
23%
Что это за группа? Где я? 😱
Всем привет! ✌️

Приглашаю всех желающих сегодня собраться в Яндекс.Телемост в 16:00 по МСК!

В этот раз, дошла очередь рассказать о том, как написать контроллер в экосистеме Spring.

Рассмотрим:
- Зачем нам вообще нужны контроллеры
- Какие существуют основные принципы REST при написании контроллеров
- Основные аннотации Spring для написания контроллеров и их настройку
- Все это посмотрим на примере кода


Приходите, будет интересно 🧑‍💻

Как всегда жду всех! 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
Как заставить себя учиться 🤓

Особенно когда тебе за 30...

Казалось бы - что может быть проще? Бери источник информации и изучай что-то новое. Но оказалось, что не все так просто...


🤬С чем придется столкнуться:

Постоянные дела и банальная усталость с основной работы (да и лень немножко, конечно 🏝).

Это хорошо, когда ты молод и у тебя нет обязанностей перед семьей и окружающими. Ты волен посвятить обучению все свое свободное время...
А нам, 30+ -летним "вкатунам", которые вынуждены ежедневно бороться с окружающими проблемами, кажется сложным найти время, чтобы сесть и посмотреть (и воспринять!) видео с какой-то новой концепцией.

А постоянное обучение - вообще какая-то дикость.☠️

Кружащие заблуждения 🤔

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

Кроме того, обычное заблуждение моего круга - что после окончания школы/института, простой человек (а не какой-то там гений или вундеркинд) теряет способности к обучению, и с трудом воспринимает новую, в том числе и сложную информацию. (Не буду скрывать, и я относился к тем людям, кто распространял это заблуждение... ☺️)

Ощущение своей непроходимой тупости
🤪

Не покидает и спустя несколько лет. 🤣

А если серьезно, то чем больше ты погружаешься в программирование, тем глубже кажется кроличья нора. Новые фреймворки, библиотеки, технологии, нюансы, надстройки и костыли, кажутся дремучим лесом, в котором так легко потеряться.
А периодическое стуканье головы об что-то твердое и последующее (возможно не связанное с этим процессом), озарение, со словами "Ах, б🤬, так вот оно что!", преследует меня до сих пор (ведь обучение тут не заканчивается никогда!🤫).


Ниже дам несколько советов, которые помогли мне (и может помогут и Вам 😎)

1. Смог он, смогу и я.
Возможно Вы слышали выражение - "не боги горшки обжигают". Верьте в свои силы, даже если кажется, что это полный идиотизм.

Ведь, если смотря на человека который рассказывает об устройстве сложной системы, Вы задаетесь вопросом "Как он смог это понять?", задайте вопрос и себе "А чем я хуже?".

Бороться и не сдаваться несмотря на все возникающие препятствия сложно. И в обучении это имеет сокровенный смысл. Понимание того, что успешный программист с зп 500к+, не родился с клавиатурой во рту, а так же как и Вы возможно учился по тому же каналу в ютубе, только несколько раньше, максимально мотивирует достичь его успехов.

2. Выбрать время для обучения (и желательно много).
Скажем так, я не смог обучаться параллельно с работой. Ну никак. Поэтому воспользовавшись накоплениями, и освободившимся после увольнения временем, я все силы бросил на учебу.

И не значит, что это ваш рецепт, ведь мы все разные. Возможно вам комфортно вялотекущее обучение и устройство в IT у вас в далекой перспективе. 🙃

3. Структурируйте процесс обучения.
Сейчас в интернете гигантское количество обучающего материала. В том числе и бесплатного (да-да, это я про наш канал☺️) .
Выберите какой Вам нравится и начинайте учить от простого к сложному. Вычлените в приоритет те части, которые являются основой выбранного Вами рабочего стека и бросьте все силы туда. Иначе можно увязнуть в объеме информации или начать учить то, что Вам никогда не пригодится.

4. Вознаграждайте свое подсознание за успехи
Звучит глупо и странно, знаю. Но мотивировать себя станет в разы легче. Небольшой бонус: чашка любимого кофе, эпизод сериала или пятнадцать минут в соцсетях. Мозг любит вознаграждения, и это ещё один повод не бросить начатое.

5. Чёткая цель и никаких «зачем» после начала.
Наверно моя основная мотивация в ежедневной учебе. А может я просто упрямый 🐏 😄.
Поставьте себе глобально - максимально - реально достижимую цель. Продумайте шаги и ступени до нее, разбив на мелкие подцели и достигая их, начинайте путь к следующей. И не успеете оглянуться как половина пути будет пройдена. А может и весь)))

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем голосовать за предложенные ранее темы к рассмотрению!

https://t.me/Java_for_beginner_dev/2341

Голосуем, не стесняемся, все анонимно 😜
Please open Telegram to view this post
VIEW IN TELEGRAM
Предложение тем для разбора и публикации! 📖

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

Голосование будет проводиться всю неделю, а статья или видео - выходить по выходным.

Примерные правила:
🟢 темы, не выше уровня middle, чтоб был интерес общим.
🟢Тема должна быть отдельным теоретически-практическим вопросом. Готовый проект - это не тема!

Жду Ваших предложений! 👏
Please open Telegram to view this post
VIEW IN TELEGRAM
Встреча создана!

https://telemost.yandex.ru/j/99262049819362

Присоединяйтесь! 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Controller's in Spring. Разбираем создание и устройство.

Встреча от 18.05.2025

Запись встречи -
YOUTUBE
RUTUBE

На сегодняшней встрече мы разобрали важную тему в Spring Java - Controller.

Что мы успели:
➡️ Зачем нам вообще нужны контроллеры.
➡️ Какие существуют основные принципы REST при написании контроллеров.
➡️ Основные аннотации Spring для написания контроллеров и их настройку.
➡️ Все это посмотрели на примере кода.

Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!

Спасибо всем кто пришел, респект 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с коллекциями, вложенными объектами и generic-типами в Gson

1. Работа с коллекциями

Сериализация/десериализация списков (List<T>)
Пример с List<String>:

Gson gson = new Gson();

// Сериализация списка в JSON
List<String> languages = Arrays.asList("Java", "Kotlin", "Python");
String json = gson.toJson(languages);
System.out.println(json); // ["Java","Kotlin","Python"]

// Десериализация JSON обратно в List
List<String> parsedList = gson.fromJson(json, List.class);
System.out.println(parsedList.get(0)); // Java


Проблема: При использовании List.class тип элементов стирается. Для generic-типов нужен TypeToken.

Использование TypeToken для generic-типов
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

// Создаем Type для List<String>
Type listType = new TypeToken<List<String>>() {}.getType();

// Десериализация с сохранением типа
String json = "[\"Apple\", \"Banana\"]";
List<String> fruits = gson.fromJson(json, listType);
System.out.println(fruits.get(0).toUpperCase()); // APPLE (без TypeToken был бы Object!)


Пример с массивами

// Сериализация массива
int[] numbers = {1, 2, 3};
String numbersJson = gson.toJson(numbers);
System.out.println(numbersJson); // [1,2,3]

// Десериализация обратно в массив
int[] parsedNumbers = gson.fromJson(numbersJson, int[].class);
System.out.println(parsedNumbers[0]); // 1


Работа с Map<String, Object>

// Сериализация Map
Map<String, Object> data = new HashMap<>();
data.put("name", "John");
data.put("age", 30);
data.put("skills", Arrays.asList("Java", "SQL"));

String mapJson = gson.toJson(data);
System.out.println(mapJson);
// {"skills":["Java","SQL"],"name":"John","age":30}

// Десериализация Map
Type mapType = new TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> parsedMap = gson.fromJson(mapJson, mapType);
System.out.println(parsedMap.get("name")); // John


2. Вложенные объекты и сложные структуры

Объекты внутри объектов
Пример JSON с вложенностью:

{
"name": "Alice",
"address": {
"city": "New York",
"street": "5th Avenue"
}
}


Соответствующие Java-классы:
class Address {
private String city;
private String street;

// Конструктор, геттеры и сеттеры
public Address(String city, String street) {
this.city = city;
this.street = street;
}

public String getCity() { return city; }
public String getStreet() { return street; }
}

class Person {
private String name;
private Address address;

// Конструктор, геттеры и сеттеры
}


Десериализация вложенного объекта
String personJson = """
{
"name": "Alice",
"address": {
"city": "New York",
"street": "5th Avenue"
}
}
""";

Gson gson = new Gson();
Person person = gson.fromJson(personJson, Person.class);

System.out.println(person.getName()); // Alice
System.out.println(person.getAddress().getCity()); // New York


Сериализация сложного объекта
Address address = new Address("Berlin", "Main Street");
Person person = new Person("Bob", address);

String json = gson.toJson(person);
System.out.println(json);
// {"name":"Bob","address":{"city":"Berlin","street":"Main Street"}}


Как обрабатываются вложенности
Gson рекурсивно обходит все поля объекта.
Для каждого вложенного объекта создается новый экземпляр.
Поддерживается любая глубина вложенности.


Пример с коллекцией вложенных объектов

JSON:
{
"team": "Developers",
"members": [
{
"name": "John",
"role": "Backend"
},
{
"name": "Anna",
"role": "Frontend"
}
]
}


Java-классы:
class TeamMember {
private String name;
private String role;
// конструктор и геттеры
}

class Team {
private String teamName;
private List<TeamMember> members;
// конструктор и геттеры
}


Десериализация:
Type teamType = new TypeToken<Team>() {}.getType();
Team team = gson.fromJson(jsonString, teamType);


#Java #middle #Gson
Продолжаем выбирать темы для разбора и голосовать за рассмотрение предложенных! 🤓

Голосуем за тему к рассмотрению в эти выходные!

Выбираем новую тему!

Не стесняемся! ✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?

public class Task190525 {
public static void main(String[] args) {
String s1 = "Java";
String s2 = s1.concat('\u00A9');
System.out.println(s2);
}
}


#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM