Открытый канал ID 68536775128494

Java библиотека

Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial

Каналов в рубрике
1 733
Место этого канала
№ 66
Открыть рубрику →
Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

LLM: инструкции и контекст решают разные задачи Промпт задаёт задачу, ограничения и формат ответа. Контекст предоставляет данные, на которые модель может опираться: документы, код, результаты поиска и инструменты. Для помощника по Java полезно явно передать версию JDK, сигнатуру метода, сообщение ошибки и небольшой пример входа. Просьба «исправь код» без этих данных вынуждает модель угадывать. Если результат нужен программе, задайте схему ответа и проверяйте её на своей стороне. Валидный JSON подтверждает формат, но не истинность содержимого. Документы из поиска и содержимое репозитория следует обрабатывать как данные. Инструкции внутри них не должны менять права инструментов или правила доступа. #Java

Java Библиотека | Мы в Телеграм
Просмотры: 69
Перейти в пост Открыть в MAX Сообщить о неточности
Testcontainers: настоящая БД в интеграционных проверках Мок репозитория не проверяет SQL и особенности конкретной СУБД. Testcontainers поднимает временные контейнеры с PostgreSQL, MySQL и другими зависимостями рядом с проверяемым приложением. Это полезно для миграций, ограничений таблиц, транзакций и запросов, поведение которых зависит от диалекта БД. Для запуска нужен доступ к совместимому контейнерному окружению. Практический порядок: поднимите нужную версию БД, примените миграции и передайте приложению адрес и учётные данные контейнера. Окружение можно создавать на проверку или на набор — это влияет на изоляцию и время запуска. Официальный репозиторий. #Java

Java Библиотека | Мы в Телеграм
Просмотры: 144
Перейти в пост Открыть в MAX Сообщить о неточности
План изучения Java: от языка к сервису План удобнее строить вокруг работающих проектов, а срок подбирать под свою нагрузку. «6–12 месяцев» — ориентир, а не обещание трудоустройства. 1. Язык: типы, ООП, исключения, коллекции, generics. Напишите консольное приложение с сохранением данных. 2. Стандартная библиотека: файлы, даты, Stream API и основы многопоточности. 3. Хранение данных: SQL, JDBC, затем JPA и транзакции. 4. Веб: Spring Boot, REST API, валидация и обработка ошибок. 5. Качество: JUnit, интеграционные проверки, Git, Maven или Gradle. 6. Эксплуатация: Docker, конфигурация, логи, метрики и базовые правила безопасности. ИИ полезен для объяснения ошибки и сравнения решений. Каждый сгенерированный фрагмент нужно уметь объяснить: какие данные он принимает, где может упасть и как проверить результат. #Java

Java Библиотека | Мы в Телеграм
Просмотры: 185
Перейти в пост Открыть в MAX Сообщить о неточности
Log4j 2: куда отправлять логи Appender отвечает за место назначения: консоль, файл, сокет или другое хранилище. Layout задаёт формат записи. Минимальная консольная конфигурация:
<Configuration>
<Appenders>
<Console name="out" target="SYSTEM_OUT">
<PatternLayout pattern="%level %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="out"/>
</Root>
</Loggers>
</Configuration>
Для ротации файлов в Log4j 2 используйте RollingFile с политикой ротации. Примеры с DailyRollingFileAppender из Log4j 1 нельзя переносить в конфигурацию Log4j 2 без изменений. #Java

Java Библиотека | Мы в Телеграм
Просмотры: 231
Перейти в пост Открыть в MAX Сообщить о неточности
👩‍💻 Большая база для подготовки к Java-собеседованиям

Полезный GitHub-репозиторий с базой по структурам данных, алгоритмам и сложности.

Внутри:

🫡 Linked List, Stack и Queue;
🫡 Trees, Heap и Hash Map;
🫡 Графы и обходы DFS/BFS;
🫡 Алгоритмы сортировки;
🫡 Dijkstra, Bellman-Ford и Floyd-Warshall;
🫡 Greedy Algorithms;
🫡 Оценка временной сложности;
🫡 Ссылки на задачи, книги и видеолекции.

⛓ Ссылка на репозиторий



Java Библиотека | Мы в Телеграм
Просмотры: 248
Перейти в пост Открыть в MAX Сообщить о неточности
GC есть, а утечки памяти в Java всё равно возможны

Сборщик мусора освобождает недостижимые объекты. Если ненужный объект всё ещё удерживается сильной ссылкой, он остаётся в памяти.

