Java Ready | Программирование
8.91K subscribers
1.21K photos
60 videos
1 file
596 links
Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/java_ready
Download Telegram
👩‍💻 Spliterator — механизм, на котором построены потоки данных в Java!

Он позволяет обходить коллекции и при необходимости делить их на части для параллельной обработки. Это делает работу Stream API эффективной и масштабируемой, особенно при обработке больших наборов данных.

Понимание Spliterator помогает лучше разобраться в том, как Java оптимизирует итерацию и распределяет задачи между потоками. Даже если вы используете только Stream API, именно этот интерфейс выполняет основную работу под капотом.


👉 Java Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114👍4
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ JavaCodeGeeks — крутой портал со статьями и практикой для Java-разработчиков!

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

📌 Оставляю ссылочку: javacodegeeks.com

👉 Java Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥87👍5🤝2
📂 Разбираемся, как работают Python и Java!

На иллюстрации показано, как оба языка обрабатывают код: от редактора и компиляции до выполнения программы.

Python использует интерпретатор и виртуальную машину PVM, а Java — компилятор javac, байткод и JVM с JIT-компиляцией.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍65
📂 Напоминалка по сетевым протоколам!

Например, DNS отвечает за преобразование доменных имен в IP-адреса, TCP обеспечивает надежное соединение и порядок доставки пакетов, а HTTP используется для обмена запросами и ответами между клиентом и сервером.

На картинке — основные сетевые протоколы и уровни, которые участвуют в передаче данных.

Сохрани, чтобы не потерять!

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥8👍6
Перечитывание конфигов без рестарта!

Сделаем простой reload: читаем .properties и обновляем значения в памяти.

Указываем путь к конфиг-файлу:
var path = java.nio.file.Path.of("config.properties");
var props = new java.util.Properties();


Функция загрузки настроек из файла:
void load() throws Exception {
try (var in = java.nio.file.Files.newInputStream(path)) {
props.clear();
props.load(in);
}
}


Читаем конкретный параметр из конфига:
String get(String key) {
return props.getProperty(key);
}


Перезагружаем конфиг в любой момент:
load();
System.out.println("port=" + get("server.port"));


Пример файла config.properties:
server.port=8080
feature.newLogin=true
limit.requests=100


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

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4🔥4
Чат по локальной сети

Создаём самый простой вариант чат, один компьютер запускает сервер, второй клиент, и они обмениваются сообщениями по Socket.

Сервер ждёт подключение:
ServerSocket server = new ServerSocket(5000);
Socket socket = server.accept();
System.out.println("Клиент подключился");


Клиент подключается по IP:
Socket socket = new Socket("192.168.0.10", 5000);
System.out.println("Подключено к серверу");


Читаем сообщения от собеседника:
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream())
);


Отправляем свои сообщения:
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Привет из клиента!");


Чтобы чат работал постоянно, один поток читает, второй пишет:
new Thread(() -> {
while (true) System.out.println(in.readLine());
}).start();


Основной поток отправляет то, что вводишь в консоль:
Scanner sc = new Scanner(System.in);
while (true) out.println(sc.nextLine());


В итоге получается уже настоящий чат по локалке,
один ПК запускает сервер, второй подключается по IP, и сообщения ходят в обе стороны в реальном времени.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥8👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Perplexity — AI-поисковик с генеративной моделью и встроенным web-ресёрчем. Работает по RAG-архитектуре: ищет актуальные источники, ранжирует их и формирует синтезированный ответ с цитированием. Подходит для быстрого ресёрча, конкурентного анализа, сравнения решений и проверки гипотез на основе свежих данных.

📌 Оставляю ссылочку: perplexity.ai

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍98🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
💡 StartJava — курс по Java с пошаговым разбором фундаментальных тем!

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

Оставляю ссылочку: GitHub 📱


👉 Java Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥7👍6🤝1
2048 в консоли!

Игра 2048 это поле 4×4, где одинаковые числа объединяются при движении. Игрок двигает плитки, числа складываются, а после каждого хода появляется новая плитка.

Создаём игровое поле 4×4:
int[][] board = new int[4][4];


Функция для печати поля:
void print() {
for (var r : board) {
for (var c : r) System.out.printf("%4d", c);
System.out.println();
}
}


Добавляем случайную плитку (2 или 4):
var rnd = new java.util.Random();
int x = rnd.nextInt(4), y = rnd.nextInt(4);
board[x][y] = rnd.nextDouble() < 0.9 ? 2 : 4;


Движение плиток влево:
for (int i = 0; i < 4; i++) {
for (int j = 1; j < 4; j++) {
if (board[i][j] != 0 && board[i][j - 1] == 0) {
board[i][j - 1] = board[i][j];
board[i][j] = 0;
}
}
}


