Как стать автором
Обновить
17
0
Алексей Всеволодов @avsevolodov

Пользователь

Отправить сообщение
Не уверен что «это» будет хабраэффектом, т.к. приглашения рассылались определенному, ограниченному кругу лиц, соответственно логично выпустить столько же кодов доступа (один к одному).
Интересная практика — прислать приглашение, а потом сказать что не успели…
Получил приглашение на video.mos.ru, но заходя по ссылке из письма (http://special.habrahabr.ru/dit/) для генерации логина/пароля и вводе своего email, выдается сообщение об ошибке — «К сожалению на данный момент коды закончились.»
А зачем при удаленном пополнении отдельно приходить к «автомату» и прикладывать карту, записывать на нее что-то, почему нельзя сделать что б при первом проходе это делалось автоматом?
А есть хотя бы один «продакшен» пример использования данной технологии (Galileo/Edison)?
Код написан жутко не оптимально. Может он и рабочий, но требует очень сильной переработки и структуризации для понимания.
Например,
return Regex.Replace(Regex.Replace(Regex.Replace(Regex.Replace(src, @"(\(\+)", "("), @"(\A[\+]{1})", ""), @"(\(-)", "(%"), @"(\A[-]{1})", "%");

смотрится жутко. Регексы как минимум должны создаваться один раз и быть прекомпилены в случае многократного использования.
Публичные переменные в рамках класса — тоже не супер. Для этого придумали auto-property.
Размер функции в несколько страниц — плохо. Постарайтесь разбить на осмысленные части.
Поменьше копи-паста кода:
Double b = Convert.ToDouble(stack.Pop().Value);
Double a = Convert.ToDouble(stack.Pop().Value);
<source>
Встречается в почти каждом case.
А почему вы не рассматриваете возможность создания турникета, принимающего, например, 2 жетона за проход?
Но тогда надо иметь ввиду, что фабрика может быть вызвана больше 1 раза для одного ключа (из разных потоках, конечно) —
TValue resultingValue;
if (TryGetValue(key, out resultingValue))
    return resultingValue;
TryAddInternal(key, valueFactory(key), false, true, out resultingValue);
Вы не совсем правы — каждый сегмент может содержать до 32 элементов очереди.
Конечно, зависит. O(1) — это в среднем. Например, при хеш функции hash(item)=const для любого item — будет O(n).
Это не усложнение, а скорее облегчение, при создании мы не знаем сколько элементов в очереди (в общем случае). А нам необходимо будет динамически выделять новую память. Для реализации можно пойти 2-мя путями:
1. копировать имеющиеся данные (не выбранные) каждый раз в новый массив (аля, List). Здесь потребуется лок на всю структуру и как следствие — очень сильно «просядем» по производительности.
2. создать новый сегмент и в него писать новые элементы, а сегменты с выбранными данными — удалять. Здесь без локов и существенно больше производительность.
Есть такой метод
TValue GetOrAdd(TKey key, TValue value)
он является атомарной операцией.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность