Как одним вызовом из List получить List со всеми элементами, кроме первых и последних 3-х?
👉@BookJava
List<Integer> subList = list.subList(3, list.size() - 3);
👉@BookJava
❤6
Как одной строчкой преобразовать HashSet в ArrayList?
Как одной строчкой преобразовать ArrayList в HashSet?
Сделайте HashSet из ключей HashMap.
👉@BookJava
ArrayList<Integer> list = new ArrayList<>(new HashSet<>());
Как одной строчкой преобразовать ArrayList в HashSet?
HashSet<Integer> set = new HashSet<>(new ArrayList<>());
Сделайте HashSet из ключей HashMap.
HashSet<Object> set = new HashSet<>(map.keySet());
👉@BookJava
👍6
Forwarded from ITmozg
Java: 2021 Beginners Programming Guide. 33 Best Java Tips and Tricks
Автор: Richard McGuire (2021)
Java - это язык программирования и вычислительная платформа, разработанная Sun Microsystems в 1995 году. Каждый день создается все больше и больше программ и веб-сайтов, совместимых с Java. Она считается надежным, быстрым и безопасным языком для создания больших программных приложений. Автор книги научит основам программирования на этом языке.
Скачать книгу
@itmozg
Автор: Richard McGuire (2021)
Java - это язык программирования и вычислительная платформа, разработанная Sun Microsystems в 1995 году. Каждый день создается все больше и больше программ и веб-сайтов, совместимых с Java. Она считается надежным, быстрым и безопасным языком для создания больших программных приложений. Автор книги научит основам программирования на этом языке.
Скачать книгу
@itmozg
👍2
Forwarded from Kotlin
Design of Kotlin Coroutines
https://proandroiddev.com/design-of-kotlin-coroutines-879bd35e0f34
✍️ @kotlin_lib
https://proandroiddev.com/design-of-kotlin-coroutines-879bd35e0f34
✍️ @kotlin_lib
👍1
Сделайте HashMap из HashSet<Map.Entry<K, V>>
👉@BookJava
HashMap<K, V> map = new HashMap<>(set.size());
for (Map.Entry<K, V> entry : set) {
map.put(entry.getKey(), entry.getValue());
}
👉@BookJava
💩9👍2👎1
Learn SOLID design principles using Java
https://dev.to/fialhorenato/learn-solid-design-principles-using-java-m68
👉@BookJava
https://dev.to/fialhorenato/learn-solid-design-principles-using-java-m68
👉@BookJava
👍2
Forwarded from ITmozg
Media is too big
VIEW IN TELEGRAM
🎥 Java для начинающих | Уроки Java
#1 - Программирование на Java
#2 - Установка Java JDK и IntelliJ IDEA
#3 - Типы данных
#4 - Переменные
#5 - Арифметические операции
#6 - Условные операторы
#7 - циклы for, wile, do wile
#8 - Массивы в Java
#9 - Классы в Java
#10 - Тип данных String в Java
#11 - Наследование в Java
#12 - Java интерфейсы
#13 - Абстрактные классы java
#14 - Вложенные классы java
#15 - Пакеты в java
#16 - Перегрузка методов java
#17 - Основы ООП
#18 - Обработка исключений в java , try catch java / Java с нуля
Все видео доступны на youtube
#java
@itmozg
#1 - Программирование на Java
#2 - Установка Java JDK и IntelliJ IDEA
#3 - Типы данных
#4 - Переменные
#5 - Арифметические операции
#6 - Условные операторы
#7 - циклы for, wile, do wile
#8 - Массивы в Java
#9 - Классы в Java
#10 - Тип данных String в Java
#11 - Наследование в Java
#12 - Java интерфейсы
#13 - Абстрактные классы java
#14 - Вложенные классы java
#15 - Пакеты в java
#16 - Перегрузка методов java
#17 - Основы ООП
#18 - Обработка исключений в java , try catch java / Java с нуля
Все видео доступны на youtube
#java
@itmozg
👍5🍾1
Как устроен HashMap?
HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение», вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.
👉@BookJava
HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение», вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.
👉@BookJava
👍8👎3
Forwarded from Java Geek
Bit Set
Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]?
Для этого есть более эффективный с точки зрения использования памяти метод.
Это класс BitSet, позволяющий нам хранить массивы битов и манипулировать ими. По сравнению с boolean[] он требует в 8 раз меньше памяти. Мы можем выполнять логические операции над массивами, такими как, например and, or, xor.
Допустим, у нас есть два входных массива битов. Мы хотим провести на них операцию xor.
Уточню, операция xor, возвращает только те элементы, которые имеются только в одном массиве, но не в другом. Для этого нам нужно создать два экземпляра BitSet и вставить туда элементы, как показано ниже. Наконец, вы должны вызвать метод xor в одном из BitSet объектов, указав в качестве аргумента второй BitSet объект.
@java_geek
Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]?
Для этого есть более эффективный с точки зрения использования памяти метод.
Это класс BitSet, позволяющий нам хранить массивы битов и манипулировать ими. По сравнению с boolean[] он требует в 8 раз меньше памяти. Мы можем выполнять логические операции над массивами, такими как, например and, or, xor.
Допустим, у нас есть два входных массива битов. Мы хотим провести на них операцию xor.
Уточню, операция xor, возвращает только те элементы, которые имеются только в одном массиве, но не в другом. Для этого нам нужно создать два экземпляра BitSet и вставить туда элементы, как показано ниже. Наконец, вы должны вызвать метод xor в одном из BitSet объектов, указав в качестве аргумента второй BitSet объект.
@java_geek
👍8
Forwarded from Kotlin
This media is not supported in your browser
VIEW IN TELEGRAM
Курс по корутинам
#1 Что такое корутина. Важные особенности
#2 CoroutineContext. Настраиваем корутины
#3 Жизненный цикл корутины. CoroutineScope. Structured Concurrency
#4 Обработка ошибок в корутинах
#5 Каналы. Зачем если есть Flow?
#6 Синхронизация между корутинами
#7 Kotlin Coroutines Flow. StateFlow. SharedFlow
#8 Корутины в Android. Специальные API
https://www.youtube.com/playlist?list=PL0SwNXKJbuNmsKQW9mtTSxNn00oJlYOLA
✍️ @kotlin_lib
#1 Что такое корутина. Важные особенности
#2 CoroutineContext. Настраиваем корутины
#3 Жизненный цикл корутины. CoroutineScope. Structured Concurrency
#4 Обработка ошибок в корутинах
#5 Каналы. Зачем если есть Flow?
#6 Синхронизация между корутинами
#7 Kotlin Coroutines Flow. StateFlow. SharedFlow
#8 Корутины в Android. Специальные API
https://www.youtube.com/playlist?list=PL0SwNXKJbuNmsKQW9mtTSxNn00oJlYOLA
✍️ @kotlin_lib
👍5
Media is too big
VIEW IN TELEGRAM
Maven - краткий курс
В этом видео вы узнаете, как использовать Maven как профессионал: установка, использование обертки mvn, использование Maven вместе с IDE и, конечно же, основы Maven.
00:00 Intro
00:30 Cloning The Sample Project
01:09 Installing Maven - Package Manager
01:34 Installing Maven - Manual
02:57 Maven Wrapper
04:31 mvn validate
05:21 IntelliJ - Importing Maven Projects
06:12 Pom.xml - Basics
07:07 Pom.xml - Properties
07:38 Pom.xml - Build Section
08:06 Pom.xml - Dependencies
09:40 Pom.xml - Dependency Scopes
11:41 search.maven.org - Dependency Search
12:27 IntelliJ - Maven Reload Trick
13:11 IntelliJ - Dependency Search
15:04 Maven Directory Structure
15:25 mvn clean
15:37 mvn compile
16:00 mvn test
17:45 mvn package
18:36 mvn install
19:18 Local Maven Repository
20:25 Central Maven Repository
22:28 Multi Module Projects
источник
👉@BookJava
В этом видео вы узнаете, как использовать Maven как профессионал: установка, использование обертки mvn, использование Maven вместе с IDE и, конечно же, основы Maven.
00:00 Intro
00:30 Cloning The Sample Project
01:09 Installing Maven - Package Manager
01:34 Installing Maven - Manual
02:57 Maven Wrapper
04:31 mvn validate
05:21 IntelliJ - Importing Maven Projects
06:12 Pom.xml - Basics
07:07 Pom.xml - Properties
07:38 Pom.xml - Build Section
08:06 Pom.xml - Dependencies
09:40 Pom.xml - Dependency Scopes
11:41 search.maven.org - Dependency Search
12:27 IntelliJ - Maven Reload Trick
13:11 IntelliJ - Dependency Search
15:04 Maven Directory Structure
15:25 mvn clean
15:37 mvn compile
16:00 mvn test
17:45 mvn package
18:36 mvn install
19:18 Local Maven Repository
20:25 Central Maven Repository
22:28 Multi Module Projects
источник
👉@BookJava
👍6🔥3👎1
Forwarded from Книги по Java | Books Java 📚
Java from EPAM. Учебно-методическое пособие
Блинов, Романчик (2020)
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE. В книге рассматриваются основы языка Java и концепции объектно-ориентированного и функционального программирования. Также изложены аспекты применения библиотек классов языка Java, включая файлы, коллекции, Stream API, сетевые и многопоточные приложения, а также взаимодействие с СУБД и ХМL. В конце каждой главы даются теоретические вопросы по изученной главе, тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы с кратким описанием технологий Log4J2 и TestNG.
Скачать
👉 @java_360
Блинов, Романчик (2020)
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE. В книге рассматриваются основы языка Java и концепции объектно-ориентированного и функционального программирования. Также изложены аспекты применения библиотек классов языка Java, включая файлы, коллекции, Stream API, сетевые и многопоточные приложения, а также взаимодействие с СУБД и ХМL. В конце каждой главы даются теоретические вопросы по изученной главе, тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы с кратким описанием технологий Log4J2 и TestNG.
Скачать
👉 @java_360
👍14👎1🔥1🤔1
Создание пользовательских аннотаций в Java
В этой статье объясняется, как создавать мета- и пользовательские аннотации и украшать ими объекты.
👉@BookJava
В этой статье объясняется, как создавать мета- и пользовательские аннотации и украшать ими объекты.
👉@BookJava
👍2
Генерация PDF-документов на основе шаблонов в Java
https://dzone.com/articles/template-based-pdf-document-generation-in-java
👉@BookJava
https://dzone.com/articles/template-based-pdf-document-generation-in-java
👉@BookJava
👍4👎1
В каком случае может быть потерян элемент в HashMap?
Допустим, в качестве ключа используется не примитив, а объект с несколькими полями. После добавления элемента в HashMap у объекта, который выступает в качестве ключа, изменяют одно поле, которое участвует в вычислении хэш-кода. В результате при попытке найти данный элемент по исходному ключу, будет происходить обращение к правильной корзине, а вот
👉@BookJava
Допустим, в качестве ключа используется не примитив, а объект с несколькими полями. После добавления элемента в HashMap у объекта, который выступает в качестве ключа, изменяют одно поле, которое участвует в вычислении хэш-кода. В результате при попытке найти данный элемент по исходному ключу, будет происходить обращение к правильной корзине, а вот
equals
уже не найдет указанный ключ в списке элементов. Тем не менее, даже если equals
реализован таким образом, что изменение данного поля объекта не влияет на результат, то после увеличения размера корзин и пересчета хэш-кодов элементов, указанный элемент, с измененным значением поля, с большой долей вероятности попадет в совершенно другую корзину и тогда уже потеряется совсем.👉@BookJava
👍6🤡3
Настраиваем память JVM-приложения в Kubernetes
Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.
Я хотел бы поделиться одним из способов настройки памяти для Java-приложений в Kubernetes. Сразу скажу, что итоговые настройки, к которым мы придём, будут приведены лишь в качестве примера и должны настраиваться индивидуально под каждое приложение. Рассматривать будем настройки и метрики обычного микросервиса на Spring boot, интегрированного со Spring Boot Admin (далее просто SBA).
👉@BookJava
Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.
Я хотел бы поделиться одним из способов настройки памяти для Java-приложений в Kubernetes. Сразу скажу, что итоговые настройки, к которым мы придём, будут приведены лишь в качестве примера и должны настраиваться индивидуально под каждое приложение. Рассматривать будем настройки и метрики обычного микросервиса на Spring boot, интегрированного со Spring Boot Admin (далее просто SBA).
👉@BookJava
👍3
Media is too big
VIEW IN TELEGRAM
🎥 JEP Café
Java Asynchronous Programming Full Tutorial with Loom and Structured Concurrency #13
Launching 10 millions virtual threads with Loom #12
Java 19 Virtual Threads #11
Leverage Java 17 New Features to Create Your Wordle Checker #10
Refactoring Java 8 code with Java 17 new features #9
Records Patterns, Performance and Serialization #8
String Concatenation #7
Factory Methods for Collections #6
Text Blocks #5
The Packaging Tool aka
Switch Expressions #3
Sealed Classes #2
What is a JEP? #1
Все видео доступны на youtube
👉@BookJava
Java Asynchronous Programming Full Tutorial with Loom and Structured Concurrency #13
Launching 10 millions virtual threads with Loom #12
Java 19 Virtual Threads #11
Leverage Java 17 New Features to Create Your Wordle Checker #10
Refactoring Java 8 code with Java 17 new features #9
Records Patterns, Performance and Serialization #8
String Concatenation #7
Factory Methods for Collections #6
Text Blocks #5
The Packaging Tool aka
jpackage
#4Switch Expressions #3
Sealed Classes #2
What is a JEP? #1
Все видео доступны на youtube
👉@BookJava
👍3
Forwarded from Java Geek
Какая проблема возникнет с этим кодом?
Ответ: Данный код не с компилируется.
Этот вопрос на знание иерархии исключений, в данном случае FileNotFoundException унаследован от IOException, первый catch будет перехватывать все исключения и в следующий блок catch управление не будет передано.
@java_geek
Ответ: Данный код не с компилируется.
Этот вопрос на знание иерархии исключений, в данном случае FileNotFoundException унаследован от IOException, первый catch будет перехватывать все исключения и в следующий блок catch управление не будет передано.
@java_geek
👍1
Можно ли подружить Stream API и JPA?
В этой статье я хотел бы познакомить сообщество с библиотекой JPAstreamer. Идея этой библиотеки очень проста, но в то же время гениальна - получать нужные нам сущности из бд так, как если бы мы просто обрабатывали поток сущностей в стриме.
👉@BookJava
В этой статье я хотел бы познакомить сообщество с библиотекой JPAstreamer. Идея этой библиотеки очень проста, но в то же время гениальна - получать нужные нам сущности из бд так, как если бы мы просто обрабатывали поток сущностей в стриме.
👉@BookJava
👍5
Какие классы вовлечены в соединение с базой данных?
DriverManager управляет всеми JDBC-драйверами в приложении. Представляет набор статических методов. Лениво загружает системным класслоадером доступные предсконфигурированные драйверы:
• По списку полных имен классов из проперти
• Через Service Provider Interface (SPI).
Менеджер занимается созданием экземпляра Connection – ключевого класса при работе с базой данных. Альтернативный менеджеру (и даже рекомендуемый) способ соединения с источником данных – ConnectionBuilder. Билдер получают из
Driver – главный класс реализации JDBC-драйвера. Когда загружается класслоадером, сам регистрирует себя в
Можно явно создавать
DriverAction – дополнительный интерфейс, который должен реализовывать
👉@BookJava
DriverManager управляет всеми JDBC-драйверами в приложении. Представляет набор статических методов. Лениво загружает системным класслоадером доступные предсконфигурированные драйверы:
• По списку полных имен классов из проперти
jdbc.drivers
;• Через Service Provider Interface (SPI).
Менеджер занимается созданием экземпляра Connection – ключевого класса при работе с базой данных. Альтернативный менеджеру (и даже рекомендуемый) способ соединения с источником данных – ConnectionBuilder. Билдер получают из
javax.sql.DataSource
– формально это часть Java EE, так что здесь не будем подробно на нем останавливаться.Driver – главный класс реализации JDBC-драйвера. Когда загружается класслоадером, сам регистрирует себя в
DriverManager
. Так что кроме предсконфигурированных драйверов, дополнительные можно загрузить просто вызвав Class.forName
.Можно явно создавать
Connection
через драйвер, минуя менеджера и билдер. Драйвер предоставляет информацию о возможных/требуемых для своей работы свойствах в виде массива DriverPropertyInfo.DriverAction – дополнительный интерфейс, который должен реализовывать
Driver
, если хочет получать уведомления о разрегистрации DriverManager
-ом.👉@BookJava
👍4