Пробуем один игровой ход:
print();
System.out.println("Движение влево");


Пример поля:
   2   0   0   0
4 2 0 0
0 0 2 0
0 0 0 0


Получается простая версия 2048 прямо в терминале, которая идеально подходит для разработки новичком.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍4🔥4👎1
📂 Напоминалка по Java Collections Framework!

Например, ArrayList позволяет быстро получать элементы по индексу, HashSet хранит только уникальные значения, а HashMap используется для работы с парами ключ-значение.

На картинке — основные коллекции (List, Set, Map, Queue) и самые популярные реализации, которые чаще всего используются в разработке и встречаются на собеседованиях.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥107👍7
👩‍💻 Duration — удобный способ работать с временными интервалами!

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

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

👉 Java Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍5🔥4🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ UPROGER — полезные статьи и разборы по Java!

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

📌 Оставляю ссылочку: uproger.com

👉 Java Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥8👍7
Создаём игру “Камень, ножницы, бумага”

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

Варианты ходов:
String[] moves = {"камень", "ножницы", "бумага"};


Считываем выбор игрока:
System.out.print("Ваш ход: ");
String user = sc.nextLine().toLowerCase();


Компьютер выбирает случайный вариант:
String bot = moves[(int) (Math.random() * moves.length)];


Показываем выбор компьютера:
System.out.println("Компьютер выбрал: " + bot);


Сравниваем ходы:
if (user.equals(bot)) {
System.out.println("Ничья");
}


Проверяем победу игрока:
else if (
user.equals("камень") && bot.equals("ножницы") ||
user.equals("ножницы") && bot.equals("бумага") ||
user.equals("бумага") && bot.equals("камень")
) {
System.out.println("Вы победили!");
}


Иначе побеждает компьютер:
else {
System.out.println("Компьютер победил!");
}


Отличная мини-игра, чтобы потренировать: ввод данных, массивы, случайные числа и условия.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
😍 Java Courses — курс с задачами и практикой!

Это учебный курс с кодом и задачами. Внутри разобраны ключевые темы Java: коллекции, многопоточность, ввод-вывод, работа с файлами, структуры данных и другие вещи, которые используются в реальной разработке. Главная фишка — много практики.

Оставляю ссылочку: GitHub 📱


👉 Java Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥108👍8
Создаём Крестики-Нолики!

В итоге мы получим реальную игру: поле 3×3, два игрока, проверка победы и ничьи. Игроки будут вводить координаты, а программа — валидировать ход и обновлять поле.

Создаём поле и текущего игрока:
char[][] b = {
{' ', ' ', ' '},
{' ', ' ', ' '},
{' ', ' ', ' '}
};
char player = 'X';


Функция вывода поля:
void print() {
for (int i = 0; i < 3; i++) {
System.out.println(" " + b[i][0] + " | " + b[i][1] + " | " + b[i][2]);
if (i < 2) System.out.println("---+---+---");
}
}


Проверка победы (строки, колонки, диагонали):
boolean win(char p) {
for (int i = 0; i < 3; i++)
if ((b[i][0]==p && b[i][1]==p && b[i][2]==p) ||
(b[0][i]==p && b[1][i]==p && b[2][i]==p))
return true;

return (b[0][0]==p && b[1][1]==p && b[2][2]==p) ||
(b[0][2]==p && b[1][1]==p && b[2][0]==p);
}


Проверка ничьи (нет пустых клеток):
boolean draw() {
for (var r : b)
for (var c : r)
if (c == ' ') return false;
return true;
}


Основной игровой цикл:
var sc = new java.util.Scanner(System.in);

while (true) {
print();
System.out.print("Игрок " + player + " (строка и столбец 1-3): ");
int r = sc.nextInt() - 1;
int c = sc.nextInt() - 1;


Проверяем корректность хода:
    if (r < 0 || r > 2 || c < 0 || c > 2 || b[r][c] != ' ') {
System.out.println("Некорректный ход!");
continue;
}


Делаем ход и проверяем состояние игры:
    b[r][c] = player;

if (win(player)) {
print();
System.out.println("Победил " + player + "!");
break;
}

if (draw()) {
print();
System.out.println("Ничья!");
break;
}


Меняем игрока:
    player = (player == 'X') ? 'O' : 'X';
}
sc.close();


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

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Baeldung — крутейший ресурс для изучения Java!

Это образовательный портал с понятными объяснениями. Здесь разобраны: синтаксис, коллекции, потоки, IO, а также полноценные гайды по Spring, Spring Boot и REST-разработке. Статьи короткие, с примерами, каждая тема разбивается на отдельные блоки.

📌 Оставляю ссылочку: baeldung.com

👉 Java Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍138🔥7