• Самый быстрый Индиан

    зачем такое делать, ведь поиск по префиксу и итерация потеряют смысл, и ты скатишься до обычного key-> value? а так то да, можно хрвнить в пуле, брать от каждого обьекта md5 и пихать его как ключ

  • Самый быстрый Индиан

    Здесь несколько человек возмущалось, что у автора читерские бенчмарки, где он сравнивает с коллекциями, у которых совершенно другие цели и функциональность.

    Так вот, предлагаю автору to pick on somebody your own size и пробенчмаркать с чем-то похожим. Например: github.com/Tessil/hat-trie (первое что выдал гугл на fast trie)

    Заодно и посмотришь, как эту хрень завернули в нормальный юзер френдли контейнер

  • Самый быстрый Индиан

    Нет никаких мат препятствий хранить любой список байт

    обьект — это не список байт, тебе артем это уже 20 раз написал. Ты можешь юзать только список байт как ключ. Мапа может юзать что угодно как ключ, хоть другие мапы. Не пытайся натянуть функционал мапы на себя

  • Самый быстрый Индиан

    ты чет явно не то делаешь. Трай — это структурка для строк, она может работать только со строками. В отличие от мапы, которая работает с любым типом, на котором определен порядок. И в отличие от хештаблицы, в которую можно засунуть все, что хешируется

    вот value теоретически может быть любым обьектом, да

  • 84% погодяться на live coding на технічному інтерв’ю, а 16% відмовляться від співбесіди — телеграм-опитування Djinni

    посмотрел бы я как вы на интервью в гугл начали рассказывать про настройки глубина стака в пайтоне

    а в чем проблема? тема интересная, можно и обсудить

  • Самый быстрый Индиан

    не шарю c/c++, но судя по цппреференсу, это что-то еще хуже чем ub — стандарт говорит, что такой код даже компилироваться не должен. Что в таком случае оно будет выдавать с О3?

  • Самый быстрый Индиан

    # g++ HArray_insert.cpp
    HArray_insert.cpp:1489:2: error: jump to label 'FILL_KEY' [-fpermissive]
      FILL_KEY:
      ^~~~~~~~
    HArray_insert.cpp:488:12: note:   from here
           goto FILL_KEY;
                ^~~~~~~~
    HArray_insert.cpp:552:10: note:   crosses initialization of 'uint32 keyValue'
       uint32 keyValue = key[keyOffset];
              ^~~~~~~~
    
    я ж правильно понимаю, что если это все-таки сбилдить, и включить все оптимизации, то компилятор может тупо вырезать все ветки, которые ведут к этому гото?
    Поддержал: Oлександр V
  • Самый быстрый Индиан

    не надо так. В map<k,v> нет никаких значений произвольной длины, все значения занимают sizeof(v) байтиков. Посмотри уже наконец, как работает мапа, там несложно

  • Самый быстрый Индиан

    как засунуть строку в value?

  • Как реализовать прикладной протокол на основе TCP

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

    Поддержали: Vla dimir, Andriy Gnyp
  • Как реализовать прикладной протокол на основе TCP

    Протокол TCP находится на транспортном уровне OSI. Его задачи:

    доставить пакеты;
    переотправка потерянных пакетов;
    соблюдение исходного порядка пакетов.

    Еще одна задача протокола tcp — организовать Flow Control, чтобы принимающая сторона случайно не захлебнулась. В двух словах: если трансмиттер отправляет данные быстрее, чем бизнес логика ресивера успевает их обработать, то передача данных останавливается (пока в буфере ресивера снова не появится достаточно свободного места).

    Ваш клиент ломает flow control на прикладном уровне — вы всегда готовы обрабатывать событие data, как сильно бы вас не дудосили. Это частая боль программ написанных на событиях и коллбеках. Когда работаешь с сокетами синхронно (вызвал блокирующий socket.read(), обработал кусок данных, опять вызвал read()), то флоу контроль становится прозрачным для юзера и идеально работает. Нода же у себя под капотом дергает этот read() каждый раз, как только в сокете появляются свежие данные, и ей без разницы, как вы с этим справляетесь.

    Если такая проблема у вас произойдет, то, скорее всего, Connection.structs сьест всю память и вы поймаете OOM kill. Чтобы это пофиксить, придется реализовать лапшу из коллбеков хитроумный алгоритм, который будет вызывать socket.pause() и socket.resume()

    Также важно отметить, что протокол TCP производит фрагментацию пересылаемых данных.

    В общем все так, но если уж быть совсем занудой, то tcp ничего не фрагментирует, и нет понятия tcp пакета. Он просто скидывает все в единый поток из байтиков. Этот поток фрагментируется на куски нодой, когда ивент луп доходит до обработки события «в сокете шото появилось» и выгребает все содержимое tcp буффера в новый обьект.

  • Как реализовать прикладной протокол на основе TCP

    Приложение использует внешний сервис для получения потоковых данных. Для передачи данных по сети он использует протокол собственной разработки.
    Поддержали: Yurii Kovalenko, Oleksii Rumiantsev
  • Магистратура для IT 2021

    та забей

    Поддержал: Stas Ilnitski
  • Пауза, сериализация состояния программы и продолжение

    можно дампить всю память целиком, но в каждом последующем чекпоинте сохранять только инкрементальные изменения

    Поддержал: Artyom Krivokrisenko
  • Дейкстра уничтожил goto

    они не решат проблему, они ее создадут

    Поддержали: Oleksandr Suvorov, Denys Poltorak
  • Дейкстра уничтожил goto

    int do_some_stuff() {
        FILE *some_file;
        char *some_buffer;
        int result;
    
        pthread_mutex_lock(some_mutex);
        some_file = fopen(some_filename, "w");
        some_buffer = (char *)malloc(some_buffer_size);
    
        result = sub_1(some_file, some_buffer);
        if (result != 0) {
            goto finally;
        }
        result = sub_2(some_file, some_buffer);
        if (result != 0) {
            goto finally;
        }
        result = sub_3(some_file, some_buffer);
    
        finally:
        free((void *)some_buffer);
        fclose(some_file);
        pthread_mutex_unlock(some_mutex);
    
        return result;
    }
    
  • REST-сервис на Python или на JVM-based языке?

    фича серверлесс не в перформансе, а в том, что ты не морочишь себе голову во время деплоя. Для пет проекта самое то

    Поддержал: Grez
  • REST-сервис на Python или на JVM-based языке?

    Деды, перестаньте ворчать на серверлесс! Он значительно понижает порог входа и количество решаемых задач, разобраться в нем — дело 20 минут

  • 24 онсайти у Долині, або релокація (Update 2021/04/26)

    ше й https://perks.guide лежить((

  • Стоит ли поступать в институт или лучше идти на freelance и работать?

    Где взрослому человеку брать потом столько времени на дообразование? Увольняться и доучиваться?

    так ведь это довольно неплохой вариант

← Сtrl 123456...22 Ctrl →