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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
История IT-технологий сегодня — 26 октября


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

Брендан Дэмиен Маккей (родился 26 октября 1951 года) — австралийский учёный (компьютерные науки и комбинаторика), внес значимый вклад в вычислительную теорию графов и алгоритмическую комбинаторику; автор множества алгоритмов и программ для исчерпывающего поиска в графах.


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

1861 — немецкий изобретатель Филипп Рейс во Франкфурте продемонстрировал своё изобретение, которое он назвал телефоном.

2012 — выпуск операционной системы Windows 8.


#Biography #Birth_Date #Events #26Октября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💸 Измерим твою цену в рублях?


Вот о чём думают каждый вкатун и джун в начале пути?

Наверно:
“Вот бы мне знать весь Spring, Quarkus и написать свой компилятор.”
“Удалёнка, спать до обеда и лавандовый раф на завтрак.”

Да ладно...
Вспомни себя, когда ты только думал о начале обучения 😏

Все как один думают о зарплате.

О том, как быстро смогут подрасти по грейду, по цифрам и по лайкам под постом о первом оффере.



🫰 Мир, где деньги = значимость

Так уж устроено — мы живём в обществе, где сумма на счёте практически определяет, кто ты.
Купил айфон — молодец.
Ходишь пешком — лох.

А теперь добавь сюда программистов, где каждый второй гордо пишет “Middle 250k” в профиле и считает, что это уже характеристика личности.


Но вот вопрос: зарплата — это действительно твоя ценность, или просто временная рыночная оценка твоего труда?


🧑‍💻 Везунчики на старте.

Иногда некоторым просто везет. 🤷‍♀️

Компания в моменте расширяется, стартап получил инвестиции, или программист угадал хайповый стек.
И вот неожиданно он — “молодец”. Хотя внутри всё тот же растерянный джун, просто с хорошим прайсом.

А бывает и наоборот: человек пашет, реально шарит, но получает меньше, потому что не умеет себя продавать, живёт не в столице или просто не хочет прыгать по вакансиям ради пары тысяч.

И кто из них лучше?

Тот, кто умнее?
Или тот, кто просто дороже стоит на hh?



⛔️ Проблема начинается, когда ты меришь себя чужим оффером

“Он получает больше. Значит, он лучше.”

Вот так и начинается внутренний диссонанс, который выжигает уверенность, мотивацию и любовь к делу.

А потом приходят выгорание, обида и мысли вроде:
“Да пошло оно всё, если рынок не ценит”.

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



🤫 Как жить, если твой сосед зарабатывает больше?

Пойми:
Деньги — не показатель личности, ума, знаний и опыта.


Развивайся, а не сравнивай.
Зарплата может упасть, проект может закрыться, а вот навыки и адекватность останутся при тебе.
Настоящий уровень — это не оффер, а то, что ты можешь, когда оффера нет.
Делай ставку на свое ежедневное развитие, а не на 3-х месячный оффер сеньора, откуда тебя с треском выпнут.
Время так или иначе все расставит по своим местам.

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

Понимаешь, что ты лучше — борись.

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

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


Так что да, твоя зарплата — не ты. И не уровень твоих компетенций.

Но то, как ты к ней относишься — говорит о тебе громче, чем цифры в оффере.

Кичиться в моменте что ты получаешь 400к, но не знаешь и не слышал, к примеру о Spring AI - глупо.
Завтра тебя перепрыгнет более опытный в нужном стеке мидл, а ты пойдешь на дно.

Поэтому развитие и связи — это приоритет, а офферы лишь заслуженное приложение.

А для этого надо общаться и учиться...

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


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

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71
История IT-технологий сегодня — 27 октября


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

Исаак Семёнович Брук (27 октября (9 ноября) 1902 года, Минск, Российская империя — 6 октября 1974, Москва, СССР) — советский учёный в электротехнике и вычислительной технике, один из организаторов и руководителей работ по созданию отечественных вычислительных машин (серия М-1…М-3), основатель научной школы в области ЭВМ в СССР. (в ряде русскоязычных источников дата рождения указывается как 27 октября 1902 (старый стиль) / 9 ноября — есть варианты формата дат в разных справочниках).


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

