Java библиотека – Telegram
Java библиотека
31.4K subscribers
2.4K photos
92 videos
10 files
2.21K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?

При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().
👍41🔥6
Forwarded from Java News
Вашему вниманию предлагается новая подборка Java-новостей от InfoQ: 😃
✔️ Стал доступен билд № 31 для JDK 20 (ранний доступ)
✔️ Стал доступен билд № 5 для JDK 21 (ранний доступ)
✔️ Выпущен новый релиз Spring Framework, версии 6.0.4
и д.р.

Приятного чтения!

Читать статью
👍10
Test-Driven Development with Java (2023) True PDF

Test-driven development enables developers to craft well-designed code and prevent defects. It’s a simple yet powerful tool that helps you focus on your code design, while automatically checking that your code works correctly. Mastering TDD will enable you to effectively utilize design patterns and become a proficient software architect.

The book begins by explaining the basics of good code and bad code, bursting common myths, and why Test-driven development is crucial. You’ll then gradually move toward building a sample application using TDD, where you’ll apply the two key rhythms -- red, green, refactor and arrange, act, assert. Next, you’ll learn how to bring external systems such as databases under control by using dependency inversion and test doubles. As you advance, you’ll delve into advanced design techniques such as SOLID patterns, refactoring, and hexagonal architecture.
👍12🔥1
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?

Каждый элемент LinkedList хранит ссылку на предыдущий элемент, следующий элемент и ссылку на данные.

 static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
//...
}

Для 32-битных систем каждая ссылка занимает 32 бита (4 байта). Сам объект (заголовок) вложенного класса Node занимает 8 байт. 4 + 4 + 4 + 8 = 20 байт, а т.к. размер каждого объекта в Java кратен 8, соответственно получаем 24 байта. Примитив типа byte занимает 1 байт памяти, но в JCF примитивы упаковываются: объект типа Byte занимает в памяти 16 байт (8 байт на заголовок объекта, 1 байт на поле типа byte и 7 байт для кратности 8). Также напомню, что значения от -128 до 127 кэшируются и для них новые объекты каждый раз не создаются. Таким образом, в x32 JVM 24 байта тратятся на хранение одного элемента в списке и 16 байт - на хранение упакованного объекта типа Byte. Итого 40 байт.

Для 64-битной JVM каждая ссылка занимает 64 бита (8 байт), размер заголовка каждого объекта составляет 16 байт (два машинных слова). Вычисления аналогичны: 8 + 8 + 8 + 16 = 40байт и 24 байта. Итого 64 байта.
👍46🔥61
👩‍💻 Рисуем звук. Почувствуй себя нейросетью. Java, Guice

Сегодня java, guice и другие - помогут нам записать звук в представление чуть более непонятное чем эквалайзер (по крайней мере для меня). Вы при желании можете записать что-то другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2
Микросервисы. Паттерны разработки и рефакторинга. (2019) PDF

Если вам давно кажется, что вся разработка и развертывание в вашей компании донельзя замедлились – переходите на микросервисную архитектуру. Она обеспечивает непрерывную разработку, доставку и развертывание приложений любой сложности.
Книга, предназначенная для разработчиков и архитекторов из больших корпораций, рассказывает, как проектировать и писать приложения в духе микросервисной архитектуры. Также в ней описано, как делается рефакторинг крупного приложения – и монолит превращается в набор микросервисов.
В этой книге:
• Как (и зачем!) использовать микросервисную архитектуру.
• Стратегии декомпозиции сервисов.
• Управление транзакциями и шаблоны запросов.
• Эффективные стратегии тестирования.
• Шаблоны развертывания, включая контейнеры и бессерверные платформы.
👍15🔥2
Оцените количество памяти на хранение одного примитива типа byte в ArrayList?

ArrayList
основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.
👍22🔥81
👩‍💻 Java. Многопоточность. Как устроить Deadlock.

В данном видео рассказывается о том, что такое Deadlock, и как намеренно создать взаимную блокировку потоков на языке программирования Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍4
Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее?

Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив (O(N));
• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо (O(N));
• вставка элемента (O(1)).

Для LinkedList:
• поиск позиции вставки (O(N));
• вставка элемента (O(1)).

В худшем случае вставка в середину списка эффективнее для LinkedList. В остальных - скорее всего, для ArrayList, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy().
👍223
Грокаем стриминг (2023) PDF

Стриминговые системы позволяют сократить до минимума время между событием и обработкой информации, чтобы вы получали результаты в реальном времени. В приложениях для финансовой сферы, в вопросах безопасности и IoT важна каждая миллисекунда, поэтому без стриминговых систем не обойтись. А еще — это модно и приносит деньги ;) ! Неслучайно специалисты в Spark, Heron и Kafka так востребованы.
Наконец, вы можете познакомиться с созданием стриминговых приложений и обработкой событий в реальном времени не продираясь через технические подробности конкретных фреймворков, головоломные термины и сложные формулировки. Простой язык и яркие примеры позволят вам познакомиться с базовыми концепциями, а чтобы усвоить описанные идеи и приемы, вы построите собственную простую стриминговую программу с нуля.

