Добавлено: 18.09.2018 19:27

Скачать структуры данных и алгоритмы java

«Скачать структуры данных и алгоритмы java» в картинках.

Java developer: знание классических алгоритмов — о чем это

Как правило, начинающие программисты не видят смысла в изучении алгоритмов и структур данных. Это приходит немного позже, после опыта и проблем :)
ну, или если душа лежит к «эффективному» программированию, а не «ойдаоноработает».

Книга: Структуры данных и алгоритмы в Java. Классика

Конечно, не достаточно тупо прочитать это — относитесь серьезно к задачам в учебниках, а также обратите внимание на такие ресурсы, как TopCoder и CodeForces. Это замечательные площадки, чтобы попрактиковаться на реальных задачках.

«Структуры данных и алгоритмы в Java» Роберт Лафоре

Неблокирующая версия имеет некоторые преимущества в производительности по отношению к версии, основанной на блокировках. Она выполняет синхронизацию на более низком уровне модульности (конкретное место в памяти), используя аппаратный примитив вместо фрагмента кода блокировки JVM. Проигравшие потоки могут выполнить повторную попытку немедленно, без останова и продолжения. Более мелкая модульность уменьшает шанс возникновения состязания, а возможность повторения попытки без останова и продолжения уменьшает стоимость состязания.

Классы атомарных переменных называются атомарными, потому что они предоставляют мелкомодульные атомарные обновления чисел и объектных ссылок, но они также атомарны и в том смысле, что являются основными строительными блоками для неблокирующих алгоритмов. Неблокирующие алгоритмы являются предметом изучения уже более 75 лет, но стали возможными в языке программирования Java только с появлением Java .

После алгоритмов можно углубиться в изучение операционных систем. Как-то сам Google рекомендовал этот курс: UC Berkeley Computer Science 667. К сожалению, это только лекции на youtube, но даже так — уже хорошо.

Курс формирует практические умения и навыки разработки программных систем среднего уровня сложности на языке C++ с применением стандартной библиотеки языка, а также типовых приемов (шаблонов) объектно-ориентированного проектирования.

В курсе рассматриваются ключевые аспекты эффективной работы с памятью, безопасного программирования, асинхронных вычислений, делается краткий экскурс в возможности диалектов C++66/C++69.

LinkedQueue в листинге 9 демонстрирует операцию вставки для неблокирующего алгоритма очереди Майкла-Скотта (Michael-Scott), реализованного ConcurrentLinkedQueue :

Операция вставки сначала проверяет, находится ли очередь в промежуточном состоянии перед попыткой вставки нового элемента (A), как показано в листинге 9. Если это так, значит какой-то другой поток должен находиться в середине операции вставки элемента между шагами (C) и (D). Вместо ожидания завершения другого потока текущий поток может помочь завершить операцию за него посредством перемещения вперед указателя на хвост очереди (B). Он продолжает проверку указателя хвоста очереди и передвигает его при необходимости до тех пор, пока очередь не перейдет в статическое состояние, после чего он может начать свою собственную операцию вставки.

Джеймс Гослинг, автор языка Java, когда эта книга вышла, сказал: « Некоторые, возможно, думают, что мне не нужны никакие книги по Java, но эта мне нужна.» Здесь вы найдете более 55-ти лучших практик и советы по усовершенствованию кода от выдающегося эксперта в даной области.

Это более гуманитарная книга об отношении к работе. Она затрагивает тему коммуникации и дает общий обзор того, что значит быть профессиональным программистом.