Обновить
0

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

Отправить сообщение

На ютубе у Юрия Ткачёва есть очень хорошее обьяснение как оно там внутри работает - "Квантовый компьютер: что это такое и зачем он нужен?"

Смотря что за данные, потому что блокировки, нехватка места под rollback сегмент и прочее.

В oracle используется для join Вероятностный bloom filter

И approx_count_distinct думаю на схожих принципах работает.

Оператор GROUP BY используется вместе с оператором SELECT и требует, чтобы в операторе SELECT использовалась хотя бы одна агрегатная функция

Нет такого требования, по крайней мере в большинстве основных СУБД.

Я так понимаю APPROX_COUNT_DISTINCT в Oracle построен на этом.

НЛО прилетело и опубликовало эту надпись здесь

Да легко, просто понять на какой кусочек агрится антивирус и немного модифицировать его. Я в своё время на делфях написал маленькую утилитку которая заменяет в реестре путь для принтеров и перезапускает спулер. Дак на неё ругался антивирус. Просто перекомпиляция этого же проекта в чуть более старой версии делфей не вызывала нареканий у антивируса.

procedure TForm1.RunReplace;
var
  reg :TExRegistry;
  strs, Strings :TStringList;
  i, bufLen :integer;
  sNew, sOld, sPath, sPrinter, Params, CmdLine, Process :string;
  ReplacedCount :integer;
  KeyDataType :integer;
  si: TStartupInfo;
  pi: TProcessInformation;
begin
  Memo1.Clear;
  ReplacedCount := 0;
  reg := TExRegistry.Create;
  strs := TStringList.Create;
  strings := TStringList.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.Access := KEY_ALL_ACCESS;

  sPath := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports';
  if reg.OpenKey(sPath, false) then
    begin
      //reg.GetKeyNames(strs);
      reg.GetValueNames(strs);
      for i := 0 to strs.Count - 1 do
        begin
          sOld := strs[i];
          sNew := sOld;
          if ReplaceSrv1Str(sNew) then
            begin
              ReplacedCount := ReplacedCount + 1;
              reg.RenameValue(sOld, sNew);
              Memo1.Lines.Add(sPath + ' ' + sNew);
            end;
        end;
      reg.CloseKey;
    end;

  sPath := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers';
  if reg.OpenKey(sPath, false) then
    begin
      reg.GetKeyNames(strs);
      reg.CloseKey;
      for i := 0 to strs.Count - 1 do
        begin
          sPrinter := strs[i];
          sPath := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\' + sPrinter;
          if reg.OpenKey(sPath, false) then
            begin
              sOld := reg.ReadString('Port');
              sNew := sOld;
              if ReplaceSrv1Str(sNew) then
                begin
                  ReplacedCount := ReplacedCount + 1;
                  reg.WriteString('Port', sNew);
                  Memo1.Lines.Add(sPath + ' Port = ' + sNew);
                end;
              reg.CloseKey;
              sPath := sPath + '\DsSpooler';
              if reg.OpenKey(sPath, false) then
                begin
                  reg.ReadStringList('portName', strings);
                  if Strings.Count > 0 then sOld := Strings[0] else sOld := '';
                  sNew := sOld;
                  if ReplaceSrv1Str(sNew) then
                    begin
                      ReplacedCount := ReplacedCount + 1;
                      Strings[0] := sNew;
                      reg.WriteStringList('portName', Strings);
                      Memo1.Lines.Add(sPath + ' portName = ' + sNew);
                    end;
                  reg.CloseKey;
                end;
            end;
        end;
    end;
  ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  Process := 'c:\Windows\System32\net.exe';
  Params := 'stop Spooler';
  CmdLine := Format('"%s" %s', [Process, Params]);
  CreateProcess(PChar(Process), PChar(CmdLine) ,nil, nil,false, 0, nil,nil,si,pi);
  WaitForSingleObject(pi.hProcess, INFINITE);
  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);

  ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  Process := 'c:\Windows\System32\net.exe';
  Params := 'start spooler';
  CmdLine := Format('"%s" %s', [Process, Params]);
  CreateProcess(PChar(Process), PChar(CmdLine) ,nil, nil,false, 0, nil,nil,si,pi);
  WaitForSingleObject(pi.hProcess, INFINITE);
  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);
  Memo1.Lines.Add('Выполнено '+IntToStr(ReplacedCount)+' замен');
end;

Нужен доводчик, как в авто.

Посмотрите "ВСЁ НЕ ТАК С ВАЛВ" от Морфа.

Вроде на Delphi, по крайней мере SDK плагинов была на нём, сам писал плагин меняющий статус на «В игре» опрашивающий Steam.

Информация

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

Специализация

Специалист
От 400 000 ₽