Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.87K photos
38 videos
42 files
2.65K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Troubleshooting Java Performance: Detecting Anti-Patterns with Open Source Tools (2017)
Автор: Erik Ostermueller

Это небольшая книга, посвященная некоторому количеству антипаттернов производительности. Читая книгу, вы обнаружите, что большинство проблем, с которыми вы сталкиваетесь, вписываются в какой-либо из этих анти-шаблонов. Автор приводит разнообразные способы нахождения и устранения проблем в ваших проектах.

Скачать книгу
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() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
Создавай цифровые решения будущего и получи приз!

Мы объявляем онлайн-хакатон VirusHack от Ростелекома, организованный в партнерстве с Агентством инноваций Москвы и РАЭК. В нем вы прокачаете свои навыки в разработке технологий, которые помогут людям, бизнесу и государству приспосабливаться к нестандартным условиям жизни.

Победитель реализует свой проект при поддержке крупнейших компаний страны!

Призовой фонд хакатона 2 500 000 рублей!

Онлайн-хакатон пройдет с 3 по 5 мая 2020 года — успейте зарегистрироваться на него до 30 апреля 2020-го: https://proglib.io/w/6cc9408c

Добавляйтесь в чат хакатона: https://bit.ly/2RAQgOx
OutOfMemoryError выбрасывается, когда виртуальная машина Java не может создать (разместить) объект из-за нехватки памяти, а сборщик мусора не может высвободить достаточное её количество.

Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError зависит от того, в какой из них не хватило места:

🔵 java.lang.OutOfMemoryError: Java heap space: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами -Xms и -Xmx.
🔵 java.lang.OutOfMemoryError: PermGen space: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.
🔵 java.lang.OutOfMemoryError: GC overhead limit exceeded: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit.
🔵 java.lang.OutOfMemoryError: unable to create new native thread: Выбрасывается, когда нет возможности создавать новые потоки.
Пожалуйста, присылайте вопросы, которые вам задавали на собеседованиях, в бота @java_interviews_bot (желательно с ответами). Мы будем анонимно публиковать ваши вопросы с решениями в этом канале. Этим вы можете помочь развитию нашего сообщества программистов. Бот: @java_interviews_bot
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Пожалуйста, присылайте вопросы, которые вам задавали на собеседованиях, в бота @java_interviews_bot (желательно с ответами). Мы будем анонимно публиковать ваши вопросы с решениями в этом канале. Этим вы можете помочь развитию нашего сообщества программистов.…»
В Java поля классов и объектов, которые не имеют явного инициализатора, автоматически инициализируются со значением по умолчанию для их типа (false для boolean, 0 для всех числовых типов, null для всех ссылочных типов). Локальные переменные в Java должны быть обязательно инициализированы до того, как к ним будет получен доступ, иначе будет ошибка компиляции.
Java Coding Problems: Improve your Java Programming skills by solving real-world coding challenges (2019)
Автор: Anghel Leonard

Развивайте свои навыки программирования, изучая концепции и техники Java, такие как строки, объекты и типы, структуры данных и алгоритмы, параллелизм и функциональное программирование. В своей книге автор показывает читателям, как применять ООП-подход к распространенным задачам, объясняя правильные методы и решения в отношении сложности, производительности, удобочитаемости и многого другого.

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

Объекты создаются посредством оператора new, тем самым присваивая объекту ссылку. Для окончания работы с объектом достаточно просто перестать на него ссылаться, например присвоив переменной ссылку на другой объект или значение null; прекратить выполнение метода, чтобы его локальные переменные завершили свое существование естественным образом. Объекты, ссылки на которые отсутствуют, принято называть мусором (garbage), который будет удален.

Виртуальная машина Java, применяя механизм сборки мусора, гарантирует, что любой объект, обладающий ссылками, остается в памяти — все объекты, которые недостижимы из исполняемого кода, ввиду отсутствия ссылок на них, удаляются с высвобождением отведенной для них памяти. Точнее говоря, объект не попадает в сферу действия процесса сборки мусора, если он достижим посредством цепочки ссылок, начиная с корневой (GC Root) ссылки, т.е. ссылки, непосредственно существующей в выполняемом коде.

Память освобождается сборщиком мусора по его собственному «усмотрению». Программа может успешно завершить работу, не исчерпав ресурсов свободной памяти или даже не приблизившись к этой черте и поэтому ей так и не потребуются «услуги» сборщика мусора.

Мусор собирается системой автоматически, без вмешательства пользователя или программиста, но это не значит, что этот процесс не требует внимания вовсе. Необходимость создания и удаления большого количества объектов существенным образом сказывается на производительности приложений и если быстродействие программы является важным фактором, следует тщательно обдумывать решения, связанные с созданием объектов, — это, в свою очередь, уменьшит и объем мусора, подлежащего утилизации.
Серия обучающих видео по многопоточности.

https://proglib.io/w/f90bdadd

#course
Варианты 3 и 5 не обязательны, 1 и 4 - не допускают наследование.
#вопросы_с_собеседований
Опишите процесс сериализации/десериализации с использованием Serializable.