От читателя не требуется опыт работы со стриминговыми системами. Примеры написаны на языке Java.
👍29🔥32🍾2❤‍🔥1
Forwarded from Java News
Вышла в свет EAP версия IntelliJ IDEA 2023.1

Вышла в свет EAP (программа раннего доступа) версия лучшей в мире IDE IntelliJ IDEA 2023.1 EAP.

Уже сегодня вы можете бесплатно пользоваться Ultimate Edition и самыми современными фичами, которые войдут в следующий релиз IntelliJ IDEA. 😃

Подробно и наглядно о новых фичах - в предложенной сегодня статье.

Приятного чтения!

Читать статью
👍14🔥4🎉2
Java made easy: A beginner’s Handbook to easily Learn Java (2022) PDF

This book will help you learn how to code in JAVA very easily.

WHAT YOU WILL DISCOVER FROM THIS BOOK:
• The FULL BLUEPRINT ON HOW TO MOVE from a beginner to an expert in JAVA.
• Learn JAVA from scratch
• How to avoid most mistakes that most programmers in JAVA make.
• How to become a PRO in JAVA Programming.
• How to avoid most errors in JAVA.
👍10🔥3
В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?

Размер массива elementData представляет собой вместимость (capacity) ArrayList, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.
👍46
Forwarded from Java News
Размещаем Spring Boot приложение в Docker

Предложенная сегодня статья поможет новичкам пошагово разместить в контейнере Docker Spring Boot приложение, а также научит создавать мультиконтейнерное Spring Boot приложение используя Docker Compose. 😃

Хорошей практики!

Читать статью
👍19🔥4🍾2
Легкий способ выучить Java (2019)

Java – один из самых популярных и востребованных языков программирования в мире, но и один из самых сложных для изучения, особенно для новичков. Автор этой книги, Брайсон Пейн, разработал собственный метод обучения, который строится на прохождении материала исключительно на практических примерах. Начните изучать Java, создавая несложные игры для ПК и Android, узнавайте, как работает инструмент JShell, используйте популярные среды разработки Eclipse и Android Studio, учитесь искать и исправлять ошибки в коде и становитесь востребованным программистом с книгой «Легкий способ выучить Java»!
👍163🔥1
LinkedList — это односвязный, двусвязный или четырехсвязный список?

Двусвязный
: каждый элемент LinkedList хранит ссылку на предыдущий и следующий элементы.
👍38🎅8🔥1🍾1
Расскажите, что вы думаете про российские IT-компании — кто, на ваш взгляд, делает классные продукты, у кого самые крутые технологии, а кто недостаточно заботится о сотрудниках.

Опрос займёт не больше 5 минут, среди участников будет разыгран iPhone 14 Pro Max (всё честно, правда разыграем, правила тут).

👉Пройти опрос
👍7🔥2❤‍🔥11💯1
Forwarded from Java Guru 🤓
Как отработает приведенный код?
👍14
Jenkins 2. Приступаем к работе (2019) PDF

Книга посвящена Jenkins – программной системе с открытым исходным кодом на Java, предназначенной для обеспечения процесса непрерывной интеграции программного обеспечения. Автор показывает, насколько Jenkins 2 отличается от более традиционных версий этой популярной платформы автоматизации с открытым исходным кодом, предназначенных только для интернета. Если вы знакомы с Jenkins и хотите воспользоваться новыми технологиями для преобразования устаревших конвейеров или создания новых современных автоматизированных сред непрерывной доставки, эта книга – для вас.
Вы получите полное практическое руководство работы с контейнерами, изучите новый графический интерфейс Blue Ocean.
Издание будет полезно всем разработчикам программного обеспечения.
👍11
Java Persistence with Spring Data and Hibernate (Final Release) (2023) True PDF

Java Persistence with Spring Data and Hibernate explores persistence with the most popular available tools. You’ll benefit from detailed coverage of Spring Data JPA, Spring Data JDBC, Spring Data REST, JPA, and Hibernate, comparing and contrasting the alternatives so you can pick what’s best for your code. We’ll begin with a hands-on introduction to object/relational mapping (ORM) and then dive into mapping strategies for linking up objects and your database. You’ll learn about the different approaches to transactions in Hibernate and Spring Data, and even how to deliver Java persistence with non-relational databases. Finally, we’ll explore testing strategies for persistent applications to keep your code clean and bug free.
👍15🔥6