Транзакционный шаблон разработки

От Alex B В стандарте C ++ не указывается размер интегральных типов в байтах, но он указывает минимальные диапазоны, которые они должны удержать. Вы можете вывести минимальный размер в битах из требуемого диапазона. Вы можете вывести минимальный размер в байтах из этого и значение макроса CHAR_BIT, определяющего количество бит в байте (во всех, кроме самых неясных платформ, это 8, и оно не может быть меньше 8).

Еще одно ограничение для char состоит в том, что его размер всегда 1 байт или бит CHAR_BIT (отсюда и название).

Минимальные диапазоны, требуемые стандартом (стр. 22):

и диапазоны типов данных в MSDN:

подписанный символ: от -127 до 127 (обратите внимание, не от -128 до 127, это соответствует платформам с добавлением 1). unsigned char: от 0 до 255 «простой» символ : От -127 до 127 или от 0 до 255 (зависит от знака по умолчанию): короткое: -32767 до 32767 без знака short: от 0 до 65535, подписанное int: -32767 до 32767 unsigned int: от 0 до 65535, подписанное длиной: -2147483647 до 2147483647 без знака длинный: от 0 до 4294967295 подписан длинный длинный: -9223372036854775807 до 9223372036854775807 unsigned long long: от 0 до 18446744073709551615 Реализация C ++ (или C) может определять размер типа в байтах sizeof (type) для любого значения, до тех пор, пока

выражение sizeof (type) * CHAR_BIT оценивает количество бит, достаточное для того, чтобы содержать требуемые диапазоны, и упорядочение типа остается в силе (например, sizeof (int) & lt; = sizeof (long)). Фактические диапазоны конкретных реализаций можно найти в заголовке на C или в C ++ (или даже лучше, в шаблоне std :: numeric_limits в заголовке).

Например, таким образом вы найдете максимальный диапазон для int:

C:

#include 
const int min_int = INT_MIN;
const int max_int = INT_MAX;

C ++:

#include 
const int min_int = std::numeric_limits::min();
const int max_int = std::numeric_limits::max();

Это правильно, однако вы также были правы в том, что: char: 1 byte short: 2 байта int: 4 байта: 4 байта float: 4 байта double: 8 байт

Поскольку 32-битные архитектуры по-прежнему по умолчанию и наиболее часто используются, и они сохранили эти стандартные размеры, поскольку pre -32-битные дни, когда память была менее доступной, а для обратной совместимости и стандартизации она осталась прежней. Даже 64-битные системы имеют тенденцию использовать их и имеют расширения / модификации. Пожалуйста, обратитесь к этому для получения дополнительной информации:

http://en.cppreference.com/w/cpp/language/types

5
задан e-sushi 2 December 2013 в 12:52
поделиться

6 ответов

Если Ваши изменения сделаны к объектной модели SharePoint, можно использовать то, что изменения не фиксируются, пока Вы не звоните Update() метод измененного объекта, такой как SPList.Update() или SPWeb.Update().

Иначе я использовал бы Шаблон разработки Команды. Глава 6 в Главных Первых Шаблонах разработки даже имеет пример, который реализует функциональность отмены.

3
ответ дан 14 December 2019 в 01:22
поделиться

Шаблон "команда" GoF поддерживает невозможные операции.

Я думаю, что тот же шаблон может использоваться для последовательных операций (последовательные команды).

3
ответ дан 14 December 2019 в 01:22
поделиться

Рядом с Шаблоном "команда" GOF Вы могли бы также хотеть взглянуть на шаблон Сценария Транзакции от P EAA.

Необходимо, вероятно, создать Составную Команду (или Сценарий Транзакции), который выполняется в последовательности.

1
ответ дан 14 December 2019 в 01:22
поделиться

Вы могли бы хотеть взглянуть на Компенсацию Менеджера ресурсов:

http://msdn.microsoft.com/en-us/library/8xkdw05k (По сравнению с 80) .aspx

0
ответ дан 14 December 2019 в 01:22
поделиться

Иначе для отката/отмены Шаблон "memento". Это обычно используется, чтобы взять снимок объекта в установленный срок и позволить объектному состоянию, которое вернется к сувениру.

2
ответ дан 14 December 2019 в 01:22
поделиться

При использовании C++ (или любой другой язык с детерминированным выполнением деструктора, когда объемы заканчиваются), можно смотреть на гвардию Объема. Эта техника может, вероятно, также быть адаптирована к.NET, заставив ScopeGuard реализовать IDisposable и опрыснув "использование" операторов по мере необходимости.

0
ответ дан 14 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: