Это показывает, как алгоритм масштабируется.
O (n <глоток> 2 глоток>) : известный как [1 127] Квадратичная сложность
Уведомление, которое количество объектов увеличивает фактором 10, но увеличения времени фактором 10 <глоток> 2 глоток>. В основном, n=10 и так O (n <глоток> 2 глоток>) дает нам масштабный коэффициент n <глоток> 2 глоток>, который является 10 <глоток> 2 глоток>.
O (n) : известный как [1 129] Линейная сложность
На этот раз количество объектов увеличивается фактором 10 и время - также. n=10 и так O (n) масштабный коэффициент равняется 10.
O (1) : известный как [1 131] сложность Constant
количество объектов все еще увеличивается фактором 10, но масштабный коэффициент O (1) всегда равняется 1.
O (регистрируют n) : известный как [1 133] Логарифмическая сложность
количество вычислений только увеличены журналом входного значения. Так в этом случае принятие каждого вычисления занимает 1 секунду, журнал входа n
является требуемым временем, следовательно log n
.
Это - суть его. Они уменьшают математику вниз, таким образом, это не могло бы быть точно n <глоток> 2 глоток> или независимо от того, что они говорят, что это, но это будет фактором доминирования в масштабировании.
Я анализировал вирус. Информация, циркулирующая в сети, что он заражает все исполняемые файлы, скомпилированные на зараженной машине, не совсем верна. Он заражает только исполняемые файлы, скомпилированные БЕЗ исполняемого пакета VCL И без отладочных DCU.
Если вы компилируете с пакетами, модуль SysConst уже находится в скомпилированном пакете VCL, что не затрагивается.
И вирус только добавляет себя в неотладочную версию файла SysConst.dcu.
В остальном то, что я читал в Интернете, является точным. Вирус копирует файл SysConst.pas до строки «реализация», затем присоединяется к новому файлу (в SysConst.pas есть пустой раздел реализации - это только объявления констант). Он сохраняет исходный файл SysConst.dcu в файл SysConst.bak, компилирует зараженную копию исходного кода в новый файл SysConst.dcu, а затем удаляет исходную копию. Наконец, он устанавливает дату создания и изменения нового зараженного файла DCU в соответствии со старым чистым. Подлый!
Он не делает ничего, кроме дублирования - нет вредоносной полезной нагрузки.
Я видел это. Все еще немного смущен этим. Когда появилось первое уведомление об этом, я посмотрел только на файл .pas. Я не нашел ничего плохого с файлом .pas и оставил его на день. ЗАТЕМ я исследовал немного более внимательно и пошел посмотреть файлы .dcu. Я нашел ДВА инфицированных файла .DCU. Оба были 18К в длину, а не 12К, что было одной подсказкой. Вторая подсказка заключалась в поиске CreateFile с 0,0,0,3,0,0 в качестве последних шести параметров. Я скопировал незараженный файл SysConst.DCU из папки DEBUG в LIB. Затем я заново собрал зараженные приложения, всего пять. Один датирован 22 июня. Остальные совсем недавно. Одно приложение было создано в те же выходные, что и два других зараженных приложения. Но я все равно его восстановил.
Я использовал антивирус ZoneAlarm Security Suite, лицензированный у Kapersky, и он продолжал выдавать мне чистые отчеты о зараженных приложениях примерно до пяти часов назад. Мне пришлось сканировать приложения с помощью Avast! чтобы узнать, какие из них были инфицированы до этого момента. Я колебался на отказе от AV ZA, но это решает сделку. Я знаю, что не хочу никаких ложных срабатываний, но они намного меньше раздражают, чем любые пропущенные срабатывания. Один из пяти пострадавших клиентов НЕ был счастлив. И я не могу его винить.
И последний интересный момент (я, конечно, использую Delphi 7.1). Новый (старый?) Файл SysConst.dcu из отладки имеет длину 11 681 байт, тогда как файл. bak файл. Я полагаю, что неприятный бизнес, созданный из оригинала, имеет длину 11 658 байт. Не знаю, важно ли это, но я держу и то, и другое. И я проверю dcu перед компиляцией в ближайшее время. Это неприятно, но на ближайшее время здесь царит паранойя.