Useful & Unknown Java Libraries
https://piotrminkowski.com/2023/01/30/useful-unknown-java-libraries/
👉@BookJava
https://piotrminkowski.com/2023/01/30/useful-unknown-java-libraries/
👉@BookJava
Запросы к MongoDB из Java с помощью билдера фильтров
https://www.baeldung.com/java-mongodb-filters
👉@BookJava
https://www.baeldung.com/java-mongodb-filters
👉@BookJava
Baeldung
Guide to Filters in MongoDB | Baeldung
Learn how to use Filters builders to perform filter operations on a MongoDB collection.
👍3
Вопросы с реального собеседования Senior Java Developer
00:00 Приветствие
01:34 Введение
02:23 Разбор вопросов и ответов
03:10 Может ли разработчик управлять памятью в Java?
03:40 Как потоки связаны с памятью?
07:28 Spring Context и зачем он нужен?
08:10 Как работает аннотация @ Transactional?
09:45 Как работает транзакция?
10:30 Как работает TDD?
14:17 Выводы
https://www.youtube.com/watch?v=sMGYAucH9yY
👉@BookJava
00:00 Приветствие
01:34 Введение
02:23 Разбор вопросов и ответов
03:10 Может ли разработчик управлять памятью в Java?
03:40 Как потоки связаны с памятью?
07:28 Spring Context и зачем он нужен?
08:10 Как работает аннотация @ Transactional?
09:45 Как работает транзакция?
10:30 Как работает TDD?
14:17 Выводы
https://www.youtube.com/watch?v=sMGYAucH9yY
👉@BookJava
YouTube
Вопросы с реального собеседования Senior Java Developer
Сегодня мы рассмотрим обзор реального интервью на позицию Senior Java Developer.
Поговорим о вопросах и ответах, а главное что из этого всего получилось.
Погнали!
Программа
00:00 Приветствие
01:34 Введение
02:23 Разбор вопросов и ответов
03:10 Может ли…
Поговорим о вопросах и ответах, а главное что из этого всего получилось.
Погнали!
Программа
00:00 Приветствие
01:34 Введение
02:23 Разбор вопросов и ответов
03:10 Может ли…
👍9
Что такое класс Object? Какие в нем есть методы?
Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:
public boolean equals(Object obj) – служит для сравнения объектов по значению;
int hashCode() – возвращает hash код для объекта;
String toString() – возвращает строковое представление объекта;
Class getClass() – возвращает класс объекта во время выполнения;
protected Object clone() – создает и возвращает копию объекта;
void notify() – возобновляет поток, ожидающий монитор;
void notifyAll() – возобновляет все потоки, ожидающие монитор;
void wait() – остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout, int nanos) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
protected void finalize() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
👉@BookJava
Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:
public boolean equals(Object obj) – служит для сравнения объектов по значению;
int hashCode() – возвращает hash код для объекта;
String toString() – возвращает строковое представление объекта;
Class getClass() – возвращает класс объекта во время выполнения;
protected Object clone() – создает и возвращает копию объекта;
void notify() – возобновляет поток, ожидающий монитор;
void notifyAll() – возобновляет все потоки, ожидающие монитор;
void wait() – остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout, int nanos) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
protected void finalize() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
👉@BookJava
Пишем Java-код с помощью Project Lombok
https://www.toptal.com/java/write-fat-free-java-code-project-lombok
👉@BookJava
https://www.toptal.com/java/write-fat-free-java-code-project-lombok
👉@BookJava
Toptal
Write Fat-free Java Code with Project Lombok
Java has some idiosyncrasies of its own and design choices that can make it rather verbose. While Java is a mature and performant programming language, developers frequently need to write boilerplate code that brings little or no real value other than complying…
👍2
Java. Многопоточность
Определение процессов и потоков. Роль операционной системы при работе с потоками. Интерфейс Runnable. Класс Thread. Доступ к объекту потока. Остановка выполнения и прерывание выполнения потока. Остановка текущего потока для окончания другого. Термины, связанные с многопоточностью. Критический участок кода. Семафор, Mutex. Мягкая и обязательная блокировки. Высокоуровневая конструкция Monitor. Взаимодействие потоков. Возможные ошибки одновременного доступа. Модель взаимодействия потоков через общую память. Синхронизация, её методы и состояния. Блокировка объектов. Ситуация Deadlock. Служба в отдельном потоке. Методы wait() и notify(). Контейнеры, безопасные для многопоточного доступа.
https://www.youtube.com/watch?v=dLDhB6SRXzw
👉@BookJava
Определение процессов и потоков. Роль операционной системы при работе с потоками. Интерфейс Runnable. Класс Thread. Доступ к объекту потока. Остановка выполнения и прерывание выполнения потока. Остановка текущего потока для окончания другого. Термины, связанные с многопоточностью. Критический участок кода. Семафор, Mutex. Мягкая и обязательная блокировки. Высокоуровневая конструкция Monitor. Взаимодействие потоков. Возможные ошибки одновременного доступа. Модель взаимодействия потоков через общую память. Синхронизация, её методы и состояния. Блокировка объектов. Ситуация Deadlock. Служба в отдельном потоке. Методы wait() и notify(). Контейнеры, безопасные для многопоточного доступа.
https://www.youtube.com/watch?v=dLDhB6SRXzw
👉@BookJava
YouTube
Java. Многопоточность (лекция 9)
«Технопарк Mail.ru Group» при МГТУ им. Н. Э. Баумана.
Курс «Углублённое программирование на Java» (зима 2015).
Лекция № 9: «Многопоточность».
Лектор — Виталий Чибриков.
Определение процессов и потоков. Роль операционной системы при работе с потоками. Интерфейс…
Курс «Углублённое программирование на Java» (зима 2015).
Лекция № 9: «Многопоточность».
Лектор — Виталий Чибриков.
Определение процессов и потоков. Роль операционной системы при работе с потоками. Интерфейс…
👍9
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.
👉@BookJava
Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.
👉@BookJava
👍8❤1
Интервью с создателем Java Джеймсом Гослингом
Джеймс Гослинг, более известный как отец языка программирования Java, — специалист в области Computer Science из Канады. Он придумал изначальную архитектуру языка программирования Java, написал для него первый компилятор и виртуальную машину. Наш DevRel, Григорий Петров, взял интервью у Джеймса, и мы приводим полный текст этого интервью в русском переводе. Приятного чтения!
https://evrone.ru/james-gosling-interview
👉@BookJava
Джеймс Гослинг, более известный как отец языка программирования Java, — специалист в области Computer Science из Канады. Он придумал изначальную архитектуру языка программирования Java, написал для него первый компилятор и виртуальную машину. Наш DevRel, Григорий Петров, взял интервью у Джеймса, и мы приводим полный текст этого интервью в русском переводе. Приятного чтения!
https://evrone.ru/james-gosling-interview
👉@BookJava
evrone.ru
Интервью создателя Java Джеймса Гослинга для Evrone
Джеймс Гослинг, более известный как отец языка программирования Java, — специалист в области Computer Science из Канады. Он придумал изначальную архитектуру языка программирования Java, написал для него первый компилятор и виртуальную машину. Наш DevRel,…
👍9
Где и как вы можете использовать приватный конструктор?
Приватный (помеченный ключевым словом
👉@BookJava
Приватный (помеченный ключевым словом
private
, скрытый) конструктор может использоваться публичным статическим методом генерации объектов данного класса. Также доступ к нему разрешён вложенным классам и может использоваться для их нужд.👉@BookJava
👍6
Не верьте ChatGPT и используйте KotUniL
В последние недели медиа и социальные сети захлеснул поток сообщений о диалогах с ChatGPT. Только на Хабре поиск по этому термину показывает сегодня полтора десятка статей.
Попробовал пообщаться с ChatGPT и я. Результат общения вынесен в заголовок.
Хотите узнать, почему ChatGPT верить нельзя и почему лучше использовать KotUniL - читайте дальше.
А если вы решили читать дальше, не воспринимайте заголовок буквально. Это все-таки ирония. К сожалению, я не предупредил об этом читателей в первом варианте этой статьи и получил в результате массу минусов.
Итак, как было дело.
Сначала я пообщался с ChatGPT (далее для простоты я буду иногда обозначать его ИИ) на английском, а потом на русском.
https://habr.com/ru/post/707548/
👉@BookJava
В последние недели медиа и социальные сети захлеснул поток сообщений о диалогах с ChatGPT. Только на Хабре поиск по этому термину показывает сегодня полтора десятка статей.
Попробовал пообщаться с ChatGPT и я. Результат общения вынесен в заголовок.
Хотите узнать, почему ChatGPT верить нельзя и почему лучше использовать KotUniL - читайте дальше.
А если вы решили читать дальше, не воспринимайте заголовок буквально. Это все-таки ирония. К сожалению, я не предупредил об этом читателей в первом варианте этой статьи и получил в результате массу минусов.
Итак, как было дело.
Сначала я пообщался с ChatGPT (далее для простоты я буду иногда обозначать его ИИ) на английском, а потом на русском.
https://habr.com/ru/post/707548/
👉@BookJava
👍6
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
Рефлексивность: для любой ссылки на значение
Симметричность: для любых ссылок на значения
Транзитивность: для любых ссылок на значения
Непротиворечивость: для любых ссылок на значения
Для любой ненулевой ссылки на значение
👉@BookJava
Рефлексивность: для любой ссылки на значение
x, x.equals(x)
вернет true
;Симметричность: для любых ссылок на значения
x
и y
, x.equals(y)
должно вернуть true
, тогда и только тогда, когда y.equals(x)
возвращает true
.Транзитивность: для любых ссылок на значения
x
, y
и z
, если x.equals(y)
и y.equals(z)
возвращают true
, тогда и x.equals(z)
вернёт true
;Непротиворечивость: для любых ссылок на значения
х
и у
, если несколько раз вызвать х.equals(y)
, постоянно будет возвращаться значение true
либо постоянно будет возвращаться значение false
при условии, что никакая информация, используемая при сравнении объектов, не поменялась.Для любой ненулевой ссылки на значение
х
выражение х.equals(null)
должно возвращать false
.👉@BookJava
👍6
Как написать на Java функцию, подобную sizeof в C
https://levelup.gitconnected.com/how-to-write-a-c-like-sizeof-function-in-java-9352e646d112
👉@BookJava
https://levelup.gitconnected.com/how-to-write-a-c-like-sizeof-function-in-java-9352e646d112
👉@BookJava
👍3👎2
15 Tips to Become a Java Expert!
https://dev.to/weder96/15-tips-to-become-a-java-expert-1acj
👉@BookJava
https://dev.to/weder96/15-tips-to-become-a-java-expert-1acj
👉@BookJava
👍4
Можно ли хранить null в стандартных коллекциях?
Все интерфейсы Collections Framework позволяют своим реализациям самостоятельно решать, поддерживать ли null-значения. Если реализация не может принять
Большинство списков (
Unmodifiable Maps не допускают null-ов совсем. Обычные изменяемые мапы обычно не испытывают трудности со значениями null. А вот с ключами дело обстоит интереснее.
Иногда этот вопрос дается как задача с подвохом про
Для значений Set-ов действуют те же правила, что для ключей лежащих в основе их Map-ов.
👉@BookJava
Все интерфейсы Collections Framework позволяют своим реализациям самостоятельно решать, поддерживать ли null-значения. Если реализация не может принять
null
, она выбрасывает NullPointerException
или ClassCastException
.Большинство списков (
LinkedList
, ArrayList
) принимают null без проблем. Большинство очередей (Queue
и Deque
) не хранят null – возвращая из читающего метода null они сообщают пользователю о пустоте коллекции.Unmodifiable Maps не допускают null-ов совсем. Обычные изменяемые мапы обычно не испытывают трудности со значениями null. А вот с ключами дело обстоит интереснее.
HashMap
не может посчитать hash-сумму от null. Но вместо этого для таких ключей просто используется бакет номер 0.Иногда этот вопрос дается как задача с подвохом про
TreeMap
. Nullability
её ключей зависит от готовности к этому компаратора. Натуральный порядок (который работает для Comparable ключей) не поддерживает null. Раньше в реализации был баг, который позволял положить значение по ключу null в корень дерева без выброса исключения.Для значений Set-ов действуют те же правила, что для ключей лежащих в основе их Map-ов.
👉@BookJava
👍4
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
https://habr.com/ru/company/jugru/blog/719614/
👉@BookJava
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
https://habr.com/ru/company/jugru/blog/719614/
👉@BookJava
👍8🔥3
Media is too big
VIEW IN TELEGRAM
Собеседование Java Spring - Разбор вопросов с собеседований на Java Developer
Собрали самые интересные вопросы с собеседований на Java-разработчика. В видео две части. В первой рассказываем про Java: Коллекции, Hash Code & Equals Contract, Functional interfaces, Stream API, Garbage collector, устройство памяти, heap, concurrency.
Во второй — про Spring: Spring Beans, Spring Data Repository, Аннотации, Programmatic TM, Spring MVC
источник
👉@BookJava
Собрали самые интересные вопросы с собеседований на Java-разработчика. В видео две части. В первой рассказываем про Java: Коллекции, Hash Code & Equals Contract, Functional interfaces, Stream API, Garbage collector, устройство памяти, heap, concurrency.
Во второй — про Spring: Spring Beans, Spring Data Repository, Аннотации, Programmatic TM, Spring MVC
источник
👉@BookJava
👍13
Содержит множество проектов на Java, которые могут быть полезны при изучении языка
https://github.com/topics/java
👉@BookJava
https://github.com/topics/java
👉@BookJava
GitHub
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.
👍7
Media is too big
VIEW IN TELEGRAM
Java. Распараллеливаем вычисления на пуле потоков
Разбираемся, как можно по простому ускорить вычисления с помощью параллельного выполнения на пуле потоков.
Исходный код
источник
👉@BookJava
Разбираемся, как можно по простому ускорить вычисления с помощью параллельного выполнения на пуле потоков.
Исходный код
источник
👉@BookJava
👍6