Не нашел((


#Biography #Birth_Date #Events #27Октября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Сколько Вы зарабатываете? (если не секрет)
Anonymous Poll
20%
до 30к в месяц
27%
30-50
0%
50-80
0%
80-100
20%
100-150
20%
150-300
0%
300+к в месяц
13%
300млн в нс
Раздел 6. Коллекции в Java

Глава 4. Queue и Deque

Практика:
В «Библиотеке» добавить очередь читателей (Queue<String>) для книги. Когда книга возвращается — выдать её первому из очереди

Откройте проект «Библиотека»

Запустите IntelliJ IDEA и откройте существующий проект LibraryProject. Убедитесь, что классы Book и Library существуют: Book с полями title, author, year (и геттерами), Library с массивом книг, счетчиком bookCount, методом addBook и Set для авторов.

Импортируйте необходимые пакеты:
В файлах, где будете использовать Queue, убедитесь, что импортированы java.util.Queue и java.util.LinkedList (или ArrayDeque — выберите реализацию для FIFO). IDE подскажет, когда вы начнете писать код — используйте Ctrl+Enter для автодобавления импорта.

Выберите реализацию Queue:
Для этого задания используйте LinkedList<String> как Queue — она проста для FIFO и позволяет операции на концах. Альтернатива — ArrayDeque для большей эффективности, если хотите поэкспериментировать.


Обновление класса Book для очереди читателей

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

Добавьте поле для Queue<String>:
Откройте файл Book.java.
Объявите приватное поле readerQueue типа Queue<String>, инициализированное как new LinkedList<> (или new ArrayDeque<>).
Это множество будет хранить имена читателей в порядке очереди (FIFO: первый добавленный — первый получит книгу).



Добавьте методы для работы с очередью

Создайте публичный метод addToQueue(String readerName), который:
Добавляет имя читателя в конец очереди с помощью offer (readerQueue.offer(readerName)).
Можно вывести сообщение, например, "Читатель [readerName] добавлен в очередь за книгой [title]".


Создайте публичный метод returnBook(), который моделирует возврат книги:
Проверяет, пуста ли очередь (readerQueue.isEmpty()).
Если пуста — выводит сообщение "Книга свободна, очередь пуста".
Если не пуста — извлекает первого читателя с помощью poll (String nextReader = readerQueue.poll();).
Выводит сообщение "Книга выдана следующему читателю: [nextReader]".
(Опционально: Если книга была занята, здесь можно обновить статус, но для простоты пока опустим).


Обновите конструктор Book:
В конструкторе Book убедитесь, что readerQueue инициализируется (если не сделали при объявлении поля).


Интеграция с классом Library

Теперь обновим Library, чтобы при добавлении книги учитывать очередь, но поскольку очередь в Book, Library будет работать с объектами Book.

Обновите метод addBook(Book book):
В методе addBook оставьте добавление в массив книг, но добавьте проверку: Если очередь читателей в книге не пуста (book.getReaderQueue().isEmpty() == false), выведите сообщение "Книга добавлена, но имеет очередь читателей".
(Это опционально, но поможет связать с практикой).



Добавьте метод для возврата книги

Создайте публичный метод returnBookByTitle(String title), который:
Ищет книгу в массиве по title (перебор с equals).
Если найдена — вызывает returnBook() на объекте Book.
Если не найдена — выводит сообщение "Книга не найдена".



Обновление класса Main для тестирования

Теперь протестируем новую функциональность в Main.

Создайте объекты и добавьте книги:
В методе main создайте объект Library.
Создайте объект Book (например, с title "Война и мир", author "Толстой", year 1869).
Вызовите addBook на Library.

Добавьте читателей в очередь:
Через объект Book вызовите addToQueue несколько раз с разными именами читателей (например, "Иван", "Мария", "Петр").
Вызовите returnBook() на Book — первый читатель ("Иван") должен получить книгу, остальные остаются в очереди.


Протестируйте возврат:
Вызовите returnBook() еще раз — следующий читатель ("Мария") получит.
Продолжите, пока очередь не опустеет — последний вызов вернет null или сообщение о пустоте.



#Java #для_новичков #beginner #Collections #Deque #ArrayDeque #LinkedList
Тестирование и отладка

После реализации протестируйте, чтобы убедиться в правильной работе очереди.

Запустите проект:
Правой кнопкой на Main.java → Run 'Main.main()'.
В консоли увидите сообщения о добавлении читателей и выдаче книги по порядку (FIFO: первый добавленный — первый получает).


Проверьте FIFO:

Убедитесь, что читатели выдаются в порядке добавления (offer в конец, poll из начала).
Попробуйте добавить null как читателя — проверьте поведение (LinkedList позволит).


Отладка:
Установите breakpoint в методе returnBook перед poll и после — шагайте (F8) и смотрите размер очереди (readerQueue.size()).
Если ошибки: NullPointerException (если очередь не инициализирована или книга не найдена) — добавьте проверки if (readerQueue != null && !readerQueue.isEmpty()).
ArrayIndexOutOfBoundsException в массиве книг — расширьте массив или используйте динамический список (позже заменим на List).


Эксперименты:
Измените реализацию Queue на ArrayDeque — проверьте, работает ли аналогично (да, но эффективнее по памяти).
Добавьте метод isQueueEmpty() в Book для проверки пустоты — используйте в Library для статистики.



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

Инициализация Queue: Всегда инициализируйте в конструкторе Book (readerQueue = new LinkedList<>();), чтобы избежать NullPointerException.
Проверка возвращаемого: Poll возвращает null при пустой — используйте if (nextReader != null) для сообщений.
Расширение: Подумайте о статусе книги (boolean isAvailable) — при возврате устанавливайте true, при выдаче — false.
Массив книг: Пока используем массив, но заметьте ограничения — в следующих уроках заменим на List<Book>.
Thread-safety: Если проект вырастет, подумайте о ConcurrentLinkedQueue для многопоточности.



#Java #для_новичков #beginner #Collections #Deque #ArrayDeque #LinkedList