Привет! Меня зовут Диана, и я занимаюсь разработкой с 2013. Здесь пишу просто и понятно про джава бэк
🔥Тот самый курс по многопочке🔥
https://fillthegaps.ru/mt
Комплименты, вопросы, предложения: @utki_letyat
Post #164
3.87K
JA @java_fillthegaps
Showing posts older than #165 · Back to latest

Ctrl + C
Ctrl + V
Ctrl + X Ctrl + YДублировать строку:
Ctrl + DЧтобы выделить часть кода:
Ctrl + WПри каждом нажатии W захватывается всё большая область.
Ctrl + Shift + ⬆️
Ctrl + Shift + ⬇️public sealed class ShapeКлассы, которых нет в блоке permits, не могут наследоваться от sealed класса. Проверка идёт во время компиляции или в IDE. В Intellij IDEA уже в июле добавили поддержку sealed типов.
permits Circle, Rectangle
🔸ClassDesc[] getPermittedSubclasses()❓Зачем?
🔸boolean isSealed()
if (s instanceof Circle) {…}
else if (s instanceof Rectangle) {…}
использовать switch:switch (s) {
case Circle c -> …
case Rectangle r -> …
❓Где пригодятся sealed классы?enum State {NEW, VERIFIED;}
❌ Все элементы и методы хранятся вместе. Если методов много, то размер файла растёт, и читаемость снижается.enum State {
NEW(12);
int rating;
State(int rating) {…}
}
Теперь с помощью sealed класса:
String s = new String("Java");
Откроем Memory View. После выполнения строки напротив класса java.lang.String увидим Diff +2.String java = "Java";Запустим снова. "Java" в первой строке отправилась в String pool. Теперь после выполнения второй строки напротив java.lang.String будет Diff +1.
String s = new String("Java");
byte[] value — текстbyte coder — тип кодировкиint hash1️⃣ String Deduplication (Java 8)
String str = new String("12");
Отдельный JVM поток ищет в памяти экземпляры String и записывает их текст в хэш-таблицу:hash → byte[]Если поток находит дубликат, то заменяет ссылку в повторяющейся строке на ссылку из хэш-таблицы:
str.value = hashtable.valueНа текст дубликата больше нет ссылок, поэтому он удалится сборщиком мусора. Так можно сэкономить 5-30% памяти. Опция String Deduplication работает только со сборщиком G1, и по умолчанию отключена.
-XX:+UseStringDeduplicationЧтобы посмотреть, сколько памяти сэкономил Deduplication, можно вывести статистику Xlog:
-Xlog:stringdedup*=debug2️⃣ Оптимизация хэш-кода (Java 13)
int hashВычисляется и сохраняется при первом вызове hashcode():
if (hash == 0) {
hash = ...
}
⛔️Минус такого решения:boolean hashIsZeroПроверка того, что хэш-код ещё не посчитан, стала такой:
if (h == 0 && !hashIsZero)Теперь хэш-код всегда считается один раз.
String s = new String ("one");
В памяти создаётся новый объект.String s = "one";В этом случае идёт работа с кэшем строк под названием String pool. Схема работы такая:
-XX:StringTableSize=65536В следующем посте рассмотрим ещё два способа снижения издержек на строки.
new String("Java") создаёт новый объект в хипе, s2 = "Java" создаёт объект в String pool. Это два разных объекта, поэтому при сравнении через == результат будет false.String s1="Java";✅Рассмотрим второй вопрос. О том, сколько строк создаётся в конструкции
String s2=new String("Java");
s2=s2.intern();
println(s1==s2); //true
String str=new String("Java");
Подвох в том, что для конструктора String нужен экземпляр String, поэтому создаётся 2 строки — "Java" и new String;
5h 6 mins feature/EX-45Для мониторинга своей активности этого достаточно.
50 mins bugfix/EX-64