Статические коллекции, кэши и слушатели могут удерживать объекты дольше необходимого.
Коллекция, которая постоянно растёт без удаления элементов, увеличивает потребление памяти.
Отписывайте слушатели, ограничивайте кэши и удаляйте ненужные ссылки. Слабые ссылки используйте там, где это соответствует логике приложения.

Объект больше не нужен — ещё не значит, что GC может его удалить.

Java Библиотека | Мы в Телеграм
Просмотры: 278
Перейти в пост Открыть в MAX Сообщить о неточности
Топ-3 товаров через Map.merge Есть названия покупок с повторами. Сначала считаем частоты, затем сортируем записи:
Map<String, Integer> counts = new HashMap<>();
for (String item : purchases) {
counts.merge(item, 1, Integer::sum);
}
counts.entrySet().stream()
.sorted(Map.Entry.<String, Integer>
comparingByValue().reversed()
.thenComparing(Map.Entry.comparingByKey()))
.limit(3)
.forEach(System.out::println);
Второй критерий делает порядок при одинаковой частоте предсказуемым. Пример предполагает непустые, ненулевые названия. Для большого количества разных товаров полная сортировка может быть лишней: топ-k можно поддерживать ограниченной кучей. Сначала оцените размер данных. #Java

Java Библиотека | Мы в Телеграм
Просмотры: 286
Перейти в пост Открыть в MAX Сообщить о неточности
🗄 Вебинар: JDBC: как Java-приложения взаимодействуют с базами данных
JDBC позволяет Java-приложениям работать с базами данных. Разберём подключение, SQL-запросы, транзакции и обработку ошибок.

💬 О чём поговорим
- Как подключиться к СУБД с помощью DriverManager и работать с Connection.
- Как выполнять SQL-запросы через Statement и PreparedStatement и получать результаты через ResultSet.
- Как управлять транзакциями: autocommit, commit и rollback.
- Как использовать SQLException, чтобы разобраться в причинах ошибки при выполнении запроса.

🎯 Результат урока:
- Вы разберётесь, как подключать Java-приложение к СУБД, выполнять SQL-запросы и работать с результатами.
- Узнаете, как управлять транзакциями и обрабатывать ошибки при обращении к базе данных.

👉 Для участия зарегистрируйтесь: https://vk.cc/d37axU

Вебинар проходит в рамках старта курса «Java-разработчик», который помогает освоить современную Java-разработку: от основ и первых программ до серверных приложений, баз данных, Spring, контейнеров и очередей сообщений. Программа регулярно обновляется под требования рынка. 🚀

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Рекламный пост

Просмотры: 264
Перейти в пост Открыть в MAX Сообщить о неточности
Почему equals у массивов в Java не сравнивает содержимое?

В Java массив выглядит как контейнер значений, поэтому легко ожидать, что equals сравнит элементы внутри.

Но массивы не переопределяют equals для содержимого. Обычный equals у массива работает почти как сравнение ссылок.

Например, два массива с одинаковыми числами не будут равны через equals:
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};

System.out.println(a.equals(b));


Результат будет false, потому что это два разных объекта в памяти.

Для одномерных массивов нужно использовать Arrays.equals:
System.out.println(Arrays.equals(a, b));


Теперь Java сравнит элементы по порядку и вернёт true.

С массивами объектов логика такая же:
String[] left = {"java", "ready"};
String[] right = {"java", "ready"};

System.out.println(Arrays.equals(left, right));


Но для вложенных массивов Arrays.equals уже недостаточно. Он сравнит внутренние массивы как объекты.

Для двумерных структур нужен deepEquals:
int[][] x = {{1, 2}, {3, 4}};
int[][] y = {{1, 2}, {3, 4}};

System.out.println(Arrays.deepEquals(x, y));


То же самое касается вывода. Обычный toString у массива покажет служебное имя, а не элементы.

Для нормального вывода используют Arrays.toString:
System.out.println(Arrays.toString(a));


Если массив вложенный, нужен deepToString:
System.out.println(Arrays.deepToString(x));


Массивы в Java стоит сравнивать и выводить через Arrays. Иначе код может выглядеть логично, но проверять совсем не то.

Java Библиотека | Мы в Телеграм
Просмотры: 288
Перейти в пост Открыть в MAX Сообщить о неточности
Вся лента — после бесплатной регистрации
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «Java библиотека» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти