Просто добавьте свойство AdjustViewBounds в ImageView.
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_border"
android:padding="1dp"
android:adjustViewBounds="true"
android:src="@drawable/test_image" />
Пожалуйста, обратите внимание, что android:adjustViewBounds="true"
работает только с android:layout_width
и android:layout_height
, установленными в «wrap_content».
Практическое правило состоит в том, что данные быстрее обрабатываются в базе данных, чем на вашем языке программирования.
Причина в том, что данные уже доступны в базе данных, и это избавляет от необходимости обращаться к вашему приложению:
Что касается тяжелого Oracle DISTINCT
, то это может означать, что никогда просто бросать DISTINCT
по запросу только потому что это кажется хорошей идеей - профилируйте его с помощью реалистичного набора данных, поскольку это может иметь серьезные последствия для производительности.
DISTINCT
в запрос только потому, что это кажется хорошей идеей - профилировать его с помощью реалистичного набора данных, поскольку это может иметь серьезные последствия для производительности. это может означать никогда просто бросать DISTINCT
в запрос только потому, что это кажется хорошей идеей - профилировать его с помощью реалистичного набора данных, поскольку это может иметь серьезные последствия для производительности. Два основных аспекта:
Я был бы очень удивлен чтобы обнаружить, что выборка всех данных и последующее выполнение отдельной операции на Java было быстрее, чем выполнение этого в базе данных.
Если ваше приложение может делать это быстрее, чем база данных, база данных серьезно повреждена (кроме случаев, когда приложение работает на значительно более быстрой машине). Конечно, база данных должна выполнять некоторую работу (либо сортировку, либо использование хэш-таблиц для устранения дубликатов), но то же самое делает и ваше приложение!
Почти всегда неправильно выполнять задачи в приложении, которые база данных может выполнять хорошо.
общее правило: позволяет базе данных выполнять работу базы данных, вы экономите память, сеть, процессор на своей стороне. Большая часть этих ресурсов также будет потрачена на сторону базы данных, но перед запуском в производство были проделаны большие оптимизации, поэтому - отдайте ребенка ее матери ...
В мои дни, когда животные все еще разговаривали и играли в игры на своих атари, создание ненужного сетевого трафика было ПЛОХО ПЛОХО.
Получить больше данных, чем нужно, было просто невозможно. . Единственная причина, по которой я могу получать все данные и манипулировать ими в Java для получения различных значений, - это когда вам понадобятся и другие данные чуть позже. Итак, чтобы его закэшировать.
Примечание: это не то же самое, что сказать «делать все на сервере», манипулирование данными в среде с большей поддержкой манипулирования данными может быть хорошим делом. Только не запрашивайте больше данных, чем вам нужно (кеширование как заметное исключение)
Oracle 9 и Oracle 10 выполняют отдельные операции по-разному, Oracle 9 сортирует, Oracle 10 хеширует. Возможно, что в некоторых отдельных случаях Java может делать это быстрее, чем Oracle 9, но медленнее, чем Oracle 10.
Я думаю, что в целом Oracle может делать это быстрее. См. Ответ Джона Скита.
Обработка данных в памяти обычно происходит быстрее, но. Если вы знаете, что у вас много дубликатов, лучше выделить их в БД. В противном случае вы будете использовать гораздо больше пропускной способности сети и памяти. Так что на самом деле это зависит от данных.
Oracle, особенно в более поздних версиях, имеет несколько методов, которые он может выбрать для реализации операции DISTINCT, включая сортировку или хеширование, а также доступ к таблице различными способами (например, с помощью индексов или полного сканирования) . В нем также есть дополнительная информация о данных, включая статистику и ограничения, которые могут помочь ему найти оптимизацию, о которой программа Java может не знать.
Это помимо основной проблемы здесь, которая заключается в количестве передаваемых данных. по трубам (как было несколько раз здесь сказано).
Отдельный SQL "тяжелый", потому что он должен исключать множественные вхождения. Этого можно достичь, сначала отсортировав данные, а затем исключив прогоны с одинаковыми элементами. Тяжелость связана с тем фактом, что выполнение этой операции обходится дорого.
Идиоматическим решением здесь было бы позволить базе данных выполнить подъем, а затем беспокоиться о производительности, если это станет проблемой.