Возможная непротиворечивость

Преобразование в JAVA довольно простое, но нужно некоторое понимание. Как поясняют в JLS для целых операций :

Если целочисленный оператор, отличный от оператора сдвига, имеет хотя бы один операнд типа long, то операция выполняется используя 64-битную точность, а результат численного оператора имеет тип long. Если другой операнд не длинный, он сначала расширяется (§5.1.5), чтобы печатать длинным путем численного продвижения (§5.6).

blockquote>

И пример всегда лучший способ перевести JLS;)

int + long -> long
int(1) + long(2) + int(3) -> long(1+2) + long(3)

В противном случае операция выполняется с использованием 32-битной точности , а результат численного оператора имеет тип int. Если какой-либо операнд не является int, он сначала расширен, чтобы вводить int посредством числовой рекламы.

blockquote>
short + int -> int + int -> int

Небольшой пример использования Eclipse, чтобы показать, что даже добавление двух short s не будет таким простым:

short s = 1;
s = s + s; <- Compiling error

//possible loss of precision
//  required: short
//  found:    int

Это потребует литье с возможной потерей точности.

То же самое верно для операторов с плавающей запятой

Если хотя бы один из операндов числовой оператор имеет тип double, тогда операция выполняется с использованием 64-разрядной арифметики с плавающей запятой, а результатом численного оператора является значение типа double. Если другой операнд не является двойным, он сначала расширяется (§5.1.5), чтобы набирать double путем числовой рекламы (§5.6).

blockquote>

Таким образом, продвижение выполняется по float в double.

И сочетание как целочисленного, так и плавающего значения приводит к плавающим значениям, указанным в

Если хотя бы один из операндов для двоичного оператора имеет тип с плавающей запятой, то операция является операцией с плавающей запятой, даже если другая является интегральной.

blockquote>

Это верно для двоичных операторов, но не для «операторов присваивания», таких как +=

Простой рабочий пример достаточно, чтобы доказать это

int i = 1;
i += 1.5f;

Причина в том, что здесь неявное выполнение сделано, это будет выполняться подобно

i = (int) i + 1.5f
i = (int) 2.5f
i = 2

20
задан BobbyShaftoe 8 December 2008 в 08:46
поделиться

2 ответа

Как достигнуть высокой доступности, и масштабируемость с помощью реляционных баз данных известна и существует обширная совокупность знаний там о том, как сделать это!

Google является особым случаем, который не относится к большинству сайтов, очень очень больших объемов запросов, очень очень больших объемов данных, и, самое главное никакие Соглашения об уровне обслуживания с большинством его пользователей. Нет никакого корректного ответа на Веб-поиск только лучших ответов, поскольку Google среднего пользователя достаточно хорош, если Google пропускает жизненную страницу из поискового списка, Вы как пользователь не можете жаловаться.

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

0
ответ дан 30 November 2019 в 01:06
поделиться

Если Вы хотите иметь Распределенную систему (что "Возможная Непротиворечивость", вещь) Вам нужны люди, сборка, поддержите и управлять ею.

я нашел, что существует три класса людей, которые имеют очень мало проблем с "Возможной Непротиворечивостью":

  • Люди со сплошным фоном в распределенных системах. Они узнали о Возможной Непротиворечивости византийские Отказы и материал как этот. Если Вы понимаете, что Паксос не о праздниках, Вы - вероятно, один из них.
  • Люди испытаны в сетевом программировании. Они могли бы пропустить теоретический фон, но иметь интуитивное понимание asynchronity и "никаких глобальных часов & счетчики" парадигма. При владении по крайней мере 8 книгами Richard Stevens , Вы - вероятно, один из них.
  • Очень опытные кодеры, которые имели мало воздействия RDBMS. Парни ядра, люди от научных вычислений и индустрии компьютерных игр приходят на ум.

, В целом, это людей очень ищут на рынке труда. Например, приблизительно 75% академиков в распределенных системах уезжают в учреждения, которые выполняют большие, саморазработанные распределенные системы, например, фондовые биржи.

Все это стало несколько более простым с предложениями как Hardoop, SimpleDB и CouchDB, но это - все еще сложная задача для создания чего-то на технологии распределенных систем.

, С другой стороны, RDBMS очень прекрасная пайса разработки. Они хорошо поняты, и экспертные знания в области их доступны рынок труда. Существует много достойных инструментов, образовательные возможности и много высококвалифицированных экспертов доступны, чтобы быть арендованными по часам. Поэтому думайте дважды о Вас, не может продолжить подход RDBMS - возможно, вместе с некоторым умным обманом. Я обычно указываю на студентов на архитектура Lifejournal .

Для Распределенных баз данных существует намного меньше опыта. Это - точно причина, Вы нашли так мало совета до сих пор.

, Если Вы полны решимости использовать "Возможную Непротиворечивость", я думаю помимо незрелых инструментов, основная проблема является мышлением всех вовлеченных. Ваши пользователи API (кодеры), и пользователи приложения (Ваши сотрудники и Ваши клиенты) желают и в состоянии принять несоответствие? Можно ли скрыть его от определенных классов пользователей? Мы не привыкли к тому мышлению, что компьютеры непоследовательны. Что-то находится в запасе, или это не. "Возможно", не ответ, который ожидают пользователи.

Также имеют в виду, что "возможный" может значить очень долгое время для разработчиков алгоритма. Как долго можно принять несоответствие?

Для приложения корзины покупок Вы могли бы хотеть пойти действительно распределенные: Используйте Клиентский Браузер в качестве хранилища данных. На контроле можно отправить корзину серверной системе пакетной обработки. Это означает для каталога, Вам нужна (легче) высокая доступность только для чтения, и представление корзины является очень узким интерфейсом без потребности в транзакциях. Позже обработка порядка не имеет никаких (Мягких) оперативных требований и таким образом легче.

BTW: В прошлый раз я проверил архитектуру eBay они, где большой в RDBMS, но это, возможно, изменилось с тех пор. ( Редактирование: это действительно изменялось - см. комментарии)

18
ответ дан 30 November 2019 в 01:06
поделиться
Другие вопросы по тегам:

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