Java с AWS SDK:
В s3 нет папок, только пары ключ / значение. Ключ может содержать косую черту (/
), и в консоли управления он будет отображаться как папка, но программно это не папка, а строковое значение.
При поиске (в зависимости от языка, который вы используете) вы можете осуществлять поиск по префиксу с разделителем. В Java это будет вызов метода listObjects(String storageBucket, String prefix, String delimiter)
.
storageBucket
- это название вашего сегмента, prefix
- это ключ, который вы хотите найти, а delimiter
используется для фильтрации вашего поиска на основе prefix
.
Семафоры, блокировки, переменные состояния и т. Д. Являются концепциями операционной системы и обычно должны быть реализованы с точки зрения ее функций. ядро. Поэтому, как правило, невозможно изучить их изолированно - вам также необходимо учитывать код ядра. Вероятно, лучший способ сделать это - взглянуть на ядро Linux с помощью такой книги, как Общие сведения о ядре Linux .
В самом простом случае семафор - это просто счетчик, который вы можете складывать и вычитать с помощью одной атомарной операции. В Википедии есть простое для понимания объяснение, которое в значительной степени покрывает ваш вопрос о них:
Хорошей отправной точкой для изучения концепций ОС, вероятно, является книга Эндрю Таненбаума «Современные операционные системы» ". У него также есть другая книга о его собственной ОС (Minix), которая называется «Операционные системы: проектирование и реализация», в которой более подробно рассматривается кодирование. Вы сможете найти эти книги в своей местной библиотеке.
На первом уровне, если вы хотите реализовать подобные вещи, вам нужно будет использовать язык ассемблера. C и C ++ просто не предоставляют функций, необходимых для написания параллельного кода - за исключением использования библиотек, которые используют ассемблер в своей реализации.
Для базового понимания вы можете обратиться к книге Понятия операционной системы , Ави Зильбершац, Питер Баер Галвин, Грег Ган и действительно хорош.
Вы также можете посетить сайт Дэйва Маршалла для получения поддержки. См. Там раздел семафоров.
Ави Зильбершац, Питер Баер Гальвин, Грег Гагн и действительно хорош.Вы также можете посетить сайт Дэйва Маршалла для получения поддержки. См. Там раздел семафоров.
Ави Зильбершац, Питер Баер Гальвин, Грег Гагн и действительно хорош.Вы также можете посетить сайт Дэйва Маршалла для получения поддержки. См. Там раздел семафоров.
Вы можете найти множество книг IPC (Inter Process Communication), которые могут объяснить все тонкости того, что вам нужно. Есть одна классическая книга. Межпроцессное взаимодействие сетевого программирования в Unix, Ричард Стивенс. вы получите все, что вам нужно. :)
Миникс довольно хорош. Более простой пример - это MicroC / OS. К нему прилагается учебник, в котором много деталей, есть все источники. В нем есть основные элементы, а код достаточно мал, чтобы его можно было понять за относительно короткий период времени.
http://www.micrium.com/products/rtos/kernel/rtos.html
http://en.wikipedia.org/wiki/MicroC/OS-II
Еще одна вещь, которую вы можете сделать, - это создать поддельную ОС в приложении на Linux. Я сделал это, установив базовый тик с помощью itimer, а затем поменяв местами потоки с помощью вызова функции swapcontext (man 2 swapcontext), который сохранит регистры в стеке. Это избавляет от уродливых вещей, и вам остается реализовать семафоры / мьютексы / таймеры и все такое. Это было довольно весело.
Несмотря на то, что говорится в некоторых сообщениях, ассемблер не требуется. Знание этого всегда поможет. Когда вы пишете даже высокоуровневые приложения, никогда не помешает понять, как работают внутренние компоненты, компиляторы и т. Д.
Забавная книга Стивенса - один из классических текстов, описывающих использование примитивов синхронизации и их использование. Он определенно считает, что их можно использовать для управления межпроцессным взаимодействием. Я склонен с ним соглашаться. Сеть, нет, IPC да. безусловно, да.