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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
🗓 История IT сегодня — 9 августа


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

Генна́дий Анато́льевич Звенигоро́дский (9 августа 1952 — 8 октября 1984) — советский математик и педагог, один из основателей школьной информатики в СССР, разработчик учебных языков и систем программирования для школ.

Ма́рвин Ли Ми́нский (англ. Marvin Lee Minsky; 9 августа 1927 — 24 января 2016) — американский учёный, пионер искусственного интеллекта, сооснователь Лаборатории ИИ MIT и лауреат премии Тьюринга.

Анатолий Иванович Китов (9 августа 1920, Самара — 14 октября 2005, Москва) — советский учёный, один из основателей кибернетики и информатики в СССР, разработчик первых ЭВМ.


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

1995 — IPO Netscape Communications
9 августа 1995 года компания Netscape вышла на NASDAQ, открыв эпоху «доткомов» и революционизировав рынок веб-браузеров. Акции выросли с $14 до $71 в день выхода, что сделало IPO одним из крупнейших в истории рынка.

1991 — Первый email из космоса
Во время миссии шаттла Atlantis (STS-43) астронавты отправили первое электронное письмо из космоса, набрав сообщение через Mac Portable.

1910 — Патент на первый электрический стиральный автомат
9 августа 1910 года Олва Дж. Фишер получил патент на Thor — первую в истории полностью электрическую стиральную машину, заложив фундамент для будущих бытовых автоматов.

Computer Olympiad 1989
9-15 августа 1989 года в Лондоне прошла первая Computer Olympiad — международное соревнование программ-игр.

#Biography #Birth_Date #Events #9Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Введение в Nginx

Nginx (произносится как "engine x") — это высокопроизводительное программное обеспечение с открытым исходным кодом, выполняющее функции веб-сервера, обратного прокси-сервера, балансировщика нагрузки, TCP/UDP-прокси и почтового прокси-сервера. Созданное Игорем Сысоевым в 2004 году, оно распространяется под лицензией BSD из 2 пунктов. Nginx завоевал популярность благодаря своей скорости, стабильности и низкому потреблению ресурсов, что делает его выбором для многих высоконагруженных сайтов, таких как Netflix, Dropbox, Яндекс и ВКонтакте.

Согласно данным W3Techs (по состоянию на апрель 2025 года), Nginx занимает первое место среди веб-серверов, обслуживая 33,8% всех веб-сайтов, опережая Apache (26,4%) и Cloudflare Server (23,4%). Это подчеркивает его широкое признание и надежность.


Как работает Nginx?

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

Основные аспекты его работы включают:
Один основной процесс и несколько рабочих процессов: Основной процесс управляет конфигурацией и координирует работу, а рабочие процессы обрабатывают запросы пользователей. Это снижает накладные расходы по сравнению с многопоточной моделью, используемой, например, в Apache.
Механизмы событий: Nginx поддерживает такие технологии, как kqueue (FreeBSD), epoll (Linux) и другие, для эффективной обработки сетевых соединений.
Оптимизация передачи данных: Использование технологий, таких как sendfile и асинхронный ввод/вывод (AIO), минимизирует копирование данных и ускоряет доставку контента.
Низкое потребление памяти: Например, для 10 000 неактивных HTTP keep-alive соединений требуется всего около 2,5 МБ памяти.

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


Для чего нужен Nginx?

Nginx универсален и применяется в различных сценариях:
Веб-сервер
Обслуживает статический контент (HTML, CSS, изображения, JavaScript) с высокой скоростью.


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


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


Кеширование
Сохраняет часто запрашиваемый контент для ускорения доставки.


Почтовый прокси
Поддерживает протоколы IMAP, POP3, SMTP с возможностью аутентификации через HTTP.


Безопасность
Поддерживает SSL/TLS, ограничение доступа по IP и защиту от DDoS-атак.


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


Почему выбрать Nginx?

Nginx выделяется среди других веб-серверов, таких как Apache, по нескольким причинам:
Высокая производительность: Асинхронная архитектура позволяет обрабатывать больше запросов с меньшими ресурсами.
Эффективность для статического контента: Nginx быстрее Apache в доставке статических файлов, таких как изображения и CSS.
Модульная архитектура: Легко расширяется с помощью модулей для добавления новых функций.
Низкое потребление ресурсов: Минимизирует использование памяти и процессора, что идеально для серверов с ограниченными ресурсами.
Широкое применение: Используется крупными компаниями, такими как Netflix, Dropbox и
WordPress.com, что подтверждает его надежность.

Nginx также может работать в связке с Apache: Nginx обрабатывает статический контент, а Apache — динамический, что оптимизирует производительность сайта.


#Java #middle #on_request #nginx
👍6🔥3
Простая установка Nginx на Ubuntu

Установка Nginx на Ubuntu проста и занимает всего несколько минут.


Обновите списки пакетов:
sudo apt update

Эта команда обновляет индекс пакетов для системы управления пакетами apt.


Установите Nginx:
sudo apt install nginx

Подтвердите установку, нажав Y и Enter, когда система запросит разрешение.


Запустите Nginx:
sudo systemctl start nginx

Эта команда запускает веб-сервер.



Включите автозапуск Nginx:

sudo systemctl enable nginx

Это гарантирует, что Nginx будет запускаться автоматически при перезагрузке системы.


Проверьте статус Nginx:
sudo systemctl status nginx

Если в выводе указано active (running), сервер работает корректно.


Для настройки брандмауэра (если используется ufw) разрешите HTTP-трафик:
sudo ufw allow 'Nginx HTTP'
sudo ufw status


Демонстрация работы Nginx
После выполнения вышеуказанных шагов откройте веб-браузер и введите IP-адрес вашего сервера (например, http://your_server_ip). Вы увидите стандартную страницу приветствия Nginx.
Эта страница подтверждает, что Nginx установлен и функционирует корректно. Если страница не отображается, проверьте статус сервера и настройки брандмауэра.

#Java #middle #on_request #nginx
👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Я и моя команда начинаем новый проект

#mems
🔥1🤓1
Есть предложение встретиться завтра в 16:00 по МСК на лайвкодинг!

Будем изучать дальнейшее тестирование в Spring - Как тестировать API.
Anonymous Poll
36%
О! Я приду! 👌
18%
Я хотел(а) б, но не могу)((( 🤷‍♀️
43%
Я посмотрю в записи! ❤️
4%
Нет, мне это не интересно 👎
👍5
Всем привет! 👋

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

В этот раз мы продолжим рассматривать тестирование в Spring.

Приходите, это хороший шанс позадавать вопросы 🧑‍💻

Как всегда жду всех! 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🗓 История IT сегодня — 10 августа


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

Ян Райчман (10 августа 1911) — английский инженер, внёсший важный вклад в разработку электронных вычислительных машин (в частности — трубчатой памяти «Selectron» для проекта Дж. фон Неймана)


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

1937 — Клод Шеннон защитил магистерскую диссертацию
10 августа 1937 года Клод Шеннон подал магистерскую работу «Символьный анализ релейно-переключательных цепей» в MIT — один из основополагающих трудов, положивших теоретическую основу цифровых вычислений и теории информации.

1937 — Патент на электрогитару (Rickenbacker “Frying Pan”)
Патент № 2 089 171 зарегистрирован 10 августа 1937 года, что символически стало началом электроники в музыкальной технике — косвенно влиятельной в развитии цифрового звука и технологий музыкального I/O

#Biography #Birth_Date #Events #10Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Молчаливые разработчики ломают проект быстрее, чем баги.

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

И ты промолчал, потому что "ну, я же джун, что я понимаю"? Или "они же специалисты им виднее, зачем я буду спорить?".

И через неделю команда всё переделывает с нуля...

Так вот, молчание — это не "мир в команде".

Это приглашение к ошибке.

А умение спорить — это один из важнейших навыков в разработке, особенно в командных проектах.


🔴Почему конфликты не всегда зло

В психологии есть понятие когнитивный конфликт (cognitive conflict) — это когда люди спорят о идеях, подходах и решениях, а не о том, "кто дурак".

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

Исследования показывают, что такие споры:
Повышают качество решений
Ускоряют поиск оптимального подхода
Помогают видеть проблему под разными углами

А вот эмоциональный конфликт (affective conflict) — это уже про личные обиды, сарказм и переход на личности.


Он действительно убивает команду.



🔴Почему это особенно важно в разработке

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


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


Некоторых останавливает и неуверенность, даже если точно знают что решение верное. Потому что порицание за неверное решение пройдет мимо как и поощрение.


🔴Как спорить так, чтобы не сгорели мосты

Отделяй идею от человека
😔
Говори «Подход X не подходит, потому что…», а не "Ты написал ерунду".
Это снижает вероятность перехода в эмоциональный конфликт
.

Используй вопросы вместо утверждений
😉
Вместо «Это плохо» → "А что если попробовать так? Какие риски?"

Подкрепляй примерами или данными 🤓
В IT спор выигрывает не громкость голоса, а аргумент в виде теста, логов или статистики.

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


🔴 Почему этот soft skill один из важнейших?

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


В команде разработчиков побеждает не тот, кто всегда прав, а тот, кто умеет спорить так, что выигрывает команда, проект и бизнес.



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

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Встреча создана!

залетаем! -
https://telemost.yandex.ru/j/36394282034180 ✈️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
В целом ребят встреча прошла почти успешно))) Пока не пришел человек - гнида и все не испортил)

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

