Думаю, большинству знакомы различные методологии, которые описывают как можно структурировать процесс разработки, как можно стабилизировать качество продукта или как можно достигать запланированного результата в ожидаемые сроки. И, конечно, всем знакомы agile, scrum, спринты и прочие магические слова, которые повышают продуктивность на 20% сразу после произнесения их на важной встрече. Данная заметка совсем не раскрывает данных понятий (есть масса других статей с определениями, правилами внедрения, а также десятки курсов от различных тренеров), она даже не дает ответа на вопрос «что делать?». Она всего лишь затрагивает некоторую экзистенциальную проблему введения спринтов, и почему это не всегда работает (или всегда не работает).
Boris
@b_idler
Software engineer
Еще одна история удаленщика
6 мин
34KНа Хабре несметное количество статей про удаленную работу. Истории из жизни, демонстрации успехов/неудач в этом нелегком деле. Но несмотря на это, постоянно продолжаю натыкаться на то, что люди путают удаленную работу с фрилансом. Читая очередную статью по этой теме, я понял, что ждать больше нельзя, в интернете кто-то не прав и надо срочно максимально просто изложить свой опыт по данному вопросу, чтобы впоследствии фраза «удаленная работа» не порождала у людей в голове ассоциацию «фриланс».
Как можно узнать больше, или Почему я буду участвовать в школе CSEDays
3 мин
663Всем доброго времени суток!
Как и многие из вас, я занимаюсь программированием и исследованиями в области Computer Science. И примерно год назад, пришло осознание того, что знаний, получаемых в вузе на обычных лекциях не достаточно. А прочтение умных книжек не всегда дает полное представление о конкретной тематике. Постараюсь описать более конкретно проблему и способы ее решения.
Как и многие из вас, я занимаюсь программированием и исследованиями в области Computer Science. И примерно год назад, пришло осознание того, что знаний, получаемых в вузе на обычных лекциях не достаточно. А прочтение умных книжек не всегда дает полное представление о конкретной тематике. Постараюсь описать более конкретно проблему и способы ее решения.
B-tree
6 мин
200KВведение
Деревья представляют собой структуры данных, в которых реализованы операции над динамическими множествами. Из таких операций хотелось бы выделить — поиск элемента, поиск минимального (максимального) элемента, вставка, удаление, переход к родителю, переход к ребенку. Таким образом, дерево может использоваться и как обыкновенный словарь, и как очередь с приоритетами.
Основные операции в деревьях выполняются за время пропорциональное его высоте. Сбалансированные деревья минимизируют свою высоту (к примеру, высота бинарного сбалансированного дерева с n узлами равна log n). Большинство знакомо с такими сбалансированными деревьями, как «красно-черное дерево», «AVL-дерево», «Декартово дерево», поэтому не будем углубляться.
В чем же проблема этих стандартных деревьев поиска? Рассмотрим огромную базу данных, представленную в виде одного из упомянутых деревьев. Очевидно, что мы не можем хранить всё это дерево в оперативной памяти => в ней храним лишь часть информации, остальное же хранится на стороннем носителе (допустим, на жестком диске, скорость доступа к которому гораздо медленнее). Такие деревья как красно-черное или Декартово будут требовать от нас log n обращений к стороннему носителю. При больших n это очень много. Как раз эту проблему и призваны решить B-деревья!
B-деревья также представляют собой сбалансированные деревья, поэтому время выполнения стандартных операций в них пропорционально высоте. Но, в отличие от остальных деревьев, они созданы специально для эффективной работы с дисковой памятью (в предыдущем примере – сторонним носителем), а точнее — они минимизируют обращения типа ввода-вывода.
Информация
- В рейтинге
- Не участвует
- Откуда
- Екатеринбург, Свердловская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность