From f2f4992622e2cdac41c8466f735f3ffa09e3fec1 Mon Sep 17 00:00:00 2001 From: VINIPOOH <47758583+VINIPOOH@users.noreply.github.com> Date: Wed, 10 Jun 2020 13:36:19 +0300 Subject: [PATCH 001/103] Update io.md https://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html --- io.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io.md b/io.md index 140ff32..fcaefa3 100644 --- a/io.md +++ b/io.md @@ -76,7 +76,6 @@ + `ObjectInputStream` - входной поток для объектов; + `StringBufferInputStream` превращает строку (`String`) во входной поток данных `InputStream`; + `PipedInputStream` реализует понятие входного канала; -+ `PrintStream` - выходной поток, включающий методы `print()` и `println()`; + `PushbackInputStream` - разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток, позволяет «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации. + `SequenceInputStream` используется для слияния двух или более потоков `InputStream` в единый. @@ -118,6 +117,7 @@ + `DataOutputStream` - выходной поток байт, включающий методы для записи стандартных типов данных Java; + `FileOutputStream` - запись данных в файл на физическом носителе; + `FilterOutputStream` - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства; ++ `PrintStream` - выходной поток, включающий методы `print()` и `println()`; + `ObjectOutputStream` - выходной поток для записи объектов; + `PipedOutputStream` реализует понятие выходного канала. From bc4c5be22bb14c16756b98b9caca1ba3123fa883 Mon Sep 17 00:00:00 2001 From: Stanislav Shelemekh Date: Tue, 16 Jun 2020 16:48:39 +0300 Subject: [PATCH 002/103] Corrected small mistake --- jcf.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jcf.md b/jcf.md index a31c2ce..583bc0e 100644 --- a/jcf.md +++ b/jcf.md @@ -264,7 +264,7 @@ FILO, First-In-Last-Out («первым пришел, последним уше + на получение элемента по индексу или значению потребуется _линейное_ время _O(N)_; + на добавление и удаление в начало или конец списка потребуется _константное_ _O(1)_; -+ вставка или удаление в/из произвольного место _константное_ _O(N)_; ++ вставка или удаление в/из произвольного место _константное_ _O(1)_; + требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка. В целом, `LinkedList` в абсолютных величинах проигрывает `ArrayList` и по потребляемой памяти и по скорости выполнения операций. `LinkedList` предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список. From 2c5098396c3e70236bae25497f786c029cc07e8d Mon Sep 17 00:00:00 2001 From: Bilalov_Bulat Date: Fri, 3 Jul 2020 18:40:55 +0300 Subject: [PATCH 003/103] Update oop.md --- oop.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oop.md b/oop.md index 0a57397..a89dd32 100644 --- a/oop.md +++ b/oop.md @@ -151,7 +151,7 @@ __Полиморфизм__ – это свойство системы испол >Любое обучение вождению не имело бы смысла, если бы человек, научившийся водить, скажем, ВАЗ 2106 не мог потом водить ВАЗ 2110 или BMW X3. С другой стороны, трудно представить человека, который смог бы нормально управлять автомобилем, в котором педаль газа находится левее педали тормоза, а вместо руля – джойстик. ->Всё дело в том, что основные элементы управления автомобиля имеют одну и ту же конструкцию и принцип действия. Водитель точно знает, что для того, чтобы повернуть налево, он должен повернуть руль, независимо от того, есть там гидроусилитель или нет. +>Всё дело в том, что основные элементы управления автомобиля имеют одну и ту же конструкцию, и принцип действия. Водитель точно знает, что для того, чтобы повернуть налево, он должен повернуть руль, независимо от того, есть там гидроусилитель или нет. Если человеку надо доехать с работы до дома, то он сядет за руль автомобиля и будет выполнять одни и те же действия, независимо от того, какой именно тип автомобиля он использует. По сути, можно сказать, что все автомобили имеют один и тот же интерфейс, а водитель, абстрагируясь от сущности автомобиля, работает именно с этим интерфейсом. Если водителю предстоит ехать по немецкому автобану, он, вероятно выберет быстрый автомобиль с низкой посадкой, а если предстоит возвращаться из отдалённого маральника в Горном Алтае после дождя, скорее всего, будет выбран УАЗ с армейскими мостами. Но, независимо от того, каким образом будет реализовываться движение и внутреннее функционирование машины, интерфейс останется прежним. _Полиморфная переменная_, это переменная, которая может принимать значения разных типов, а _полиморфная функция_, это функция у которой хотя бы один аргумент является полиморфной переменной. @@ -365,7 +365,7 @@ __«имеет»__ подразумевает ассоциацию (агрега Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых. ->Например, книга состоит из страниц и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. +>Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация. [к оглавлению](#ООП) From 10e57e47084354e3bcb8de495351fc25fc5aefbf Mon Sep 17 00:00:00 2001 From: Bilalov_Bulat Date: Fri, 3 Jul 2020 18:46:53 +0300 Subject: [PATCH 004/103] Update jvm.md --- jvm.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/jvm.md b/jvm.md index 35534d5..bd29956 100644 --- a/jvm.md +++ b/jvm.md @@ -23,14 +23,14 @@ JVM работает с 2мя типами данных: примитивные JVM работает с примитивными значениями (целыми числами и числами с плавающей точкой). По сути, JVM - это 32-битная машина. Типы `long` и `double`, которые являются 64-битными, поддерживаются изначально, но занимают две единицы памяти в `frame's local` или стеке операндов, поскольку каждая единица составляет 32 бита. -Типы `boolean`, `byte`, `short` и `char` имеют расширенный знак (кроме `char` с нулевым расширением) и работают как 32-разрядные целые числа, так же как и типы `int`. +Типы `boolean`, `byte`, `short` и `char` имеют расширенный знак (кроме `char` с нулевым расширением) и работают как 32-разрядные целые числа, так же, как и типы `int`. Меньшие типы имеют только несколько специфических для типа инструкций для загрузки, хранения и преобразования типов. `boolean` значение работает как 8-битное `byte` значения, где 0 представляет значение **false**, а 1 - значение **true**. **Типы ссылок и значения** Существует три типа ссылочных типов: типы классов, типы массивов и типы интерфейсов. -Их значения являются ссылками на динамически создаваемые экземпляры классов, массивы или экземпляры классов или массивы, +Их значения являются ссылками на динамически создаваемые экземпляры классов, массивы или экземпляры классов, которые реализуют интерфейсы соответственно. [к оглавлению](#jvm) @@ -87,7 +87,7 @@ JVM работает с примитивными значениями (целы ## Области данных времени выполнения Run-Time Data Areas. JVM выделяет множество областей данных во время выполнения, к-рые используются во время выполнения программы. Некоторые участки данных -созданы JVM во время старта и уничтожаются во время её выключения. Другие создаются для каждого потока и уничтожаются когда поток уничтожается. +созданы JVM во время старта и уничтожаются во время её выключения. Другие создаются для каждого потока и уничтожаются, когда поток уничтожается. **The pc Register (PCR)** @@ -116,7 +116,7 @@ JVM не предполагает какого-либо конкретного **Method Area** JVM имеет область методов, которая является общей для всех потоков. Она хранит структуры для каждого класса, такие как пул констант, данные полей и методов, -а также код для методов и конструкторов, включая специальные методы, используемые при инициализации классов и экземпляров и инициализации интерфейса. +а также код для методов и конструкторов, включая специальные методы, используемые при инициализации классов и экземпляров, и инициализации интерфейса. Хотя область метода является логически частью кучи, простые реализации могут не обрабатываться собиращиком мусора. Область метода может иметь фиксированный размер или может быть расширена в соответствии с требованиями вычислений и может быть сокращена, если большая область метода становится ненужной. @@ -141,7 +141,7 @@ Frame используется для хранения данных и част является ли это завершение нормальным или резким (он генерирует неперехваченное исключение). Frames выделяются из стека потока, создающего frame. Каждый frame имеет свой собственный массив локальных переменных, свой собственный стек операндов и ссылку на пул констант во время выполнения класса текущего метода. Размеры массива локальных переменных и стека операндов определяются во время компиляции и предоставляются вместе с кодом для метода, связанного с фреймом. -Таким образом, размер структуры данных frame-а зависит только от реализации виртуальной машины Java, и память для этих структур может быть выделена одновременно при вызове метода. +Таким образом, размер структуры данных, frame-а зависит только от реализации виртуальной машины Java, и память для этих структур может быть выделена одновременно при вызове метода. Только один frame активен в любой точке данного потока управления - метода выполнения, и это frame называется текущим, а его метод известен как текущий метод. Класс, в котором определен текущий метод, является текущим классом. Операции над локальными переменными и стеком операндов обычно выполняются со ссылкой на текущий frame. @@ -202,7 +202,7 @@ JVM использует локальные переменные для пере **Резкое завершение вызова метода** Вызов метода завершается преждевременно, если при выполнении инструкции JVM в методе выдает исключение, и это исключение не обрабатывается в методе. -Выполнение команды **athrow** также приводит к явному выбрасыванию исключения, и если исключение не перехватывается текущим методом, +Выполнение команды **athrow** также приводит к явному выбрасыванию исключения, и, если исключение не перехватывается текущим методом, приводит к неожиданному завершению вызова метода. Вызов метода, который завершается внезапно, никогда не возвращает значение своему вызывающему. [к оглавлению](#jvm) @@ -213,7 +213,7 @@ JVM использует локальные переменные для пере **Interpreter** -Интерпретатор интерпретирует байт-код быстро, но выполняется медленно. Недостаток интерпретатора заключается в том, что когда один метод вызывается несколько раз, каждый раз требуется новая интерпретация. +Интерпретатор интерпретирует байт-код быстро, но выполняется медленно. Недостаток интерпретатора заключается в том, что, когда один метод вызывается несколько раз, каждый раз требуется новая интерпретация. **JIT Compiler** From 92ac2cc58841598ec4e68feaa09d9220c1f204fc Mon Sep 17 00:00:00 2001 From: Bilalov_Bulat Date: Fri, 3 Jul 2020 19:07:07 +0300 Subject: [PATCH 005/103] Update core.md --- core.md | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/core.md b/core.md index 14bf6a5..39f2554 100644 --- a/core.md +++ b/core.md @@ -44,7 +44,7 @@ + [Для чего нужен сборщик мусора?](#Для-чего-нужен-сборщик-мусора) + [Как работает сборщик мусора?](#Как-работает-сборщик-мусора) + [Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?](#Какие-разновидности-сборщиков-мусора-реализованы-в-виртуальной-машине-hotspot) -+ [Опишите алгоритм работы какого-нибудь сборщика мусора реализованного в виртуальной машине HotSpot.](#Опишите-алгоритм-работы-какого-нибудь-сборщика-мусора-реализованного-в-виртуальной-машине-hotspot) ++ [Опишите алгоритм работы какого-нибудь сборщика мусора, реализованного в виртуальной машине HotSpot.](#Опишите-алгоритм-работы-какого-нибудь-сборщика-мусора-реализованного-в-виртуальной-машине-hotspot) + [Что такое «пул строк»?](#Что-такое-пул-строк) + [Что такое `finalize()`? Зачем он нужен?](#Что-такое-finalize-Зачем-он-нужен) + [Что произойдет со сборщиком мусора, если выполнение метода `finalize()` требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?](#Что-произойдет-со-сборщиком-мусора-если-выполнение-метода-finalize-требует-ощутимо-много-времени-или-в-процессе-выполнения-будет-выброшено-исключение) @@ -255,7 +255,7 @@ public static void main(String[] args) {} ## Может ли объект получить доступ к члену класса объявленному как `private`? Если да, то каким образом? + Внутри класса доступ к приватной переменной открыт без ограничений; + Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса; -+ Доступ к приватным переменным извне может быть организован через отличные от приватных методы, которые предоставлены разработчиком класса. Например: `getX()` и `setX()`. ++ Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса. Например: `getX()` и `setX()`. + Через механизм рефлексии (Reflection API): ```java @@ -389,7 +389,7 @@ public class TestClass { [к оглавлению](#java-core) ## Для чего в Java используются статические блоки инициализации? -Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса `Class`). +Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса `Class`). [к оглавлению](#java-core) @@ -411,9 +411,9 @@ public class TestClass { [к оглавлению](#java-core) ## Может ли статический метод быть переопределён или перегружен? -Перегружен - да. Всё работает точно так же как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается. +Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается. -Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода это вполне корректная языковая конструкция. +Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция. В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект. @@ -451,7 +451,7 @@ super.method(); [к оглавлению](#java-core) ## В чем разница между членом экземпляра класса и статическим членом класса? -Модификатор `static` говорит о том, что данный метод или поле принадлежат самому классу и доступ к ним возможен даже без создания экземпляра класса. Поля помеченные `static` инициализируются при инициализации класса. На методы, объявленные как `static`, накладывается ряд ограничений: +Модификатор `static` говорит о том, что данный метод или поле принадлежат самому классу и доступ к ним возможен даже без создания экземпляра класса. Поля, помеченные `static` инициализируются при инициализации класса. На методы, объявленные как `static`, накладывается ряд ограничений: + Они могут вызывать только другие статические методы. + Они должны осуществлять доступ только к статическим переменным. @@ -553,7 +553,7 @@ Val from non-static + Для создания объекта статического вложенного класса объект внешнего класса не требуется. + Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса. + Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут. -+ В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статического такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание `.this` после его имени. Например: `Outer.this`. ++ В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статической такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание `.this` после его имени. Например: `Outer.this`. [к оглавлению](#java-core) @@ -581,7 +581,7 @@ __Local inner class__ (Локальный класс) - это вложенны Анонимные классы обычно применяются для: -+ создания объекта функции (_function object_), например реализация интерфейса `Comparator`; ++ создания объекта функции (_function object_), например, реализация интерфейса `Comparator`; + создания объекта процесса (_process object_), такого как экземпляры классов `Thread`, `Runnable` и подобных; + в статическом методе генерации; + инициализации открытого статического поля `final`, которое соответствует сложному перечислению типов, когда для каждого экземпляра в перечислении требуется отдельный подкласс. @@ -621,7 +621,7 @@ __Stack (стек)__ это область хранения данных так Различия между _Heap_ и _Stack_ памятью: + Куча используется всеми частями приложения в то время как стек используется только одним потоком исполнения программы. + Всякий раз, когда создается объект, он всегда хранится в куче, а в памяти стека содержится лишь ссылка на него. Память стека содержит только локальные переменные примитивных типов и ссылки на объекты в куче. -+ Объекты в куче доступны с любой точке программы, в то время как стековая память не может быть доступна для других потоков. ++ Объекты в куче доступны с любой точки программы, в то время как стековая память не может быть доступна для других потоков. + Стековая память существует лишь какое-то время работы программы, а память в куче живет с самого начала до конца работы программы. + Если память стека полностью занята, то Java Runtime бросает исключение `java.lang.StackOverflowError`. Если заполнена память кучи, то бросается исключение `java.lang.OutOfMemoryError: Java Heap Space`. + Размер памяти стека намного меньше памяти в куче. @@ -714,7 +714,7 @@ __Reference counting__ (подсчёт ссылок). Суть этого под ## Как работает сборщик мусора? Механизм сборки мусора - это процесс освобождения места в куче, для возможности добавления новых объектов. -Объекты создаются посредством оператора `new`, тем самым присваивая объекту ссылку. Для окончания работы с объектом достаточно просто перестать на него ссылаться, например присвоив переменной ссылку на другой объект или значение `null`; прекратить выполнение метода, чтобы его локальные переменные завершили свое существование естественным образом. Объекты, ссылки на которые отсутствуют, принято называть мусором (_garbage_), который будет удален. +Объекты создаются посредством оператора `new`, тем самым присваивая объекту ссылку. Для окончания работы с объектом достаточно просто перестать на него ссылаться, например, присвоив переменной ссылку на другой объект или значение `null`; прекратить выполнение метода, чтобы его локальные переменные завершили свое существование естественным образом. Объекты, ссылки на которые отсутствуют, принято называть мусором (_garbage_), который будет удален. Виртуальная машина Java, применяя механизм сборки мусора, гарантирует, что любой объект, обладающий ссылками, остается в памяти — все объекты, которые недостижимы из исполняемого кода, ввиду отсутствия ссылок на них, удаляются с высвобождением отведенной для них памяти. Точнее говоря, объект не попадает в сферу действия процесса сборки мусора, если он достижим посредством цепочки ссылок, начиная с корневой (_GC Root_) ссылки, т.е. ссылки, непосредственно существующей в выполняемом коде. @@ -734,8 +734,8 @@ Java HotSpot VM предоставляет разработчикам на вы [к оглавлению](#java-core) -## Опишите алгоритм работы какого-нибудь сборщика мусора реализованного в виртуальной машине HotSpot. -__Serial Garbage Collector (Последовательный сборщик мусора)__ был одним из первых сборщиков мусора в HotSpot VM. Во время работы этого сборщика приложения приостанавливается и продолжает работать только после прекращение сборки мусора. +## Опишите алгоритм работы какого-нибудь сборщика мусора, реализованного в виртуальной машине HotSpot. +__Serial Garbage Collector (Последовательный сборщик мусора)__ был одним из первых сборщиков мусора в HotSpot VM. Во время работы этого сборщика приложения приостанавливается и продолжает работать только после прекращения сборки мусора. Память приложения делится на три пространства: @@ -757,12 +757,12 @@ __Serial Garbage Collector (Последовательный сборщик му Когда свободная память представляет собой непрерывную область, то для выделения памяти под создаваемый объект можно использовать очень быстрый (около десятка машинных инструкций) алгоритм _bump-the-pointer_: адрес начала свободной памяти хранится в специальном указателе, и когда поступает запрос на создание нового объекта, код проверяет, что для нового объекта достаточно места, и, если это так, то просто увеличивает указатель на размер объекта. -Последовательный сборщик мусора отлично подходит для большинства приложений, использующих до 200 мегабайт кучи, работающих на машинах клиентского типа и не предъявляющих жёстких требований к величине пауз, затрачиваемых на сборку мусора. В то же время модель «stop-the-world» может вызвать длительные паузы в работе приложения при использовании больших объёмов памяти. Кроме того, последовательный алгоритм работы не позволяет оптимально использовать вычислительные ресурсы компьютера и последовательный сборщик мусора может стать узким местом при работе приложения на многопроцессорных машинах. +Последовательный сборщик мусора отлично подходит для большинства приложений, использующих до 200 мегабайт кучи, работающих на машинах клиентского типа и не предъявляющих жёстких требований к величине пауз, затрачиваемых на сборку мусора. В то же время модель «stop-the-world» может вызвать длительные паузы в работе приложения при использовании больших объёмов памяти. Кроме того, последовательный алгоритм работы не позволяет оптимально использовать вычислительные ресурсы компьютера, и последовательный сборщик мусора может стать узким местом при работе приложения на многопроцессорных машинах. [к оглавлению](#java-core) ## Что такое «пул строк»? -__Пул строк__ – это набор строк хранящийся в _Heap_. +__Пул строк__ – это набор строк, хранящийся в _Heap_. + Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк; + Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени; @@ -938,7 +938,7 @@ Java является строго типизированным языком п + __Расширение объектного типа (widening reference)__. Означает неявное восходящее приведение типов или переход от более конкретного типа к менее конкретному, т.е. переход от потомка к предку. Разрешено всегда и происходит автоматически. + __Сужение объектного типа (narrowing reference)__. Означает нисходящее приведение, то есть приведение от предка к потомку (подтипу). Возможно только если исходная переменная является подтипом приводимого типа. При несоответствии типов в момент выполнения выбрасывается исключение `ClassCastException`. Требует явного указания типа. + __Преобразование к строке (to String)__. Любой тип может быть приведен к строке, т.е. к экземпляру класса `String`. -+ __Запрещенные преобразования (forbidden)__. Не все приведения между произвольными типами допустимы. Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке). Кроме того невозможно привести друг к другу классы находящиеся на разных ветвях дерева наследования и т.п. ++ __Запрещенные преобразования (forbidden)__. Не все приведения между произвольными типами допустимы. Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке). Кроме того, невозможно привести друг к другу классы, находящиеся на разных ветвях дерева наследования и т.п. При приведении ссылочных типов с самим объектом ничего не происходит, - меняется лишь тип ссылки, через которую происходит обращение к объекту. @@ -973,14 +973,14 @@ __Автоупаковка__ - это механизм неявной иници a) присвоение примитива обертке может производится только оператором `=` (нельзя передать такой примитив в параметры метода без явного приведения типов) b) тип левого операнда не должен быть старше чем `Character`, тип правого не дожен старше, чем `int`: допустимо расширение/сужение `byte` в/из `short`, `byte` в/из `char`, `short` в/из `char` и только сужение `byte` из `int`, `short` из `int`, `char` из `int`. Все остальные варианты требуют явного приведения типов). -Дополнительной особенностью целочисленных классов-оберток созданных автоупаковкой констант в диапазоне `-128 ... +127` я вляется то, что они кэшируются JVM. Поэтому такие обертки с одинаковыми значениями будут являться ссылками на один объект. +Дополнительной особенностью целочисленных классов-оберток, созданных автоупаковкой констант в диапазоне `-128 ... +127` я вляется то, что они кэшируются JVM. Поэтому такие обертки с одинаковыми значениями будут являться ссылками на один объект. [к оглавлению](#java-core) ## Какие есть особенности класса `String`? + Это неизменяемый (immutable) и финализированный тип данных; + Все объекты класса `String` JVM хранит в пуле строк; -+ Объект класса `String` можно получить используя двойные кавычки; ++ Объект класса `String` можно получить, используя двойные кавычки; + Можно использовать оператор `+` для конкатенации строк; + Начиная с Java 7 строки можно использовать в конструкции `switch`. @@ -998,7 +998,7 @@ __Автоупаковка__ - это механизм неявной иници [к оглавлению](#java-core) ## Почему `char[]` предпочтительнее `String` для хранения пароля? -С момента создания строка остаётся в пуле, до тех пор пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. +С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке. [к оглавлению](#java-core) @@ -1018,7 +1018,7 @@ __Автоупаковка__ - это механизм неявной иници + участвующие строки чувствительны к регистру; + используется метод `equals()` для сравнения полученного значения со значениями `case`, поэтому во избежание `NullPointerException` стоит предусмотреть проверку на `null`. -+ согласно документации Java 7 для строк в `switch`, компилятор Java формирует более эффективный байткод для строк в конструкции `switch`, чем для сцепленных условий `if`-`else`. ++ согласно документации, Java 7 для строк в `switch`, компилятор Java формирует более эффективный байткод для строк в конструкции `switch`, чем для сцепленных условий `if`-`else`. [к оглавлению](#java-core) @@ -1050,7 +1050,7 @@ __Автоупаковка__ - это механизм неявной иници [к оглавлению](#java-core) ## Дайте определение понятию «конструктор». -__Конструктор__ — это специальный метод у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия необходимые для его инициализации. +__Конструктор__ — это специальный метод, у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия необходимые для его инициализации. [к оглавлению](#java-core) @@ -1091,7 +1091,7 @@ public class ClassName() {} + _Loading_ – на этой фазе происходит поиск и физическая загрузка файла класса в определенном источнике (в зависимости от загрузчика). Этот процесс определяет базовое представление класса в памяти. На этом этапе такие понятия как «методы», «поля» и т.д. пока не известны. + _Linking_ – процесс, который может быть разбит на 3 части: - + _Bytecode verification_ – проверка байт-кода на соответствие требованиям определенным в спецификации JVM. + + _Bytecode verification_ – проверка байт-кода на соответствие требованиям, определенным в спецификации JVM. + _Class preparation_ – создание и инициализация необходимых структур, используемых для представления полей, методов, реализованных интерфейсов и т.п., определенных в загружаемом классе. + _Resolving_ – загрузка набора классов, на которые ссылается загружаемый класс. + _Initialization_ – вызов статических блоков инициализации и присваивание полям класса значений по умолчанию. @@ -1128,7 +1128,7 @@ __Рефлексия (Reflection)__ - это механизм получения ## Зачем нужен `equals()`. Чем он отличается от операции `==`? Метод `equals()` - определяет отношение эквивалентности объектов. -При сравнение объектов с помощью `==` сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком `equals()` - по внутреннему состоянию объектов. +При сравнении объектов с помощью `==` сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком `equals()` - по внутреннему состоянию объектов. [к оглавлению](#java-core) @@ -1191,7 +1191,7 @@ public native int hashCode(); ## Каковы правила переопределения метода `Object.hashCode()`? ## Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете `hashCode()`? -Общий совет: выбирать поля, которые с большой долью вероятности будут различаться. Для этого необходимо использовать уникальные, лучше всего примитивные поля, например такие как `id`, `uuid`. При этом нужно следовать правилу, если поля задействованы при вычислении `hashCode()`, то они должны быть задействованы и при выполнении `equals()`. +Общий совет: выбирать поля, которые с большой долью вероятности будут различаться. Для этого необходимо использовать уникальные, лучше всего примитивные поля, например, такие как `id`, `uuid`. При этом нужно следовать правилу, если поля задействованы при вычислении `hashCode()`, то они должны быть задействованы и при выполнении `equals()`. [к оглавлению](#java-core) @@ -1274,7 +1274,7 @@ __Глубокое копирование__ дублирует абсолютн [к оглавлению](#java-core) ## Какой способ клонирования предпочтительней? -Наиболее безопасным и следовательно предпочтительным способом клонирования является использование специализированного конструктора копирования: +Наиболее безопасным и, следовательно, предпочтительным способом клонирования является использование специализированного конструктора копирования: + Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод `clone()`); + Поля для клонирования указываются явно; @@ -1300,8 +1300,8 @@ __Исключения (Exceptions)__ являются результатом п ## Что такое _checked_ и _unchecked exception_? В Java все исключения делятся на два типа: -+ __checked (контролируемые/проверяемые исключения)__ должны обрабатываться блоком `catch` или описываться в сигнатуре метода (например `throws IOException`). Наличие такого обработчика/модификатора сигнатуры проверяются на этапе компиляции; -+ __unchecked (неконтролируемые/непроверяемые исключения)__, к которым относятся ошибки `Error` (например `OutOfMemoryError`), обрабатывать которые не рекомендуется и исключения времени выполнения, представленные классом `RuntimeException` и его наследниками (например `NullPointerException`), которые могут не обрабатываться блоком `catch` и не быть описанными в сигнатуре метода. ++ __checked (контролируемые/проверяемые исключения)__ должны обрабатываться блоком `catch` или описываться в сигнатуре метода (например, `throws IOException`). Наличие такого обработчика/модификатора сигнатуры проверяются на этапе компиляции; ++ __unchecked (неконтролируемые/непроверяемые исключения)__, к которым относятся ошибки `Error` (например, `OutOfMemoryError`), обрабатывать которые не рекомендуется и исключения времени выполнения, представленные классом `RuntimeException` и его наследниками (например, `NullPointerException`), которые могут не обрабатываться блоком `catch` и не быть описанными в сигнатуре метода. [к оглавлению](#java-core) From cec5fd8ee2f71ea52cd9313e042a3ab6548da3e6 Mon Sep 17 00:00:00 2001 From: Bilalov_Bulat Date: Fri, 3 Jul 2020 19:14:11 +0300 Subject: [PATCH 006/103] Update jcf.md --- jcf.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/jcf.md b/jcf.md index 583bc0e..8a6ed74 100644 --- a/jcf.md +++ b/jcf.md @@ -8,7 +8,7 @@ + [В чем разница между классами `java.util.Collection` и `java.util.Collections`?](#В-чем-разница-между-классами-javautilcollection-и-javautilcollections) + [Что такое «fail-fast поведение»?](#Что-такое-fail-fast-поведение) + [Какая разница между fail-fast и fail-safe?](#Какая-разница-между-fail-fast-и-fail-safe) -+ [Приведите примеры итераторов реализующих поведение fail-safe](#Приведите-примеры-итераторов-реализующих-поведение-fail-safe) ++ [Приведите примеры итераторов, реализующих поведение fail-safe](#Приведите-примеры-итераторов-реализующих-поведение-fail-safe) + [Чем различаются `Enumeration` и `Iterator`.](#Чем-различаются-enumeration-и-iterator) + [Как между собой связаны `Iterable` и `Iterator`?](#Как-между-собой-связаны-iterable-и-iterator) + [Как между собой связаны `Iterable`, `Iterator` и «for-each»?](#Как-между-собой-связаны-iterable-iterator-и-for-each) @@ -117,7 +117,7 @@ _«Коллекция»_ - это структура данных, набор к + `Hashtable` — хэш-таблица, методы которой синхронизированы. Не позволяет использовать `null` в качестве значения или ключа и не является упорядоченной. + `HashMap` — хэш-таблица. Позволяет использовать `null` в качестве значения или ключа и не является упорядоченной. + `LinkedHashMap` — упорядоченная реализация хэш-таблицы. -+ `TreeMap` — реализация основанная на красно-чёрных деревьях. Является упорядоченной и предоставляет возможность управлять порядком элементов в коллекции при помощи объекта `Comparator`, либо сохраняет элементы с использованием «natural ordering». ++ `TreeMap` — реализация, основанная на красно-чёрных деревьях. Является упорядоченной и предоставляет возможность управлять порядком элементов в коллекции при помощи объекта `Comparator`, либо сохраняет элементы с использованием «natural ordering». + `WeakHashMap` — реализация хэш-таблицы, которая организована с использованием _weak references_ для ключей (сборщик мусора автоматически удалит элемент из коллекции при следующей сборке мусора, если на ключ этого элемента нет жёстких ссылок). [к оглавлению](#java-collections-framework) @@ -166,7 +166,7 @@ __fail-fast поведение__ означает, что при возникн [к оглавлению](#java-collections-framework) -## Приведите примеры итераторов реализующих поведение fail-safe +## Приведите примеры итераторов, реализующих поведение fail-safe Итератор коллекции `CopyOnWriteArrayList` и итератор представления `keySet` коллекции `ConcurrentHashMap` являются примерами итераторов fail-safe. [к оглавлению](#java-collections-framework) @@ -256,8 +256,8 @@ FILO, First-In-Last-Out («первым пришел, последним уше + доступ к произвольному элементу по индексу за _константное_ время _O(1)_; + доступ к элементам по значению за _линейное_ время _O(N)_; + вставка в конец в среднем производится за _константное_ время _O(1)_; -+ удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется); -+ вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо; ++ удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется); ++ вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо; + минимум накладных расходов при хранении. `LinkedList`: @@ -267,7 +267,7 @@ FILO, First-In-Last-Out («первым пришел, последним уше + вставка или удаление в/из произвольного место _константное_ _O(1)_; + требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка. -В целом, `LinkedList` в абсолютных величинах проигрывает `ArrayList` и по потребляемой памяти и по скорости выполнения операций. `LinkedList` предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список. +В целом, `LinkedList` в абсолютных величинах проигрывает `ArrayList` и по потребляемой памяти, и по скорости выполнения операций. `LinkedList` предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список. [к оглавлению](#java-collections-framework) @@ -279,7 +279,7 @@ FILO, First-In-Last-Out («первым пришел, последним уше [к оглавлению](#java-collections-framework) ## Какое худшее время работы метода `contains()` для элемента, который есть в `LinkedList`? -_O(N)_. Время поиска элемента линейно пропорционально количеству элементов с списке. +_O(N)_. Время поиска элемента линейно пропорционально количеству элементов в списке. [к оглавлению](#java-collections-framework) @@ -307,7 +307,7 @@ _O(N)_. Вставка элемента в конец списка осущес ## Как происходит удаление элементов из `ArrayList`? Как меняется в этом случае размер `ArrayList`? -При удалении произвольного элемента из списка, все элементы находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой `trimToSize()`. +При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой `trimToSize()`. [к оглавлению](#java-collections-framework) @@ -481,9 +481,9 @@ private static class Node { ## Сравните интерфейсы `Queue` и `Deque`. ## Кто кого расширяет: `Queue` расширяет `Deque`, или `Deque` расширяет `Queue`? -`Queue` - это очередь, которая обычно (но необязательно) строится по принципу FIFO (First-In-First-Out) - соответственно извлечение элемента осуществляется с начала очереди, вставка элемента - в конец очереди. Хотя этот принцип нарушает, к примеру `PriorityQueue`, использующая «natural ordering» или переданный `Comparator` при вставке нового элемента. +`Queue` - это очередь, которая обычно (но необязательно) строится по принципу FIFO (First-In-First-Out) - соответственно извлечение элемента осуществляется с начала очереди, вставка элемента - в конец очереди. Хотя этот принцип нарушает, к примеру, `PriorityQueue`, использующая «natural ordering» или переданный `Comparator` при вставке нового элемента. -`Deque` (Double Ended Queue) расширяет `Queue` и согласно документации это линейная коллекция, поддерживающая вставку/извлечение элементов с обоих концов. Помимо этого реализации интерфейса `Deque` могут строится по принципу FIFO, либо LIFO. +`Deque` (Double Ended Queue) расширяет `Queue` и согласно документации, это линейная коллекция, поддерживающая вставку/извлечение элементов с обоих концов. Помимо этого, реализации интерфейса `Deque` могут строится по принципу FIFO, либо LIFO. Реализации и `Deque`, и `Queue` обычно не переопределяют методы `equals()` и `hashCode()`, вместо этого используются унаследованные методы класса Object, основанные на сравнении ссылок. @@ -512,7 +512,7 @@ private static class Node { [к оглавлению](#java-collections-framework) ## `Stack` считается «устаревшим». Чем его рекомендуют заменять? Почему? -`Stack` был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции `Vector`, хотя это несколько нарушает понятие стека (например, класс `Vector` предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления `push()`) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса `Deque`, рекомендуется использовать реализации именно этого интерфейса, например `ArrayDeque`. +`Stack` был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции `Vector`, хотя это несколько нарушает понятие стека (например, класс `Vector` предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления `push()`) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса `Deque`, рекомендуется использовать реализации именно этого интерфейса, например, `ArrayDeque`. [к оглавлению](#java-collections-framework) From 9f70a9995508fac6174320f4adbfc159d3551c9d Mon Sep 17 00:00:00 2001 From: Bilalov_Bulat Date: Fri, 3 Jul 2020 19:21:04 +0300 Subject: [PATCH 007/103] Update java8.md --- java8.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/java8.md b/java8.md index 333323f..45baa95 100644 --- a/java8.md +++ b/java8.md @@ -126,7 +126,7 @@ public static void main(String[] args) { operation = (int x, int y) -> x + y; //При написании самого лямбда-выражения тип параметров разрешается не указывать: (x, y) -> x + y; -//Если метод не принимает никаких параметров, то пишутся пустые скобки, например: +//Если метод не принимает никаких параметров, то пишутся пустые скобки, например, () -> 30 + 20; //Если метод принимает только один параметр, то скобки можно опустить: n -> n * n; @@ -230,7 +230,7 @@ public static void main(String[] args) { ## Какие виды ссылок на методы вы знаете? + на статический метод; + на метод экземпляра; -+ на конструктор. ++ на конструкторе. [к оглавлению](#java-8) @@ -259,9 +259,9 @@ Function backToString = toInteger.andThen(String::valueOf); backToString.apply("123"); // "123" ``` -+ `DoubleFunction` - функция получающая на вход `Double` и возвращающая на выходе экземпляр класса `R`; -+ `IntFunction` - функция получающая на вход `Integer` и возвращающая на выходе экземпляр класса `R`; -+ `LongFunction` - функция получающая на вход `Long` и возвращающая на выходе экземпляр класса `R`. ++ `DoubleFunction` - функция, получающая на вход `Double` и возвращающая на выходе экземпляр класса `R`; ++ `IntFunction` - функция, получающая на вход `Integer` и возвращающая на выходе экземпляр класса `R`; ++ `LongFunction` - функция, получающая на вход `Long` и возвращающая на выходе экземпляр класса `R`. [к оглавлению](#java-8) @@ -273,9 +273,9 @@ UnaryOperator operator = x -> x * x; System.out.println(operator.apply(5)); // 25 ``` -+ `DoubleUnaryOperator` - унарный оператор получающий на вход `Double`; -+ `IntUnaryOperator` - унарный оператор получающий на вход `Integer`; -+ `LongUnaryOperator` - унарный оператор получающий на вход `Long`. ++ `DoubleUnaryOperator` - унарный оператор, получающий на вход `Double`; ++ `IntUnaryOperator` - унарный оператор, получающий на вход `Integer`; ++ `LongUnaryOperator` - унарный оператор, получающий на вход `Long`. [к оглавлению](#java-8) @@ -286,9 +286,9 @@ BinaryOperator operator = (a, b) -> a + b; System.out.println(operator.apply(1, 2)); // 3 ``` -+ `DoubleBinaryOperator` - бинарный оператор получающий на вход `Double`; -+ `IntBinaryOperator` - бинарный оператор получающий на вход `Integer`; -+ `LongBinaryOperator` - бинарный оператор получающий на вход `Long`. ++ `DoubleBinaryOperator` - бинарный оператор, получающий на вход `Double`; ++ `IntBinaryOperator` - бинарный оператор, получающий на вход `Integer`; ++ `LongBinaryOperator` - бинарный оператор, получающий на вход `Long`. [к оглавлению](#java-8) @@ -303,9 +303,9 @@ predicate.test("foo"); // true predicate.negate().test("foo"); // false ``` -+ `DoublePredicate` - предикат получающий на вход `Double`; -+ `IntPredicate` - предикат получающий на вход `Integer`; -+ `LongPredicate` - предикат получающий на вход `Long`. ++ `DoublePredicate` - предикат, получающий на вход `Double`; ++ `IntPredicate` - предикат, получающий на вход `Integer`; ++ `LongPredicate` - предикат, получающий на вход `Long`. [к оглавлению](#java-8) @@ -317,9 +317,9 @@ Consumer hello = (name) -> System.out.println("Hello, " + name); hello.accept("world"); ``` -+ `DoubleConsumer` - потребитель получающий на вход `Double`; -+ `IntConsumer` - потребитель получающий на вход `Integer`; -+ `LongConsumer` - потребитель получающий на вход `Long`. ++ `DoubleConsumer` - потребитель, получающий на вход `Double`; ++ `IntConsumer` - потребитель, получающий на вход `Integer`; ++ `LongConsumer` - потребитель, получающий на вход `Long`. [к оглавлению](#java-8) @@ -331,9 +331,9 @@ Supplier now = LocalDateTime::now; now.get(); ``` -+ `DoubleSupplier` - поставщик возвращающий `Double`; -+ `IntSupplier` - поставщик возвращающий `Integer`; -+ `LongSupplier` - поставщик возвращающий `Long`. ++ `DoubleSupplier` - поставщик, возвращающий `Double`; ++ `IntSupplier` - поставщик, возвращающий `Integer`; ++ `LongSupplier` - поставщик, возвращающий `Long`. [к оглавлению](#java-8) @@ -489,7 +489,7 @@ optional.orElse("ops..."); // "hello" Стримы создаются на основе источников каких-либо, например классов из `java.util.Collection`. -Ассоциативные массивы (maps), например `HashMap`, не поддерживаются. +Ассоциативные массивы (maps), например, `HashMap`, не поддерживаются. Операции над стримами могут выполняться как последовательно, так и параллельно. @@ -497,7 +497,7 @@ optional.orElse("ops..."); // "hello" Кроме универсальных объектных существуют особые виды стримов для работы с примитивными типами данных `int`, `long` и `double`: `IntStream`, `LongStream` и `DoubleStream`. Эти примитивные стримы работают так же, как и обычные объектные, но со следующими отличиями: -+ используют специализированные лямбда-выражения, например `IntFunction` или `IntPredicate` вместо `Function` и `Predicate`; ++ используют специализированные лямбда-выражения, например, `IntFunction` или `IntPredicate` вместо `Function` и `Predicate`; + поддерживают дополнительные конечные операции `sum()`, `average()`, `mapToObj()`. [к оглавлению](#java-8) @@ -541,7 +541,7 @@ Stream fromGenerate = Stream.generate(() -> "0"); ## В чем разница между `Collection` и `Stream`? Коллекции позволяют работать с элементами по-отдельности, тогда как стримы так делать не позволяют, но вместо этого предоставляют возможность выполнять функции над данными как над одним целым. -Также стоит отметить важность самой концепции сущностей: `Collection` - это прежде всего воплощение _Структуры Данных_. Например `Set` не просто хранит в себе элементы, он реализует идею множества с уникальными элементами, +Также стоит отметить важность самой концепции сущностей: `Collection` - это прежде всего воплощение _Структуры Данных_. Например, `Set` не просто хранит в себе элементы, он реализует идею множества с уникальными элементами, тогда как `Stream`, это прежде всего абстракция необходимая для реализации _конвеера вычислений_, собственно поэтому, результатом работы конвеера являются те или иные _Структуры Данных_ или же результаты проверок/поиска и т.п. [к оглавлению](#java-8) @@ -649,7 +649,7 @@ collection + Количество ядер процессора. Теоретически, чем больше ядер в компьютере, тем быстрее программа будет работать. Если на машине одно ядро, нет смысла применять параллельные потоки. + Чем проще структура данных, с которой работает поток, тем быстрее будут происходить операции. Например, данные из `ArrayList` легко использовать, так как структура данной коллекции предполагает последовательность несвязанных данных. А вот коллекция типа `LinkedList` - не лучший вариант, так как в последовательном списке все элементы связаны с предыдущими/последующими. И такие данные трудно распараллелить. + Над данными примитивных типов операции будут производиться быстрее, чем над объектами классов. -+ Крайне не рекомендуется использовать параллельные стримы для сколько-нибудь долгих операций (например сетевых соединений), так как все параллельные стримы работают c одним `ForkJoinPool`, то такие долгие операции могут остановить работу всех параллельных стримов в JVM из-за отсутствия доступных потоков в пуле, т.е. параллельные стримы стоит использовать лишь для коротких операций, где счет идет на миллисекунды, но не для тех где счет может идти на секунды и минуты; ++ Крайне не рекомендуется использовать параллельные стримы для скольких-нибудь долгих операций (например, сетевых соединений), так как все параллельные стримы работают c одним ForkJoinPool, то такие долгие операции могут остановить работу всех параллельных стримов в JVM из-за отсутствия доступных потоков в пуле, т.е. параллельные стримы стоит использовать лишь для коротких операций, где счет идет на миллисекунды, но не для тех где счет может идти на секунды и минуты; + Сохранение порядка в параллельных стримах увеличивает издержки при выполнении и если порядок не важен, то имеется возможность отключить его сохранение и тем самым увеличить производительность, использовав промежуточную операцию `unordered()`: ```java From 979484b470d9f30f661ca44f0cbda500a84ca930 Mon Sep 17 00:00:00 2001 From: Pavel Lyubinskiy Date: Mon, 20 Jul 2020 14:49:23 +0300 Subject: [PATCH 008/103] boost ArrayList remove range --- jcf.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/jcf.md b/jcf.md index 8a6ed74..c620a60 100644 --- a/jcf.md +++ b/jcf.md @@ -312,7 +312,7 @@ _O(N)_. Вставка элемента в конец списка осущес [к оглавлению](#java-collections-framework) ## Предложите эффективный алгоритм удаления нескольких рядом стоящих элементов из середины списка, реализуемого `ArrayList`. -Допустим нужно удалить `n` элементов с позиции `m` в списке. Вместо выполнения удаления одного элемента `n` раз (каждый раз смещая на 1 позицию элементы, стоящие «правее» в списке), нужно выполнить смещение всех элементов, стоящих «правее» `n + m` позиции на `n` элементов «левее» к началу списка. Таким образом, вместо выполнения `n` итераций перемещения элементов списка, все выполняется за 1 проход. +Допустим нужно удалить `n` элементов с позиции `m` в списке. Вместо выполнения удаления одного элемента `n` раз (каждый раз смещая на 1 позицию элементы, стоящие «правее» в списке), нужно выполнить смещение всех элементов, стоящих «правее» `n + m` позиции на `n` элементов «левее» к началу списка. Таким образом, вместо выполнения `n` итераций перемещения элементов списка, все выполняется за 1 проход. Но если говорить об общей эффективности - то самый быстрый способ будет с использованием `System.arraycopy()`, и получить к нему доступ можно через метод - `subList(int fromIndex, int toIndex)` Пример: @@ -369,6 +369,15 @@ public class Main { finish = System.currentTimeMillis() - start; System.out.println("Время удаления путём смещения: " + finish); System.out.println("Размер копии списка:" + copyList.size()); + + System.out.println("\nВыполняем удаление через SubList...\n"); + start = System.currentTimeMillis(); + + initList.subList(m - 1, m + n).clear(); + + finish = System.currentTimeMillis() - start; + System.out.println("Время удаления через саблист: " + finish); + System.out.println("Размер копии списка:" + copyList.size()); } private static void removeEfficiently(){ @@ -413,12 +422,17 @@ run: Сколько удаляем? > 20000 Выполняем удаление вызовом remove()... -Время удаления с помощью вызова remove(): 22359 +Время удаления с помощью вызова remove(): 928 Размер исходного списка после удаления: 980000 Выполняем удаление путем перезаписи... -Время удаления путём смещения: 62 +Время удаления путём смещения: 17 +Размер копии списка:980000 + +Выполняем удаление через SubList... + +Время удаления через саблист: 1 Размер копии списка:980000 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 33 секунды) ``` From 2223ebd9fb663c298d8e42dc92b5bf0356263907 Mon Sep 17 00:00:00 2001 From: "@Samara" Date: Mon, 3 Aug 2020 01:25:34 +0300 Subject: [PATCH 009/103] Update jvm.md --- jvm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jvm.md b/jvm.md index bd29956..caea050 100644 --- a/jvm.md +++ b/jvm.md @@ -37,7 +37,7 @@ JVM работает с примитивными значениями (целы ## Classloader -Загрузчик классов является частью JRE, которая динамичиски закгружает Java классы в JVM. +Загрузчик классов является частью JRE, которая динамически закгружает Java классы в JVM. Обычно классы загружаются только по запросу. Система исполнения в Java не должна знать о файлах и файловых системах благодаря загрузчику классов. **Делегирование является важной концепцией**, которую выполняет загрузчик. Загрузчик классов отвечает за поиск библиотек, чтение их содержимого и загрузку классов, содержащихся в библиотеках. From 4d40f3576e196e42a6149a18dc7fecb7333bfb3c Mon Sep 17 00:00:00 2001 From: Victoria Date: Thu, 20 Aug 2020 17:46:23 +0200 Subject: [PATCH 010/103] added book --- README.md | 3 +++ book/Java_questions.pdf | Bin 0 -> 1387165 bytes 2 files changed, 3 insertions(+) create mode 100644 book/Java_questions.pdf diff --git a/README.md b/README.md index b5d8341..b27e1f6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +# Свёрстанные вопросы и ответы под печать ++ book/Java_questions.pdf + # Вопросы для собеседования на Java Developer + [ООП](#ООП) ![icon][done] diff --git a/book/Java_questions.pdf b/book/Java_questions.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3ab1bb7fe12f91e6a96e22c22e59c4ab26ed2f07 GIT binary patch literal 1387165 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 z