Java for Beginner
743 subscribers
708 photos
196 videos
12 files
1.14K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
4. Принцип разделения интерфейсов (I — Interface Segregation Principle)

Этот принцип говорит, что интерфейсы должны быть маленькими и специализированными, а не большими и универсальными. Клиенты (классы, использующие интерфейс) не должны зависеть от методов, которые они не используют.

Почему важно: Большой интерфейс заставляет классы реализовывать ненужные методы, что приводит к "пустым" реализациям и усложняет код.

Подробное объяснение: Лучше несколько маленьких интерфейсов, чем один большой. Это делает систему модульной и легче для понимания.


Пример нарушения принципа:
public interface Worker {
void work(); // Для всех
void eat(); // Только для людей
void charge(); // Только для роботов
}

Класс Human реализует charge() бесполезно, Robot — eat().


Пример правильного применения:

Разделите на маленькие интерфейсы.
public interface Workable {
void work();
}

public interface Eatable {
void eat();
}

public interface Chargeable {
void charge();
}

public class Human implements Workable, Eatable {
@Override
public void work() { /*...*/ }

@Override
public void eat() { /*...*/ }
}

public class Robot implements Workable, Chargeable {
@Override
public void work() { /*...*/ }

@Override
public void charge() { /*...*/ }
}

Теперь классы реализуют только нужное.


Совет: Интерфейс должен быть "толстым" для клиента, но "тонким" для реализатора — маленькие интерфейсы.


5. Принцип инверсии зависимостей (D — Dependency Inversion Principle)


Этот принцип утверждает, что высокоуровневые модули (бизнес-логика) не должны зависеть от низкоуровневых (детали реализации), а оба должны зависеть от абстракций (интерфейсов). Абстракции не зависят от деталей, детали зависят от абстракций.

Почему важно: Это уменьшает связь между частями системы, делая код легче для изменения и тестирования (например, замена базы данных без изменения бизнес-логики).

Подробное объяснение: Используйте интерфейсы или абстрактные классы как "прослойку". Высокий уровень зависит от интерфейса, низкий — реализует его.


Пример нарушения принципа:
public class ReportService {
private MySQLDatabase db = new MySQLDatabase(); // Зависит от конкретной реализации

public void generateReport() {
db.connect();
// ...
}
}

Смена базы данных требует изменения сервиса.


Пример правильного применения:
public interface Database {
void connect();
// ...
}

public class MySQLDatabase implements Database {
@Override
public void connect() { /*...*/ }
}

public class ReportService {
private Database db; // Зависит от абстракции

public ReportService(Database db) { // Инъекция зависимости
this.db = db;
}

public void generateReport() {
db.connect();
// ...
}
}

Теперь можно передать любую реализацию: new ReportService(new MySQLDatabase()) или new ReportService(new PostgreSQLDatabase()).


Совет: Используйте dependency injection (внедрение зависимостей) для передачи абстракций.


Полезные советы для новичков

Применяйте SOLID постепенно: Начните с единственной ответственности, потом добавляйте другие.
Примеры в Java: Смотрите стандартную библиотеку — она следует SOLID.
Ресурсы: Книга "Clean Code" Роберта Мартина для глубокого понимания.
Практика: Возьмите свой код и проверьте на соответствие каждому принципу.



#Java #для_новичков #beginner #OOP #SOLID
👍3🔥21
Что выведет код?

class Animal190925 {
public String speak() {
return "Some sound";
}
}

class Dog190925 extends Animal190925 {
public String speak() {
return "Woof";
}

public String fetch() {
return "Fetching stick";
}
}

public class Task190925 {
public static void main(String[] args) {
Animal190925 myAnimal = new Dog190925();
System.out.println(myAnimal.speak());
System.out.println(myAnimal.fetch());
}
}


#Tasks
👍4
Вопрос с собеседований

Что такое паттерн Chain of Responsibility? 🤓

Ответ:

Chain of Responsibility
— паттерн, где запрос передается по цепочке обработчиков.

Пример:
abstract class Handler {
protected Handler next;
abstract void handle(Request request);
}
class ConcreteHandler extends Handler {
void handle(Request request) { if (canHandle) process(); else next.handle(request); }
}

Используется в logging или обработке событий.


#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🗓 История IT-технологий сегодня — 20 сентября


ℹ️ Кто родился в этот день

Анатолий Васильевич Мошинский (бел. Анатоль Васілевіч Машынскі; 20 сентября 1937 Мерефа, СССР — 15 марта 1996 Республика Беларусь) — советский/белорусский учёный в радиофизике и электронике; профессор БГУ информатики и радиоэлектроники, занимался математическим моделированием физических процессов и прикладной электротехникой, что близко к вычислительной и электронной технике.

