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:
Comments (Atom)