Data Structures and Algorithms in Java by Robert Laforet.pdf
12.1 MB
Для среднего уровня
Data Structures and Algorithms in Java by Robert Laforet
Computer Architecture, Andrew Tanenbaum.pdf
18.8 MB
Для среднего уровня
Computer Architecture, Andrew Tanenbaum
Modern Operating Systems, Andrew Tanenbaum.pdf
7.1 MB
Для среднего уровня
Modern Operating Systems, Andrew Tanenbaum
Java Concurrency in Practice (2020).pdf
7.5 MB
Для продвинутого уровня
Java Concurrency in Practice (2020)
👍2
👋Для Premium подписчиков доступна возможность проголосовать за канал. После определенного количества голосов, появляется возможность выкладывать Stories. 📈

Обновляйте Telegram и нажимайте по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Java developer pinned «👋Для Premium подписчиков доступна возможность проголосовать за канал. После определенного количества голосов, появляется возможность выкладывать Stories. 📈 Обновляйте Telegram и нажимайте по ссылке»
Java 21 и доверенные технологии🦾

🚍27 сентября в 18:00 по Москве.

Спикеры расскажут об особенностях отечественной Java-экосистемы, бесшовной миграции Java-стека на доверенные технологии, обеспечении безопасности и оптимизации Java для микросервисов.

Доклады в программе:
➡️Роман Карпов, «Кто разрабатывает российскую Java и почему она лучше Oracle и других JDK»
➡️Олег Чирухин, «Axiom JDK Pro и Libercat: безопасная миграция Java-стека и KPI по импортозамещению»
➡️Александр Дроздов, «Безопасная разработка: защищаем открытый код и получаем сертификацию ФСТЭК»
➡️Олег Чирухин, «Легковесные Java-контейнеры: ускоряем разработку на 25%»

После докладов пройдет сессия вопросов и ответов со спикерами митапа.  

Зарегистрироваться на митап.
Please open Telegram to view this post
VIEW IN TELEGRAM
👋

🔠🅰️🔠🅰️ 2️⃣1️⃣

Главные фичи новой версии:

📌 Виртуальные потоки

Наверное самая ожидаемая. Для многих задач производительность ограничивается количеством потоков в ОС.
Чтобы обойти это ограничение и использовать потоки на максимум, придумали множество способов — асинхронные библиотеки, реактивное программирование и тд. Вариант рабочий, но код усложняется.

Виртуальные потоки позволяют писать простой код и не упираться в ограничения ОС.

Более дальний аналог — корутины в Kotlin. Они имитируют виртуальные потоки на уровне библиотеки и несут большие накладные расходы. В java виртуальные потоки реализованы на уровне JVM, поэтому их производительность гораздо выше.

📌 Pattern matching.

📌 Sequenced collections.

📌 String templates — интерполяция строк, возможность писать.

String str = "Hello, ${name}!";

📌 Scoped Values — аналог ThreadLocal c ограниченной областью действия.

📌 Structured Concurrency — способ организации подзадач в многопоточной среде.

⭐️ Generational ZGC — в сборщик добавили поколения, как следует из названия. Молодые объекты будут собираться чаще, и сборщик будет работать эффективнее.

⭐️ Record Patterns — records можно использовать внутри case.

⭐️ Foreign Function & Memory API (Third Preview) — методы для работы с нативным кодом и управлению памятью за пределами JVM.
Это нужно для приложений, которые хотят сами управлять размещением объектов в памяти и не зависеть от сборщика мусора.

⭐️ Unnamed Patterns and Variables (Preview) — можно не указывать имя переменной, если оно не нужно. Вместо него ставить _

⭐️ Deprecate the Windows 32-bit x86 Port for Removal — перестать работать с Windows 32-bit x86, в будущем удалить.

⭐️ Prepare to Disallow the Dynamic Loading of Agents

Агент — компонент, который изменяет классы при загрузке или меняет уже загруженные классы в JVM. Используется для мониторинга, профайлинга и других служебных целей.

⭐️ Key Encapsulation Mechanism API — методы для защиты ключей симметричного шифрования.

⭐️ Unnamed Classes and Instance Main Methods (Preview).
Please open Telegram to view this post
VIEW IN TELEGRAM
🤧25 сентября в 17:00 (МСК) стартует Yandex Scale 2023.

Руководитель Yandex Cloud ☁️👤Алексей Башкеев и коммерческий директор
👤Александр Черников откроют конференцию и расскажут, как изменилась платформа и что ждёт облачные технологии в будущем.

🤩Онлайн-трансляция
Please open Telegram to view this post
VIEW IN TELEGRAM
👥Сегодня в 17:00 (МСК) стартует первый день и открытие Yandex Scale 2023.
💻Ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
☝️💡💻Алгоритм Дейкстры - это алгоритм нахождения кратчайшего пути от одной вершины графа до всех остальных вершин. Он работает на графах с неотрицательными весами ребер.

⚙️ Алгоритм Дейкстры работает следующим образом:

➡️Создается массив расстояний dist, в котором для каждой вершины хранится текущее кратчайшее расстояние от начальной вершины до этой вершины. Изначально все расстояния устанавливаются в бесконечность, кроме начальной вершины, для которой расстояние равно 0.

