Java: fill the gaps
Привет! Меня зовут Диана, и я занимаюсь разработкой с 2013. Здесь пишу просто и понятно про джава бэк 🔥Тот самый курс по многопочке🔥 https://fillthegaps.ru/mt Комплименты, вопросы, предложения: @utki_letyat
显示更多📈 Telegram 频道 Java: fill the gaps 的分析概览
频道 Java: fill the gaps (@java_fillthegaps) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 12 548 名订阅者,在 技术与应用 类别中位列第 10 113,并在 俄罗斯 地区排名第 52 819 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 12 548 名订阅者。
根据 08 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -43,过去 24 小时变化为 -3,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 34.73%。内容发布后 24 小时内通常能获得 N/A% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 0 次浏览,首日通常累积 0 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 0。
- 主题关注点: 内容集中在 redis, hashmap, linkedhashmap, индекс, фича 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Привет! Меня зовут Диана, и я занимаюсь разработкой с 2013. Здесь пишу просто и понятно про джава бэк
🔥Тот самый курс по многопочке🔥
https://fillthegaps.ru/mt
Комплименты, вопросы, предложения: @utki_letyat”
凭借高频更新(最新数据采集于 09 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
String s = new String ("one");
В памяти создаётся новый объект.
🔸Без оператора new:
String s = "one";В этом случае идёт работа с кэшем строк под названием String pool. Схема работы такая: ▫️Проверить в String Pool, есть ли там такая строка. ▫️Если есть — вернуть её. ▫️Если нет — создать объект, поместить в кэш, вернуть. ❓Как реализован String pool? Структура похожа на HashMap: хэш-таблица фиксированного размера с парами хэш — строка. В последних версиях java она занимает 64 МБ, при желании размер меняется с помощью флажка:
-XX:StringTableSize=65536В следующем посте рассмотрим ещё два способа снижения издержек на строки. ✅ Ответ на 1 вопрос перед постом:
new String("Java") создаёт новый объект в хипе,
s2 = "Java" создаёт объект в String pool. Это два разных объекта, поэтому при сравнении через == результат будет false.
Можно исправить ситуацию и добавить строчку в кэш методом intern():
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;
Но если строка "Java" использовалась раньше и попала в кэш, то будет создана только одна строка — new String.5h 6 mins feature/EX-45 50 mins bugfix/EX-64Для мониторинга своей активности этого достаточно. Полная инструкция: 1️⃣ Установить в IDEA плагин WakaTime 2️⃣ Перезапустить IDEA, появится окошко для ключа 3️⃣ Зарегистрироваться на сайте и перейти в раздел для IDEA 4️⃣ Взять из п.5 API Key, ввести его в IDE 5️⃣ Зайти в настройки, отключить все уведомления 6️⃣ Зайти в дашборд Можно трекать работу в других IDE и редакторах — Eclipse, Android Studio, GoLand, даже в Notepad++. Можно подключить к GitLab, GitHub и BitBucket и смотреть, сколько времени занял каждый коммит.
print(0.1 + 0.2) 0.3Почему python справился с примером, а java - нет? Как можно писать на java высоконагруженные приложения, если она не может сложить 0.1 и 0.2? Oracle подробно объясняет этот феномен на 80 страницах. Главная проблема в том, как десятичная часть хранится в двоичном формате. Целые числа записываются через степень двойки однозначно: 9 = 8 + 1 = 2^3 + 2^0 → 1001 Десятичная часть выражается через отрицательную степень двойки. Иногда получается нормально: 0.5 = 2^(-1) → 0.1 Иногда не очень: 0.1 = 2^(-4) + 2^(-5) + 2^(-8) + … → 0.00111101110011001100110011001 Если перевести это обратно в десятичную форму, то видно, что хранится там совсем не 0.1: 0.100000001490116119384765625 С 0.2 похожая ситуация. Поэтому результат получается искажённым. При выводе часть чисел не показывается, в консоль выводится только 0.30000000000000004. Python 2.7 использует для вычислений ту же систему, но показывает меньше знаков после запятой. Python 3 выводит больше знаков и результат похож на результат java:
print(0.1 + 0.2) 0.30000000000000004❓Зачем использовать такую неточную систему? Если хранить целую и дробную часть одинаково, то для вычислений не нужно дополнительных преобразований. Результат считается быстро, а уровень погрешности на практике низкий. В нашем примере ошибка на 16 разрядов ниже основного значения, в большинстве случаев это ок. Для точных вычислений алгоритмы сложнее. На практике используются три основных метода: 🔸Ограниченная точность (Limited-Precision Decimal) 🔸Символьная логика (Symbolic calculations) 🔸Длинная арифметика (Arbitrary-precision decimal) Класс BigDecimal использует последний подход. Число 12.345 хранится как пара: ▫️целое значение: 12345 ▫️количество десятичных знаков: 3 За счёт этого BigDecimal хранит числа без потери точности. Целая часть хранится либо в переменной int, либо в массиве. Размер числа ограничен только количеством доступной памяти. Минусы такого подхода: ❌ Медленные вычисления ❌ Большой расход памяти ❌ Много промежуточных объектов ❌ Менее выразительный код Теперь ответ на второй вопрос перед постом: объекты BigDecimal(0.2) и BigDecimal("0.2") НЕ равны. В конструктор
BigDecimal(0.2)передаётся примитив double, в котором вместо 0.2 лежит 0.20000000000000001110223... Поэтому объект BigDecimal будет хранить это число, а не 0.2. Это самая частая ошибка при работе с BigDecimal. Для чисел с запятой надёжнее передавать в конструктор строку.
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