Дороти Джин Джонсон Воган (20 сентября 1910 г. — 10 ноября 2008 г.) — американская "human computer" и программист в NACA/NASA; одна из первых чернокожих женщин-руководителей вычислительного отдела, обучала себя и сотрудников языку Fortran, участвовала в адаптации и автоматизации вычислительных методов.

Чандрасекаран Пандуранган (родился 20 сентября 1955 года) — индийский учёный в компьютерных науках, профессор; исследования в областях алгоритмов, теории графов, криптографии, параллельных и VLSI-алгоритмов.


🌐 Знаковые события

1954 — скомпилирована и запущена первая программа, написанная на Фортране.

2000 — власти Тайваня арестовали 25-летнего Чэн Инь-Хао, создателя компьютерного вируса CIH («ЧИХ»), названного по инициалам автора. В народе вирус известен как «Чернобыль», так как одна из его версий активируется 26 апреля, в годовщину аварии на атомной электростанции.


#Biography #Birth_Date #Events #20Сентября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
С 13.09 по 19.09
Предыдущий пост(с 06.09 по 12.09)

Воскресный мотивационный пост:
не было

Выбранная голосованием тема:
не было

Запись встреч/видео:
не было.

Обучающие статьи:

Реактивное программирование
Реактивное программирование - вступление
Что такое потоки данных в реактивном мире?

Java:
static: поля, методы, блоки инициализации
Перечисления (enum)
Принципы проектирования и хорошего кода: SOLID

Полезные статьи и видео
:

Про IT в 2025 году
Обратная совместимость в Java-мире

Как и всегда, задачи можно найти под тегом - #Tasks, вопросы с собеседований - #собеседование

#memory
🔥21
Предлагаем темы для разбора и публикации! 📖

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

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

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

Жду Ваших предложений! 👏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Выбираем темы для рассмотрения в следующие выходные! 🤨
Anonymous Poll
17%
AOP
23%
Введение в Camunda
27%
Введение в gRPC
33%
Введение в GraphQL
👍1
А вы придете завтра на встречу по изучению Spring AI в 16:00 по МСК?
Anonymous Poll
41%
Да, обязательно!
47%
Хочу, но не могу...
12%
Не приду, фигню рассматриваете
👍1
🗓 История IT-технологий сегодня — 21 сентября


ℹ️ Кто родился в этот день

Не нашел. Знаете - напишите)


🌐 Знаковые события

2003 — завершение миссии космического аппарата Galileo, управляемое погружение в атмосферу Юпитера (чтобы избежать биологического загрязнения спутников).

#Biography #Birth_Date #Events #21Сентября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Ты не старый. Ты опытный.


Конечно эту фразу можно использовать в разных ситуациях... 😉

Но сегодня мы поговорим об IT и входе в него при 35+ годах.



Ты выучил Java и готов к получению оффера.

Но по твоему, у тебя есть минус: тебе уже 37 лет и часть жизни позади.
Иные профессиональные навыки, иные профессиональные привычки (ведь ты же не лежал на печи 33 года?).
И ты понимаешь, что придется работать с молодыми, похожими на тех, которых ты последние лет 5 учил и посмеивался в бороду.


А теперь они будут учить тебя.

🔜 Как с этим справиться?
🔜 Как не послать 20-летнего зазнайку в пешее эротическое?
🔜 Как стерпеть свою некомпетентность и упреки от ровесников своих детей?

Давай разбираться.


Плюсы возраста

Ты умеешь работать
Практически неважно, где ты работал до этого. У тебя за плечами по-любому были проекты, авралы, кризисы. Ты не паникуешь при фразе "сроки горят" (привыкай к слову "дедлайн" 😄), а начинаешь решать проблемы.
Если ты смог выучить Java - значит у тебя есть усидчивость и работает голова. А это 75% успеха.


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

Ты осознан
Крайне важное отличие тебя от молодых людей. Ты не пришёл в IT "по приколу", "попробовать", "временно".
У тебя есть цель, мотивация и понимание, зачем ты это делаешь.


У тебя есть дисциплина и понимание "старшинства"
Все, кто застал Советский Союз и 90-е, понимают что такое "Старший", "Начальник", "Руководитель". И если он адекватен, то для тебя в большинстве случаев не стоит вопрос о субординации. Тем более ты знаешь что значит это слово 😄.
И если ты осознано смог выучить Java в 35+ лет, ты не пойдешь бухать в рабочие дни и пропускать дейли, ведь ты пришел РАБОТАТЬ. Тебе не нужно прививать трудовую дисциплину.



Минусы возраста (давай честно)

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

Эйджизм
Да, он есть. Молодняк будет думать: Ну куда ему в 40 лет учить фреймворки? Ты должен заставить их удивиться.

