Если вы хотите распаковать без программного обеспечения, лучше используйте этот код. Другой код с файлами в формате pdf отправляет ошибку при ручном распаковке
byte[] buffer = new byte[1024];
try
{
FileOutputStream fos = new FileOutputStream("123.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
ZipEntry ze= new ZipEntry("file.pdf");
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream("file.pdf");
int len;
while ((len = in.read(buffer)) > 0)
{
zos.write(buffer, 0, len);
}
in.close();
zos.closeEntry();
zos.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
Лично, разрабатывая веб-сайт, который является базирующейся производительностью интенсивного трафика, я избегаю транзакций базы данных, когда это возможно. Очевидно, они необходимы, таким образом, я использую ORM и переменные объекта уровня страницы для уменьшения количества серверных вызовов, я должен сделать.
Вложенные транзакции являются потрясающим способом минимизировать Ваши вызовы, я держусь в том направлении каждый раз, когда я могу, пока они - быстрые запросы та блокировка причины привычки. NHibernate был спасителем в этих случаях.
Я всегда обертываю транзакцию в оператор использования.
using(IDbTransaction transaction )
{
// logic goes here.
transaction.Commit();
}
, Как только транзакция перемещается из объема, она расположена. Если транзакция все еще активна, она откатывается. Это поведение сейфы сбоя Вы от случайной блокировки базы данных. Даже если необработанное исключение будет брошено, транзакция будет все еще откатывать.
В моем коде я на самом деле опускаю явные откаты и полагаюсь на оператор использования, чтобы сделать работу для меня. Я только явно выполняю фиксации.
я нашел, что этот шаблон решительно уменьшил проблемы захвата записей.
Я использую транзакции на каждой операции записи к базе данных.
, Таким образом, во вложенном коде существует довольно много маленьких "транзакций", обернутых в большую транзакцию и в основном существует выдающееся количество транзакции. Если существуют какие-либо выдающиеся дети, когда Вы заканчиваете родителя, все откатываемые.
я предпочитаю клиентскую обработку транзакции где это возможно. Если Вы понижены к выполнению SPS или других серверных логических единиц работы, серверные транзакции прекрасны.
Так же, как к вашему сведению... Вложенные транзакции могут быть опасными. Это просто увеличивает возможности получения мертвой блокировки. Так, хотя это хорошо и необходимо, способ, которым это реализовано, важен в более высокой ситуации с объемом.
Это - интересная ссылка для вложенных транзакций T-SQL: http://aleemkhan.wordpress.com/2006/07/21/t-sql-error-handling-pattern-for-nested-transactions-and-stored-procedures/
Ничего себе! Много вопросов!
, Пока год назад я не положился 100% на транзакции. Теперь его только 98%. В особых случаях веб-сайтов интенсивного трафика (как Sara упомянул) и также высоко разделил данные, осуществив потребность распределенных транзакций, transactionless архитектура может быть принята. Теперь необходимо будет кодировать ссылочную целостность в приложении.
кроме того, мне нравится управлять транзакциями декларативно с помощью аннотаций (я - парень Java), и аспекты. Это - очень очевидный способ для определения границ транзакции, и он включает функциональность распространения транзакции.
Как сказала Сара Чиппс, транзакция является излишней для приложений с высоким трафиком. Так что мы должны избегать этого как можно больше. Другими словами, мы используем архитектуру BASE , а не ACID. Ebay - типичный случай. Распределенная транзакция вообще не используется в архитектуре Ebay. Но для конечной согласованности вы должны проделать какой-то трюк самостоятельно.
Транзакции на стороне сервера, 35 000 транзакций в секунду, SQL Server: 10 уроков из 35 000 транзакций в секунду
Мы используем только транзакции на стороне сервера:
Другое:
Мы имеем дело с миллионами строк INSERT в день (некоторые сгруппированы через промежуточные таблицы), полный OLTP, никаких проблем. Но не 35 тыс. Транзакций в секунду.