И обращаясь к "человеку" который это делает - я не понимаю зачем? Чего ты добиваешься? Я и так делаю все это бесплатно, стараясь дать многим что знаю, а еще и мешать... Я не понимаю. Это не просто гниль, это болезнь и жаль что такое дерьмо находится в нашем канале(((
🤓3
📌 Факт дня:

А вы знали, что первый компьютерный "онлайн-аукцион для искусства" был запущен в 1997 году?

Sotheby’s запустил онлайн-платформу для продажи произведений искусства, став первым аукционным домом, использующим интернет для торгов. Это предшествовало NFT-аукционам.


proof

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🗓 История IT сегодня — 11 августа


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

Сти́вен Гэ́ри (Стив) Во́зняк (англ. Stephen Gary (Steve) Wozniak; род. 11 августа 1950, Сан-Хосе, США) — род. 11 августа 1950. Сооснователь Apple; спроектировал Apple I и Apple II, которые задали стандарт для персональных компьютеров конца 1970-х.

Том Килберн (Tom Kilburn 11 августа 1921 г. – 17 января 2001 г.) — Британский учёный-инженер, один из разработчиков первых электронных ЭВМ (включая Manchester Baby) и соавтор памяти Williams–Kilburn; ключевая фигура ранней вычислительной техники.


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

В 2021 и 2023 годах
Samsung представила свои новейшие складные смартфоны, умные часы и планшеты. Эти мероприятия привлекли внимание глобального ИТ-сообщества благодаря инновациям в дизайне и функциональности устройств. Например, в 2023 году были представлены Galaxy Z Fold 5 и Z Flip 5, которые стали важным шагом в развитии складных технологий.


#Biography #Birth_Date #Events #11Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Раздел 4: Управляющие конструкции

Глава 2: Циклы

while / do-while в Java

Циклы в Java позволяют выполнять блок кода несколько раз, что полезно для повторяющихся задач, таких как обработка данных или ожидание ввода пользователя. В этом уроке мы разберем два типа циклов: while и do-while. Они используются, когда количество итераций неизвестно заранее и зависит от условия.

1. Цикл while

1.1. Синтаксис
Цикл while проверяет условие перед каждой итерацией. Если условие истинно (true), код внутри цикла выполняется. Если ложно (false), выполнение переходит к следующей строке после цикла.
while (условие) {
// Код, который выполняется, если условие истинно
}

Условие: Выражение, возвращающее boolean (true или false).
Блок кода: Выполняется, пока условие истинно.


1.2. Как работает

Проверяется условие.
Если условие истинно, выполняется блок кода.
После выполнения блока кода условие проверяется снова.
Если условие ложно, цикл завершается, и выполнение продолжается после цикла.


1.3. Примеры
Простой счетчик
int i = 1;
while (i <= 5) {
System.out.println("Число: " + i);
i++;
}

Вывод:
Число: 1
Число: 2
Число: 3
Число: 4
Число: 5

Объяснение: Цикл начинается с i = 1. Пока i <= 5, печатается значение i, и i увеличивается на 1. Когда i становится 6, условие становится ложным, и цикл завершается.


Суммирование чисел до ввода 0
import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
int sum = 0;
int number;
System.out.println("Введите числа для суммирования (0 для завершения):");
number = scanner.nextInt();
while (number != 0) {
sum += number;
number = scanner.nextInt();
}
System.out.println("Сумма: " + sum);

Объяснение: Пользователь вводит числа, которые добавляются к sum, пока не введет 0. Цикл while проверяет number != 0 перед добавлением.


Цикл с несколькими условиями
int x = 10;
int limit = 20;
while (x > 0 && x < limit) {
System.out.println("x = " + x);
x--;
}

Вывод:
x = 10
x = 9
x = 8
...
x = 1

Объяснение: Цикл выполняется, пока выполняются оба условия: x > 0 и x < limit. Числа печатаются от 10 до 1.


Бесконечный цикл
int i = 0;
while (true) {
System.out.println("Итерация: " + i);
i++;
if (i >= 3) {
break; // Выход из цикла
}
}

Вывод:
Итерация: 0
Итерация: 1
Итерация: 2

Объяснение: Условие true делает цикл бесконечным, но break прерывает его, когда i достигает 3.


1.4. Особенности
Проверка условия: Условие проверяется перед выполнением блока кода, поэтому цикл может не выполниться ни разу, если условие изначально ложно.
Обновление переменных: Необходимо обновлять переменные внутри цикла, чтобы условие в конечном итоге стало ложным.
Использование: Подходит для задач, где количество итераций неизвестно, например, чтение данных до конца файла или ожидание ввода пользователя.



2. Цикл do-while

2.1. Синтаксис
Цикл do-while выполняет блок кода хотя бы один раз, а затем проверяет условие. Если условие истинно, цикл продолжается.

do {
// Код, который выполняется хотя бы один раз
} while (условие);

Условие: Выражение, возвращающее boolean.
Блок кода: Выполняется перед проверкой условия.


2.2. Как работает
Выполняется блок кода.
Проверяется условие.
Если условие истинно, выполнение возвращается к блоку кода.
Если условие ложно, цикл завершается.



#Java #для_новичков #beginner #while #do_while
👍4
2.3. Примеры
Простой счетчик
int i = 1;
do {
System.out.println("Число: " + i);
i++;
} while (i <= 5);

Вывод:
Число: 1
Число: 2
Число: 3
Число: 4
Число: 5

Объяснение: Блок кода выполняется, затем проверяется i <= 5. Цикл продолжается, пока условие истинно.


Выполнение при ложном условии
int i = 6;
do {
System.out.println("Это выполнится один раз");
} while (i <= 5);

Вывод: Это выполнится один раз

Объяснение: Блок кода выполняется один раз, даже если условие i <= 5 изначально ложно.


Меню с вводом пользователя

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
String input;
do {
System.out.print("Введите команду (или 'quit' для выхода): ");
input = scanner.nextLine();
System.out.println("Вы ввели: " + input);
} while (!input.equalsIgnoreCase("quit"));

Объяснение: Пользователь вводит команды, пока не введет "quit". Цикл гарантирует, что запрос появится хотя бы один раз.


2.4. Особенности
Гарантированное выполнение: Блок кода выполняется хотя бы один раз, даже если условие ложно.
Использование: Подходит для задач, где нужно выполнить действие хотя бы раз, например, отображение меню или запрос ввода.



3. Правильное применение

3.1. Лучшие практики

Используйте фигурные скобки {}:
Даже для одной строки, чтобы избежать ошибок и улучшить читаемость.// Плохо: без скобок

while (i < 5)
System.out.println(i++);

// Хорошо: со скобками
while (i < 5) {
System.out.println(i++);
}


Обновляйте переменные:
Убедитесь, что переменные в условии изменяются, чтобы избежать бесконечных циклов.

Проверяйте на null:
Если работаете с объектами, проверяйте их на null, чтобы избежать NullPointerException.String input = null;
while (input != null && !input.isEmpty()) {
// Обработка ввода
}


Используйте понятные имена:
Например, counter вместо i делает код понятнее.

Избегайте бесконечных циклов:
Если используете while (true), добавьте break для выхода.while (true) {
if (условие) break;
}


3.2. Распространенные ошибки
Забыть обновить переменную:int i = 1;
while (i <= 5) {
System.out.println(i); // Бесконечный цикл, так как i не увеличивается
}


Неправильный выбор цикла:
Использование do-while, когда while лучше, или наоборот.

Сложные условия:
Слишком сложные условия затрудняют чтение. Разбивайте их на переменные.
// Плохо
while (x > 0 && y < 10 && z != null && z.isValid()) {}

// Хорошо
boolean isValid = x > 0 && y < 10 && z != null && z.isValid();
while (isValid) {}



4. Работа под капотом


4.1. Компиляция в байт-код

Цикл while:
Компилируется в инструкции if и goto. Условие проверяется перед выполнением, и если оно истинно, JVM переходит к блоку кода.

Пример байт-кода (упрощенно):
while (i < 5) {
i++;
}

Байт-код:iload i
bipush 5
if_icmpge end
iinc i, 1
goto loop
end:


Цикл do-while:
Блок кода выполняется сначала, затем проверяется условие с помощью if и goto.

Пример байт-кода:
do {
i++;
} while (i < 5);

Байт-код:loop:
iinc i, 1
iload i
bipush 5
if_icmplt loop


4.2. Память и стек
Стек операндов: Условие цикла вычисляется в стеке операндов JVM.
Стек вызовов: Локальные переменные цикла (например, i) хранятся в стеке вызовов.
Куча: Если в цикле создаются объекты (например, new String()), они хранятся в куче.


4.3. Оптимизация в JVM
JIT-компиляция: JVM может оптимизировать циклы, встраивая их в машинный код для повышения производительности.
Короткое замыкание: Если условие содержит логические операторы (&&, ||), JVM пропускает ненужные вычисления.
Удаление пустых циклов: Если цикл не выполняет полезной работы, JIT-компилятор может его убрать.


4.4. Ошибки в памяти
Бесконечные циклы: Могут переполнить стек или кучу, если создаются объекты.
NullPointerException: Работа с объектами без проверки на null в условии.
String s = null;
while (s.length() > 0) { // Ошибка: NullPointerException
}


#Java #для_новичков #beginner #while #do_while
👍3
Тестирование в Spring
2. Модульные тесты через TDD в Spring. Tестирование REST API.

Серия видео посвященная тестированию всего и вся в Spring.

Что мы рассмотрели:
🔵как написать тест контроллера через TDD
🔵узнали как частично поднимать контекст для тестирования API
🔵логику тестирования исходящих запросов
🔵варианты написания параметризированных тестов

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

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

Смотрите, ставьте лайки, подписывайтесь на каналы!✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Что выведет код?

public class Task110825 {
public static void main(String[] args) {
int i = 0;
while (i++ < 5) {
System.out.print(i + " ");
if (i == 3) {
i += 2;
}
}
}
}


#Tasks
👍1