Собственное эго

Тяжело принять, что тот, кто моложе твоей дочки, сегодня объясняет тебе, как работает Git. С этим надо внутренне бороться и побеждать.


Как не сломаться

Признай: ты джун
Опыт в другой сфере не делает тебя синьором в новой. Сними корону (если есть), и станет легче.

Используй свой возраст
Ты можешь быть посредником между хаосом молодёжи и бизнесом. Ты уже можешь объяснить заказчику то, что молодые пока не умеют формулировать.

Учись у молодых
Пусть 20-летний объяснит тебе что-то новое. Ты не потеряешь лицо — наоборот, приобретёшь союзника.


Мои советы(по традиции)

🔹Пойми, возраст в IT - это не приговор. Соответствуй возрасту в воспитании, общении, покажи молодым, как нужно вести себя в коллективе, ведь он у тебя не первый.
🔹Нас (кому за 35+) ценят. HR-ы напрямую об этом говорят, даже если политика компании указывает о наборе молодых. Почему? Перечитай плюсы и старайся соответствовать 😉
🔹Если ты понимаешь, что у 20-и летнего парня и в самом деле компетенция выше твоей, постарайся забыть о его возрасте и воспринимай его как учителя. Но не позволяй грубить и потыкать возрастом.

В целом, мне приятно работать программистом, ведь это сообщество интеллектуально развитых людей.
Они, в большинстве случаев, соблюдают нормы приличия и общения, могут понять минусы и плюсы возраста.
Тут практически не услышишь мата, атмосфера общения всегда соответствует "frendly" (можете погуглить 🤣).

И если Вы сможете влиться в этот процесс, перенять стиль и культуру общения, то возраст станет абсолютно не важным.


Тем более, большинство руководителей наши ровесники и все обо всем понимают (их тоже задрали малолетки 🤣)


Поэтому я уверен, нет никаких границ, кроме лично выстроенных у себя в голове, чтобы прийти в IT и в 45 ✌️
Главное оставаться человеком.

И быть подписанным на наш канал ☺️😉


Понравилась статья - поделись с другом, позови его на канал и будет тебе моя благодарность
🤝

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
Не забыли про встречу?

В 16:00 бот выдаст ссылку)))

Приходите
🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒3👍21
@JFB_admin_bot

Бот активен и выдает ссылки)))

Залетайте ✈️

Если что-то не работает, перезапустите бота)))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Spring AI

Настройка и запуск. Историчность и RAG

В видео мы рассмотрели новый модуль Spring - Spring AI.
🔵Написали и запустили взаимодействие с Mistral AI (по аналогии можно запустить с любой удаленной или локальной LLM).
🔵Дали LLM память - настроив сохранение сообщений в БД.
🔵Модифицировали входящее сообщение в LLM, добавив свою логику.
🔵Подключили RAG (Retrieval-Augmented Generation) - архитектуру искусственного интеллекта, которая сочетает в себе поиск информации и генерацию ответов.
🔵Как всегда немного подебажили 😜


Ссылка на Youtube
Ссылка на Рутьюб

Ссылка на GitHub - ждёт ваших звезд ☺️

Смотрите, ставьте лайки, подписывайтесь на каналы!✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🗓 История IT-технологий сегодня — 22 сентября


ℹ️ Кто родился в этот день

Михаил Львович Цетлин (1924—1966) — советский кибернетик, математик; его интересы включали теорию автоматов, теорию управления, информатику и разработку электронных приборов.

Сергей Валерьянович Медведев (22 сентября 1927, Калуга — 28 марта 2012, Москва) — советский и российский учёный-инженер, специалист по автоматике; участвовал в разработке и производстве систем автоматики, в том числе автоматизированных систем контроля.

Андре́й Андре́евич Ма́рков (9 [22] сентября 1903, Санкт-Петербург — 11 октября 1979, Москва) — советский математик, основатель школы конструктивной математики; руководил лабораторией математической логики и структур машин.

Джон Лерой Хеннесси (англ. John LeRoy Hennessy; р. 22 сентября 1952) — американский учёный-инженер; основатель MIPS Technologies, президент Стэнфорда, лауреат премии Тьюринга за развитие архитектуры RISC, используемой в огромном числе современных процессоров.

Ральф Энтони Брукер (22 сентября 1925 — 20 ноября 2019 года) — британский компьютерный учёный, разработал язык Mark 1 Autocode, одну из первых высокоуровневых языков программирования.


🌐 Знаковые события

1982 — запуск спутника Космос-1409 (US-K типа) — часть советской системы предупреждения о ракетном нападении «Око».

2017 — запуск спутника Космос-2522, часть системы навигации ГЛОНАСС-М.


#Biography #Birth_Date #Events #22Сентября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1