29 April, 2009
Swap при помощи XOR
Обмен двух переменных без использования дополнительной переменной с помощью XOR.
http://en.wikipedia.org/wiki/XOR_swap_algorithm. Забавно то, что как-то до сих пор об этом не думалось.
Labels:
Алгоритмы
11 April, 2009
Wildcard comparer
Все наверное писали что-то подобное на тестах при поступлении на работу. И вот свершилось, wildcard comparer реально потребовался. Особенности алгоритма: несколько следующих друг за другом * считаются одной.
bool WildcardCompare(LPCWSTR pFilter, LPCWSTR pString) { while (*pString && *pFilter != L'*') { if (*pFilter != *pString && *pFilter != L'?') return false; ++pFilter; ++pString; } LPCWSTR pBaseFilter; LPCWSTR pBaseString; while (*pString) { if (*pFilter == L'*') { if (!*++pFilter) return true; pBaseFilter = pFilter; pBaseString = pString; } else if (*pFilter == *pString || *pFilter == L'?') { ++pFilter; ++pString; } else { pFilter = pBaseFilter; pString = ++pBaseString; } } while (*pFilter == L'*') ++pFilter; return !*pFilter; }
03 April, 2009
Разные команды, разный подход к одной задаче
Очередная несовместимость .NET Profiling API для .NET Framework и .NET Compact Framework. Важный этап каждого приложения - это его завершение. И тут мы снова видим совершенно разное поведение. При завершении .NET Framework я не вижу ThreadDestroyed для главного thread и не наблюдаю вызовов AppDomainShutdownStarted/AppDomainShutdownFinished для appllication domain приложения. C этим в принципе можно смириться, так как есть вызов Shutdown означающий завершение приложения. С .NET Compact Framework все сложнее. Я наблюдаю завершение главного thread, после чего создается специальный thread для выгрузки application domain приложения и АСИНХРОННО по отношению как минимум к вызову AppDomainShutdownFinished вызывается Shutdown в главном thread. Что на мой взгляд есть очень серьезный bug.
Labels:
.NET,
.NET Profiling API,
.NETCF
Subscribe to:
Posts (Atom)