Java Portal | Программирование
описание
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
11 825
подписчиков
Охват к подписчикам
8,9%
ERR
Реакции к просмотрам
0,27%
166 на 50 постов
Пересылки к просмотрам
0,86%
521
Постов в день
2,1
всего 75
Где отзываются чаще
доля реакций к просмотрам- 11 авг.Используйте Collectors.summarizingInt(), чтобы за один проход получить количество элементов, сумму, минимум, максимум и среднее значение. Так не придётся несколько раз прогонять один и тот же поток данных. Метод возвращает объект IntSummaryStatistics. Для long и double есть аналогичные методы: summarizingLong() и summarizingDouble(). #Java #Streams 👉 Java Portal1,05%
- 11 авг.Чувак декомпилировал Java-игру, чтобы посмотреть, как она устроена внутри. На выходе получил полностью обфусцированный код: вместо нормальных имён — $$1, $$2 и прочий мусор. Для человека разбирать такое вручную — боль. Но для LLM это почти идеальная задача. Она довольно быстро восстанавливает смысл кода, понимает связи между классами и объясняет, что именно происходит. Такие задачи идеал для ИИ. 👉 Java Portal0,91%
- 18:0711 принципов разработки ПО, которые стоило понять гораздо раньше. 1. SOLID — более качественное объектно-ориентированное проектирование 2. DRY — не повторяйся 3. KISS — не усложняй 4. YAGNI — не реализуй то, что пока не нужно 5. SRP — одна ответственность 6. Open/Closed — расширяй, не ломая существующее 7. Dependency Inversion — уменьшай связанность 8. Composition — собирай систему из гибких компонентов 9. Separation of Concerns — разделяй ответственность между частями системы 10. Fail Fast — обнаруживай проблемы как можно раньше 11. Measure First — оптимизируй только то, что действительно имеет значение 👉 Java Portal0,79%
- 17 июл.без подписи0,68%
- 8 авг.Лучшие инженеры не изучают распределённые системы по поверхностным пересказам. Они сразу обращаются к фундаментальным научным статьям. Чтение таких работ помогает понять, почему системы спроектированы именно так, а не просто научиться ими пользоваться. Вот пять классических статей всех времён, которые должен прочитать каждый разработчик. 1. The Google File System (2003) Почему стоит прочитать: статья изменила подход всей индустрии, предложив считать отказ компонентов нормой, а не исключением. В ней описано, как построить масштабную отказоустойчивую распределённую систему хранения данных на базе недорогого массового оборудования, оптимизировав её под интенсивную последовательную дозапись вместо произвольной записи. Ссылка: https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf 2. Dynamo: Amazon’s Highly Available Key-Value Store (2007) Почему стоит прочитать: исчерпывающий разбор того, как пожертвовать согласованностью ради высокой доступности — AP в теореме CAP. В статье изложены ключевые паттерны, лежащие в основе масштабируемых NoSQL-хранилищ: консистентное хеширование, векторные часы, gossip-протоколы и настраиваемый кворум для операций чтения и записи. Ссылка: https://allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf 3. In Search of an Understandable Consensus Algorithm (Raft) (2014) Почему стоит прочитать: Paxos печально известен тем, насколько сложно его понять и корректно реализовать, тогда как Raft делает концепцию реплицируемых конечных автоматов более доступной. Алгоритм разбивает задачу консенсуса на отдельные подзадачи, которые легко анализировать: выбор лидера, репликацию журнала и обеспечение безопасности. Ссылка: https://raft.github.io/raft.pdf 4. Spanner: Google’s Globally-Distributed Database (2012) Почему стоит прочитать: статья показывает, как добиться строгой сериализуемости и внешней согласованности между дата-центрами по всему миру. Секрет — API Google TrueTime, ограничивающий неопределённость времени с помощью синхронизированных GPS-приёмников и атомных часов. Ссылка: https://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf 5. Time, Clocks, and the Ordering of Events in a Distributed System Почему стоит прочитать: на физическое время нельзя полагаться при работе с независимыми узлами. Лэмпорт вводит логические часы и фундаментальное отношение «произошло до» (happened-before), лежащее в основе упорядочивания событий в современных распределённых сетях. Ссылка: https://amturing.acm.org/p558-lamport.pdf 👉 Java Portal0,61%
- 8 авг.SELECT FOR UPDATE в PostgreSQL на самом деле выполняет запись. На heap-странице Postgres у каждого tuple есть заголовок с метаданными этой записи. Когда транзакция выполняет SELECT FOR UPDATE, у найденных строк обновляется заголовок: они помечаются как заблокированные, а в xmax записывается идентификатор транзакции, которая установила блокировку. В частности, в заголовке infomask выставляются два бита: HEAP_XMAX_EXCL_LOCK и HEAP_XMAX_LOCK_ONLY. Из-за этого страница становится dirty, а изменение также попадает в WAL. Позже WAL может быть отправлен на standby-реплику. Сама dirty-страница затем может быть сброшена на диск фоновым процессом. После коммита блокировка снимается. Забавно, что операция чтения в итоге может вызвать целую цепочку операций записи на диск. раться с новой возможностью. 👉 Java Portal0,56%
- 15 авг.Интеграционное тестирование базы данных с помощью Testcontainers https://vladmihalcea.com/testcontainers-database-integration-testing/ 👉 Java Portal0,54%
- 15 июл.без подписи0,52%
- 11 июн.без подписи0,49%
- 14 авг.Предсказание ветвлений всплывает снова и снова, потому что его влияние на производительность действительно огромное. Эту тему стоит понимать глубже. У BitLemonSw как раз вышло новое видео о том, как работает предсказание ветвлений в современных процессорах. Суть простая. В коде постоянно встречаются ветвления: циклы, if, switch/case, вызовы функций и возвраты. Проблема в том, что процессоры работают конвейерно и не могут каждый раз ждать, пока станет известно, по какой ветке пойдёт выполнение. Иначе это сильно тормозило бы процессор. Поэтому процессор заранее угадывает результат ветвления и продолжает загружать инструкции по предполагаемому пути. Если прогноз оказался верным — всё быстро. Если нет — часть работы приходится выбросить и начать заново. https://youtu.be/UbDIoNY9E0w 👉 Java Portal0,47%
- 25 маябез подписи0,46%
- 22 июл.без подписи0,45%