Java Learning
№ 5079899194 Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @mascarov_valentin Реклама на бирже - https://telega.in/c/Java_per_month
نمایش بیشتر📈 تحلیل کانال تلگرام Java Learning
کانال Java Learning (@java_per_month) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 16 862 مشترک است و جایگاه 7 849 را در دسته فناوری و برنامهها و رتبه 39 982 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 16 862 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 10 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -148 و در ۲۴ ساعت گذشته برابر 2 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 9.24% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 4.62% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 1 558 بازدید دریافت میکند. در اولین روز معمولاً 780 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 2 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند learning, строка, map, static, интерфейс تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“№ 5079899194
Обучающий канал по Java
Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6
По всем вопросам @mascarov_valentin
Реклама на бирже - https://telega.in/c/Java_per_month”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 11 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
clone(), вот несколько лучших практик для упрощения задачи:
public Course clone() {
Course c = null;
try {
c = (Course)super.clone();
} catch (CloneNotSupportedException e) {} // Не произойдет
return c;
}
🗣️ Этот код использует тот факт, что метод clone() не вызовет CloneNotSupportedException, если класс реализует интерфейс Cloneable. Возврат подкласса называется ковариантным переопределением методов и доступен с Java 5, что позволяет избежать приведения типа на стороне клиента:
Course javaBeginners = new Course("Java", 100, 10);
Course clone = javaBeginners.clone();
Ранее, например, с классом Date, нужно было явно приводить результат метода clone():
Date d = new Date();
Date clone = (Date) d.clone();
Java Learning 👩💻wait(), notify() и notifyAll(), я использовал if для проверки условия ожидания перед вызовом wait() и notify():
synchronized(queue) {
if(queue.isFull()){
queue.wait();
}
}
🗣️ К счастью, проблем не возникло, но я понял свою ошибку, прочитав раздел из книги Effective Java. Там сказано, что условие ожидания следует проверять в цикле, потому что потоки могут получать ложные уведомления, и до того, как вы что-то сделаете, условие может снова стать истинным. Поэтому правильный способ использования wait() и notify() выглядит так:
synchronized(queue) {
while(queue.isFull()){
queue.wait();
}
}
Java Learning 👩💻List<String> listOfCurrencies = new ArrayList<>();
listOfCurrencies.add("USD/AUD");
listOfCurrencies.add("USD/JPY");
listOfCurrencies.add("USD/INR");
🗣️ Хотя Arrays.asList() возвращает List, его нужно передать конструктору ArrayList, потому что возвращаемый список имеет фиксированную длину, и вы не можете добавлять или удалять элементы.
✔️ Начиная с Java 9, можно использовать методы List.of() и Set.of() для создания списка и множества с элементами. Это предпочтительнее, так как они возвращают неизменяемые списки и множества.
Java Learning 👩💻List<String> listOfCurrencies = new ArrayList<>();
listOfCurrencies.add("USD/AUD");
listOfCurrencies.add("USD/JPY");
listOfCurrencies.add("USD/INR");
🗣️ Хотя Arrays.asList() возвращает List, его нужно передать конструктору ArrayList, потому что возвращаемый список имеет фиксированную длину, и вы не можете добавлять или удалять элементы.
✔️ Начиная с Java 9, можно использовать методы List.of() и Set.of() для создания списка и множества с элементами. Это предпочтительнее, так как они возвращают неизменяемые списки и множества.
Java Learning 👩💻List<String> listOfCurrencies = new ArrayList<>();
listOfCurrencies.add("USD/AUD");
listOfCurrencies.add("USD/JPY");
listOfCurrencies.add("USD/INR");
🗣️ Хотя Arrays.asList() возвращает List, его нужно передать конструктору ArrayList, потому что возвращаемый список имеет фиксированную длину, и вы не можете добавлять или удалять элементы.
✔️ Начиная с Java 9, можно использовать методы List.of() и Set.of() для создания списка и множества с элементами. Это предпочтительнее, так как они возвращают неизменяемые списки и множества.
Java Learning 👩💻Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.rupublic enum Singleton {
INSTANCE;
}
✔️ Это потокобезопасно, надежно, и Java гарантирует наличие только одного экземпляра, даже в случае сериализации и десериализации.
➡️ Использование перечислений (enum) для реализации паттерна Singleton является отличным подходом в Java. Enum обеспечивает множество преимуществ:
• Потокобезопасность: Перечисления в Java создаются с использованием потокобезопасного механизма. Это означает, что вы не столкнетесь с проблемами, связанными с многопоточностью.
• Гарантия единственности экземпляра: Java гарантирует, что в системе будет только один экземпляр перечисления, даже при использовании различных потоков или классов загрузчиков.
• Сериализация и десериализация: При использовании enum Java автоматически обрабатывает сериализацию и десериализацию таким образом, чтобы сохранить единственность экземпляра. Это означает, что при десериализации вы не получите новый экземпляр, а вернется тот же самый экземпляр.
Java Learning 👩💻Set<Key> keySet = map.keySet();
for (Key k : keySet) {
Value v = map.get(k);
print(k, v);
}
➡️ Это выполняет дополнительный поиск для получения значения из Map, что в худшем случае может быть O(n). Если вам нужны и ключ, и значение, то лучше итерировать по entrySet, а не по keySet.
Set<Map.Entry<Key, Value>> entrySet = map.entrySet();
for (Map.Entry<Key, Value> e : entrySet) {
Key k = e.getKey();
Value v = e.getValue();
}
✔️ Это более эффективно, потому что вы получаете значение напрямую из объекта, что всегда занимает O(1).
Java Learning 👩💻Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruAtomicLong. Класс LongAdder позволяет выполнять атомарные арифметические операции над типом long. LongAccumulator принимает произвольную функцию аккумуляции результатов.
🗣️ Эта функция принимает текущее значение, аргумент переданный в метод accumulate() и возвращает результат логического объединения (accumulate) двух значений.
При получении результата все элементы редуцируются в один общий результат. Вся эта кухня намекает нам, что функция аккумуляции должна быть коммутативна и ассоциативна. В противном случае результат будет зависеть от физического порядка выполнения операций, который данный класс не гарантирует.Java Learning 👩💻
public class ByScoreComparator implements Comparator<User> {
@Override
public int compare(User u1, User u2) {
return (int) signum(u2.getAge() - u1.getAge());
}
}
➡️ Главная проблема — понять, от чего отнимать, чтобы порядок был правильным. Правильный ответ с первого раза получается редко, и часто мы замечаем ошибку уже после запуска кода.
Теперь это не нужно. Можно использовать ссылки на методы:
Comparator<User> comparator = Comparator
.comparingDouble(User::getAge)
.thenComparing(User::getName);
List<User> hList = ...;
hList.sort(comparator);
🗣️ Такой подход упрощает создание компараторов.
Java Learning 👩💻public class ByScoreComparator implements Comparator<User> {
@Override
public int compare(User u1, User u2) {
return (int) signum(u2.getAge() - u1.getAge());
}
}
➡️ Главная проблема — понять, от чего отнимать, чтобы порядок был правильным. Правильный ответ с первого раза получается редко, и часто мы замечаем ошибку уже после запуска кода.
Теперь это не нужно. Можно использовать ссылки на методы:
Comparator<User> comparator = Comparator
.comparingDouble(User::getAge)
.thenComparing(User::getName);
List<User> hList = ...;
hList.sort(comparator);
🗣️ Такой подход упрощает создание компараторов.
Java Learning 👩💻Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruBufferedReader, поэтому теперь Stream’ы доступны поверх любого InputStream‘а.
Java Learning 👩💻// Java 7 и ранее
ThreadLocal<ObjectMapper> mapper = new ThreadLocal<>() {
@Override
protected ObjectMapper initialValue() {
return new ObjectMapper();
}
};
✔️ Но теперь, за счёт замыканий, стало проще:
// Java 8
ThreadLocal<ObjectMapper> mapper = withInitial(() -> new ObjectMapper());
Java Learning 👩💻
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
