?

Log in

AlexWWolf's live journal

Свежие записи

Январь, 1, 2016

2016 Это специальная, вынесенная наверх запись - для того, чтобы можно было в комментах задать мне вопрос на произвольную тему. Или просто чего-нибудь написать. Ну и пусть будет деление по годам.

Август, 10, 2016

Вопрос: что за значение мы получим при выполнении такого вот кода:

declare
	@f float,
	@i int
	
set @f = 1
set @i = 1


while @i <= 10000 begin
	set @f = @f - 0.0001
	set @i = @i + 1
end

print @f

Ответ: ну, это запросто может быть не ноль. К примеру, на MS SQL 2008 R2 SP3, у меня стабильно получается 9.38176e-014. Не проверял на других версиях, но полагаю, результаты могут быть разные.

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

declare @f float
set @f = 0.0001
set @f = @f - 0.0001

print @f

Июль, 25, 2016

Цитата дня

Поделиться
"Если не начать диалог, то будут появляться законопроекты из ниоткуда. Они рискуют быть немедленно принятыми"

http://tass.ru/obschestvo/1762535

Ой, всё!

Июнь, 10, 2016

Достаточно очевидно, но все же: что будет в результате?

declare @t table (a int, b int)

insert into @t values (4, 5)

update @t set a = a - b, b = b - a

select * from @t

Ответ:
  • a = -1
  • b = 1

Май, 26, 2016

Обнаружил сегодня достаточно неприятную вещь: при использовании в нескольких потоках независимых запросов через HttpWebRequest/HttpWebResponse, они начинают блокировать друг друга. Насколько я понял, это связано с реализацией требований стандартов HTTP/1.x, согласно которым разрешается не более 2 одновременных подключений между парой "клиент-сервер" с использованием протокола HTTP. Подробней можно прочитать в RFC 2616, раздел 8.1.4. Вообще говоря, современные браузеры не соблюдают это ограничение, однако классы HttpWebRequest/HttpWebResponse активно поддерживают лимит на активные соединения (он может быть увеличен, но значение по умолчанию =2). При достижении лимита, последующие запросы зависают в состоянии ожидания. В случае превышения срока таймаута, запросы могут быть закрыты с исключением таймаута.

Небольшой пример для демонстрации проблемы:

using System;
using System.IO;
using System.Net;
using System.Threading;

namespace ConsoleApplication3
{
    class Program
    {
        private static string sBlock = "";

        static void Main(string[] args)
        {
            for(int i = 0; i < 2; i++)
                new Thread(DoRequest).Start(i);

            Console.ReadLine();
        }

        private static void DoRequest(object o)
        {
            try
            {
                lock (sBlock)
                    Console.WriteLine("Started " + (int)o);

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://yandex.ru");
                request.Timeout = 10 * 1000;
                WebResponse response = request.GetResponse();
                Stream s = response.GetResponseStream();
                Thread.CurrentThread.Join(30 * 1000);
                new StreamReader(s).ReadToEnd();
                response.Close();

                lock (sBlock)
                    Console.WriteLine("Completed " + (int)o);
            }
            catch (Exception ex)
            {
                lock (sBlock)
                    Console.WriteLine(ex.ToString());
            }
        }
    }
}


Май, 14, 2016

Недавно наткнулся на такую проблему: при работе с WCF-сервисом, построенным по модели WCF RESTful, и передачей данных в формате XML, часть полей на стороне сервиса оказывалась незаполненной. То есть, клиент отправляет нормально сформированный объект, сериализация на стороне клиента проходит штатно, XML формируется валидный, на стороне сервиса исключений не возникает, но объект данных формируется только частично заполненный. Каждый раз пропускаются одни и те же поля для одного и того же типа объектов; для разных типов объектов пропускается разное количество полей.

Продолжение здесь...Свернуть )

Май, 7, 2016

Скоро лето

Поделиться
Скоро лето
Яблони начинают цвести

Декабрь, 31, 2015

2015 - год быка

Поделиться
 Это специальная, вынесенная наверх запись - для того, чтобы можно было в комментах задать мне вопрос на произвольную тему. Или просто чего-нибудь написать. Ну и пусть будет деление по годам.
Счастья, успехов, и удачи всем в Новом Году!

жж счетчик - lj counter

Разработано LiveJournal.com