Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (25)

Лучшие ответы пользователя

Все ответы (27)
  • Какая из баз данных лучше всего подходит для хранения большого словаря?

    @Miron11
    Пишу sql 20 лет. Срок :)
    А Вы не пробовали добавить индекс на поле из 4-х байтов?
    На MySQL индексы работают вполне приемлемо, главное, чтобы это был первый индекс созданный на таблице, тогда InnoDB ( default ) движок по умолчанию создаст кластеризованный индекс.
    Вот синтаксис: https://dev.mysql.com/doc/refman/8.0/en/create-ind...
    обратите внимание на варианты UNIQUE, это поможет подтвердить, что ключ каждого текстового поля действительно уникальный.
    Потом, во время запроса, надо будет аккуратно проверить синтаксис, чтобы подтвердить что запрос создан так, что индекс будет использован - тип данных в WHERE должен соответствовать, и что запрос действительно его использует ( по моему в MySQL это опция EXPLAIN ).
    Если все сделано верно, то скорость выполнения запроса с миллиардом записей должна быть вполне приемлема.
    Осталось проверить некоторые детали. Из вопроса не очень понятно, если база многопользовательская, или обслуживает пользователя работающего на этой же машине, есть ли одновременный доступ нескольких пользователей, иными словами доп информация по масштабу использования базы может помочь. И хотя SQLite намекает на чисто локальный характер записей, это детали которые лучше подтвердить, чем оставить за кадром.
    Кроме того, какой характер ключа из 4 байтов, это число или бинарная конструкция, если бинарная, приемлемо ли его перевести к типу Integer, это существенно для скорости индекса.
    ---
    Если же индекс уже создан, и не показывает результаты, которые Вы ожидаете, детали запрошенные выше помогут разобраться.
    Ответ написан
  • Как сделать поиск по регулярному выражению SQL?

    @Miron11
    Пишу sql 20 лет. Срок :)
    У Вас есть 2 основных подхода
    1. через 2 выражения пользуясь операторами перечисленными здесь
    https://dev.mysql.com/doc/refman/8.0/en/regexp.html
    Возможно не всеми в любой комбинации, но существенно то, что один оператор должен найти часть последовательности символов, которые должны ответить, например
    SELECT *
    FROM `post`
    WHERE
    -- 1-е выражение
    `description` LIKE 'itemid=34543%'
    -- 2-е выражение
    AND
    `description` NOT RLIKE 'itemid=34543[0-9]+'

    2. через 1 регулярное выражение, очень похожее на то, которое Вы предложили, но видимо с \ ( backslash ) символом проведенным дважды, на той же странице объясняется почему: "Because MySQL uses the C escape syntax in strings (for example, \n to represent the newline character), you must double any \ that you use in your expr and pat arguments."
    Если по той или иной причине выражение артачится, наверное можно воспользоваться выражением на один символ длиннее, для выражения цифр [^0-9]
    Ну и наверное надо воспользоваться плюсом, а не звездочкой справа [^0-9]+, иначе эта часть становится не обязательной, и запрос может выбрать, например, значение 'itemid=34543'
    ---
    Всего хорошего!
    Ответ написан
  • Какой компилятор для языка Си посоветуете?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Я, по доброте душевной, думал Вам Windows SDK с MSBuild посоветовать. И тут прочел MSDN статью по WSL и почувствовал себя безнадежно отставшим от жизни :)))))))))))))))))
    https://code.visualstudio.com/docs/cpp/config-wsl
    Но потом посмотрел здесь https://docs.microsoft.com/en-us/cpp/build/buildin...
    и немного успокоился
    https://docs.microsoft.com/en-us/cpp/build/buildin...
    Вспомнил, что есть Visual Studio Community Edition, есть, хорошо законспирированный, но неубиваемый, Борлановский компайлер, который после 10 часов поиска раз в 10 лет спасает корабль, и все встало на место.
    Vulkan... запретный плод сладок.
    Ответ написан
  • Как вывести все индексы массива, соответствующие условию?

    @Miron11
    Пишу sql 20 лет. Срок :)
    public class StatsService {
    
        public ArrayList<Integer> monthsOfTopSales(long[] sales) {
    
            long topSale = sales[0];
            Integer month = 0;
            ArrayList<Integer> topMonths = new ArrayList<Integer>();
    
            for (long sale : sales) {
                month ++;
                if (topSale < sale) {
                    topSale = sale;
                    topMonths.clear();
                    topMonths.add(month);
                } else if ( topSale == sale ) {
                    topMonths.add(month);                
                }
            }
            return topMonths;
        }
    
    }
    Ответ написан
  • Как указать в Startup путь станартный Web api?

    @Miron11
    Пишу sql 20 лет. Срок :)
    По идее в Web API не существует реализации. Вы сами создаете и физический и логический слой службы. А Web API дает Вам только набор ( весьма запутанных ) стандартных сочленений различных устройств.
    Поэтому так или иначе Вам необходимо будет выбрать платформу, на которую ляжет обертка Web API, а сверху реализация продукта.
    Отказавшись от физической реализации, и взяв на себя полностью ответственность за её создание Вы выигрываете в простоте платформы ( это не ирония и не ехидство, это действительно так ). Поскольку, несмотря на количество очень тесно состыкованных сочленений и оберток Wrb API, правила их состыковки единообразны, лекала легко поддаются интуитивному запоминанию, а материализация не такое уж и сложное дело.
    MVC, с другой стороны, это уже реализация, и здесь и маршрутизация и каждое отступление от предписанных реализацией шагов, это практически безнадежное предприятие.
    По этой причине в UI пользуются MVC. Здесь меньше внимание, насколько оптимально машина верстает страничку, а вот возможность расцветить текст образами и эффектами, чтобы захватить воображение пользователя, есть все инструменты.
    Web API это платформа, когда каждый винтик машины необходимо подчинить передаче данных. Это позволяет на связке из нескольких сравнительно дешевых двух - процессорных машин строить предприятия по сборке самолетов, экономя на компьютерах миллионы долларов.
    Ответ написан