Например, ArrayList используется для динамических массивов и быстрого доступа по индексу, а HashSet позволяет хранить только уникальные элементы без повторений.
На картинке — иерархия основных интерфейсов и реализаций Java-коллекций. Такая схема помогает быстро вспомнить, какая структура данных подходит для конкретной задачи.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🔥6
Он позволяет обходить коллекции и при необходимости делить их на части для параллельной обработки. Это делает работу Stream API эффективной и масштабируемой, особенно при обработке больших наборов данных.
Понимание Spliterator помогает лучше разобраться в том, как Java оптимизирует итерацию и распределяет задачи между потоками. Даже если вы используете только Stream API, именно этот интерфейс выполняет основную работу под капотом.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤4👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Это крупное сообщество, где ежедневно публикуются статьи, разборы технологий, туториалы и примеры кода по Java и связанному стеку. Портал ориентирован на программистов разных уровней. Помимо статей, на портале есть полноценные обучающие разделы. Это делает сайт удобным как для обучения, так и для регулярного чтения, чтобы быть в курсе новостей языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤7👍5🤝2
На иллюстрации показано, как оба языка обрабатывают код: от редактора и компиляции до выполнения программы.
Python использует интерпретатор и виртуальную машину PVM, а Java — компилятор javac, байткод и JVM с JIT-компиляцией.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍6❤5
Например, DNS отвечает за преобразование доменных имен в IP-адреса, TCP обеспечивает надежное соединение и порядок доставки пакетов, а HTTP используется для обмена запросами и ответами между клиентом и сервером.
На картинке — основные сетевые протоколы и уровни, которые участвуют в передаче данных.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥8👍6
Перечитывание конфигов без рестарта!
Сделаем простой reload: читаем .properties и обновляем значения в памяти.
Указываем путь к конфиг-файлу:
Функция загрузки настроек из файла:
Читаем конкретный параметр из конфига:
Перезагружаем конфиг в любой момент:
Пример файла
Теперь настройки можно менять прямо в файле, не перезапуская приложение. Достаточно вызвать load() и новые значения сразу применятся. Так работают динамические конфиги в реальных сервисах.
👉 Java Ready | #практика
Сделаем простой 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() и новые значения сразу применятся. Так работают динамические конфиги в реальных сервисах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥4
Чат по локальной сети
Создаём самый простой вариант чат, один компьютер запускает сервер, второй клиент, и они обмениваются сообщениями по Socket.
Сервер ждёт подключение:
Клиент подключается по IP:
Читаем сообщения от собеседника:
Отправляем свои сообщения:
Чтобы чат работал постоянно, один поток читает, второй пишет:
Основной поток отправляет то, что вводишь в консоль:
В итоге получается уже настоящий чат по локалке,
один ПК запускает сервер, второй подключается по IP, и сообщения ходят в обе стороны в реальном времени.
👉 Java Ready | #совет
Создаём самый простой вариант чат, один компьютер запускает сервер, второй клиент, и они обмениваются сообщениями по 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, и сообщения ходят в обе стороны в реальном времени.
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
👍9❤8🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Репозиторий представляет собой структурированную программу обучения, где последовательно разбираются ключевые основы языка. Материал дополнен практическими заданиями и примерами кода, что позволяет закреплять теорию через реальные упражнения. Отличный ресурс для начинающих разработчиков, который помогает сформировать базу и постепенно перейти к более сложным темам.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥7👍6🤝1
2048 в консоли!
Игра 2048 это поле 4×4, где одинаковые числа объединяются при движении. Игрок двигает плитки, числа складываются, а после каждого хода появляется новая плитка.
Создаём игровое поле 4×4:
Функция для печати поля:
Добавляем случайную плитку (2 или 4):
Движение плиток влево:
Пробуем один игровой ход:
Пример поля:
Получается простая версия 2048 прямо в терминале, которая идеально подходит для разработки новичком.
👉 Java Ready | #практика
Игра 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 прямо в терминале, которая идеально подходит для разработки новичком.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🔥4👎1
Например, ArrayList позволяет быстро получать элементы по индексу, HashSet хранит только уникальные значения, а HashMap используется для работы с парами ключ-значение.
На картинке — основные коллекции (List, Set, Map, Queue) и самые популярные реализации, которые чаще всего используются в разработке и встречаются на собеседованиях.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤7👍7
Вместо ручных вычислений через миллисекунды можно использовать понятный и безопасный API, который позволяет создавать, изменять и сравнивать промежутки времени. Это делает код читаемым и избавляет от ошибок в вычислениях.
Duration особенно полезен для таймеров, измерения производительности и обработки задержек. Работа с временными интервалами становится простой и предсказуемой благодаря современному API.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥4🤝2