Много приложений требуют, чтобы был только один экземпляр некоторого класса, таким образом, шаблон наличия только одного экземпляра класса полезен. Но существуют изменения к тому, как шаблон , реализовал .
существует статический одиночный элемент , в который силы класса, что может только быть один экземпляр класса для каждого процесса (в Java на самом деле один на ClassLoder). Другая опция к [1 110], создают только один экземпляр .
Статические одиночные элементы зло - один вид глобальных переменных. Они делают тестирование тяжелее, потому что не возможно выполнить тесты в полной изоляции. Вы нуждаетесь в сложной установке и разъединяете код для очистки системы между каждым тестом, и очень легко забыть чистить некоторое глобальное состояние правильно, которое в свою очередь может привести к неуказанному поведению в тестах.
Создание только одного экземпляра хорошо . Вы просто создаете один экземпляр, когда программы запускаются, и затем передайте указатель на тот экземпляр ко всем другим объектам, которым нужен он. Платформы внедрения зависимости делают это легким - Вы просто настраиваете объем объекта, и платформа DI будет заботиться о создании экземпляра и передаче его всем, кому нужен он. Например, в Guice Вы аннотировали бы класс @Singleton, и платформа DI создаст только один экземпляр класса (на приложение - у Вас может быть несколько приложений, работающих в той же JVM). Это делает тестирование легким, потому что можно создать новый экземпляр класса для каждого теста и позволить сборщику "мусора" уничтожить экземпляр, когда это больше не используется. Никакое глобальное состояние не протечет от одного теста до другого.
Для получения дополнительной информации: Чистые Переговоры по Коду - "Глобальное состояние и Одиночные элементы"
Если левая или правая часть оператора вычитания беззнаковая, результат тоже беззнаковый. Вы можете изменить это, установив NO_UNSIGNED_SUBTRACTION
режим SQL .
Кроме того, вы также можете явно преобразовать свои беззнаковые значения в значения bigint со знаком, а затем выполнить вычитание.
Ага, промежуточное вычитание выполнило 64-битный цикл. Поскольку вы ожидали 32-битные целые числа, но на самом деле получили 64, нет причин использовать беззнаковые числа.
попробуйте следующее:
mysql> select cast(cast(a-b as unsigned) as signed)/c from tt;
+-----------------------------------------+
| cast(cast(a-b as unsigned) as signed)/c |
+-----------------------------------------+
| -659.771639688953 |
+-----------------------------------------+
1 row in set (0.00 sec)
ссылка: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html