💬Создается множество visited для отслеживания уже посещенных вершин. Изначально все вершины помечаются как непосещенные.

🚪Начальная вершина добавляется в множество visited.

💬Пока множество visited не содержит все вершины графа:
Выбирается вершина u из множества visited с наименьшим значением dist[u].
Для каждой смежной с u вершины v, если dist[u] + weight(u, v) < dist[v], то обновляется значение dist[v] на dist[u] + weight(u, v).
Вершина v добавляется в множество visited.

⭐️По окончании алгоритма массив dist содержит кратчайшие расстояния от начальной вершины до всех остальных вершин графа.

Код Алгоритм Дейкстры 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Рекурсия — вызов внутри одной функции себя самой, чаще всего с другими параметрами.
В приведенном примере мы используем рекурсию для вычисления факториала числа.

⭐️Метод multiplyNumbers() вызывает сам себя с аргументом num - 1 до тех пор, пока num не станет меньше или равным 1. Затем метод возвращает результат умножения num на результат вызова multiplyNumbers() с аргументом num - 1. Когда num достигнет 1, метод multiplyNumbers() вернет 1, что остановит рекурсивные вызовы и вернет результат вычисления факториала.

Алгоритмическая сложность
вычисления факториала числа с использованием рекурсии составляет O(n), где n - число, для которого вычисляется факториал🫡.

Код вычисления факториала 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
☝️💡Рекурсия (Range minimum requests). Позволяет построить дерево отрезков и находить минимум на заданном отрезке, используя рекурсивный подход.

🙋Рекурсия позволяет эффективно решать задачи, связанные с обработкой структур данных, таких как деревья отрезков.

🤯Препроцессинг тратит времени O(n^2) и памяти O(n^2) из-за двумерного массива, в котором запоминает результат. Для массива длинной 1 млдр. алгоритм займёт 930 тыс. терабайт памяти, а квадратичное время предподсчёта - больше трёх лет. Это очень много.⛔️

Код Рекурсия (Range minimum requests) 👩‍💻

Пример ввода: Пример вывода:
5 3
1 3 2 4 5
1 3 1
2 4 2
3 5 2
Please open Telegram to view this post
VIEW IN TELEGRAM
👋 September 28 at 18:00.

Java 21 is coming with many new features, two of which will have a tremendous impact on the way you write Java code. This session covers these significant topics:

💪virtual threads and pattern matching that enables data-oriented programming for the Java platform. First, you'll learn how virtual threads fix several problems with the executor service pattern and propose an alternative programming model to asynchronous programming.

⬇️This model lowers the maintenance cost of your application code and also improves its observability.

😳Then, you'll see how data-oriented programming can improve the quality of your architecture. It is an alternative to object-oriented programming, a paradigm on which Java has been built from the beginning. It relies on three features: sealed classes, records, and pattern matching. Records and sealed classes are already final features, whereas pattern matching is still under work, with some elements already there and more to come.

👍Speaker: José Paumard.

Link to the broadcast.
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Бинарный поиск.📖

Дан массив длиной в n. В массиве числа расположены по возрастанию. Для заданного числа Х требуется найти номер ячейки с ним.

Алгосложность. Запускаем наш алгоритм на промежутке всего массива. На каждом шаге мы смотрим только на один серединный элемент, после чего уменьшаем размер промежутка в два раза.
👍Время работы O(log n),
а не O(n), что гораздо быстрее.⚡️
Код Бинарный поиск 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 SQRT-декомпозиция (Square Root Decomposition) - это метод решения задач на диапазонах, который заключается в разбиении исходного массива на блоки фиксированного размера и предварительной обработке каждого блока. Это позволяет быстро отвечать на запросы, связанные с диапазонами.
Код SQRT-декомпозиция.👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 Задача на нахождение количество островов в заданной матрице. Где остров 1, а вода 0.
Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
💡👩‍💻 Сортировка пузырьком (Bubble Sort). Это один из самых простых алгоритмов сортировки, который проходит по массиву несколько раз, сравнивая каждую пару элементов и меняя их местами, если они не отсортированы.

Сложность алгоритма O(n^2), что делает его неэффективным для больших массивов⛔️
Please open Telegram to view this post
VIEW IN TELEGRAM
👋
Как спроектировать класс, обладающий следующими свойствами:

➡️Имеет всего ОДИН объект на всю программу. Статичные поля и методы?

➡️Мы хотим всю мощь ООП.
Полиморфизм и всё то, для чего статичность членов класса не подойдёт.

☝️Такое часто нужно для представления какого-то ресурса, общего для всей программы (база данных, система оплаты), а также когда нужны глобальные объекты, (учёт глобальной квоты для каких-то действий).

💡ОТВЕТ: это можно сделать через шаблон проектирования Singleton (с анг. одиночка).

➡️Мы хотим сконструировать объект класса A, общий для всей программы.

➡️Скрываем все конструкторы нашего класса, чтобы программист не смог создать объект через new.

➡️Вместо конструктора даём программисту статичный метод для получения объекта, в нём контролируем чтобы объект был всегда один и тот же.

➡️Этот единственный объект храним в статичном поле нашего класса.
Please open Telegram to view this post
VIEW IN TELEGRAM