Точных данных по rps я вам не скажу, но направлю на подумать.
1) Грубо прикидывать rps исходя из кол-ва заказов в день - неправильно, т.к. нагрузка в течении дня неравномернавя
2) Если перечитать статью, то можно заметить, что с обычной нагрузкой проблем не было. Проблемы были при старте продаж хамеров (товаров по супер низкой цене). Это когда условно 10к товаров сметают за пару секунд. 1 товар в одни руки. При этом далеко не у всех резерв завершается успешно как у вас.
Теперь вопрос, что будет с вашей системой, когда в неё прилетит под 10к RPS?
По сути база. Если есть класс со статическими методами, то просто делаем обёртку с интерфейсом за которой скрываем статический класс и мокаем интерфейс обёртки.
В Вашем же случае это выглядит ни как класс со статическим методом, а как экстеншен для интерфейса и часто такие экстеншены сделаны для упрощения работы с интерфейсом, то есть вызывают методы интерфейса. В итоге можно замокать тот метод интерфейса, который вызывает этот экстеншен и обойтись без лишней обёртки в коде.
Благодаря тому, что строка изменяется до того, как она была проинтернирована, этот способ не вызывает побочных эффектов, свойственных предыдущим методам.
Из этого складывается впячатление, что интернируются все строки, но это не так. Интернируются строки созданные на этапе компиляции, а именно константы. Строка созданная через string.Create string.Join и многими другими способами интернирована не будет, то есть все, что создаются во время работы приложения.
p.s. но если очень нужно есть специальный метод String.Intern
10км? Вроде не первое апреля, я не мог столько проспать…
А если серьёзно как они смогли добиться такого покрытия подняв частоту и скорость передачи, если у 5G радиус совсем небольшой и ему любые преграды мешают сильно больше, чем сетям прошлых поколений?
И не забудьте для файлов с картинками шашек задать копирование при сборке. Copy if newer(копировать более новые в русской версии студии) или Copy always(копировать всегда). Иначе когда кто-то будет собирать проект из исходников, при запуске новой игры будет ошибка их отсутствия.
п.с. в репозитории не должно быть артефактов сборки, т.е. папки obg и bin должны быть прописаны в файле gitignore, а также папка .vs. Вообще этот файлик должен создаваться автоматически, во всяком случае Github desktop создает его сам, нужно лишь указать для какого проекта создаётся репозиторий(в вашем случае проект Visual studio).
Отсылка к сериалу «Рик и Морти», которая давно стала мемом в массовой культуре. Отсылает она к серии, когда Рик уговорил на приключение, которое казалось коротким «приключение на 20 минут. Вошли и вышли.», а по факту оказалось очень тяжелым и затянулось на несколько дней.
Среди готовых конфигураций увидел Intel Core i7-6700 и Intel Core i3-3220. Это списанное железо получило новую жизнь или кто-то из сотрудников своё старое принёс?) Казалось такое в продаже уже давно найти нельзя.
Зачастую да, всё хорошо и тоже нравится качество додо, но пару раз были случаи, когда пицца было жесткой, т.к. её пережарили. Такое случается и совсем от этого не избавиться, но можно уменьшать количество «брака» разными путям и в статье один из них. И да, нужен комплексный подход. Было бы глупо отбраковывать половину товара, из-за не стандартизированного процесса приготовления.
Разве где-то ещё осталось железо не на Win10?(Сарказм) Грустно, но да, осталось. Использовать будут те, кому известна пользовательская база, т.е. разработка на заказ с длительной поддержкой. А позже и остальные подтянутся(если очередная технология в очередной раз не умрёт).
Статья конечно хорошая, но не рассказывает ничего нового, чего не было бы в других подобных. Но для новичков да, пусть лучше будет, а вот для тех кто заинтересовался и хочет глубже, лучше читать Pro .Net Memory Management от Konrad Kokosa и\или посмотреть доклады с CLRium о работе GC (есть в свободном доступе на ТыТруба)
Точных данных по rps я вам не скажу, но направлю на подумать.
1) Грубо прикидывать rps исходя из кол-ва заказов в день - неправильно, т.к. нагрузка в течении дня неравномернавя
2) Если перечитать статью, то можно заметить, что с обычной нагрузкой проблем не было. Проблемы были при старте продаж хамеров (товаров по супер низкой цене). Это когда условно 10к товаров сметают за пару секунд. 1 товар в одни руки. При этом далеко не у всех резерв завершается успешно как у вас.
Теперь вопрос, что будет с вашей системой, когда в неё прилетит под 10к RPS?
По сути база. Если есть класс со статическими методами, то просто делаем обёртку с интерфейсом за которой скрываем статический класс и мокаем интерфейс обёртки.
В Вашем же случае это выглядит ни как класс со статическим методом, а как экстеншен для интерфейса и часто такие экстеншены сделаны для упрощения работы с интерфейсом, то есть вызывают методы интерфейса. В итоге можно замокать тот метод интерфейса, который вызывает этот экстеншен и обойтись без лишней обёртки в коде.
Хорошая работа, вы молодцы! Но есть придирка и вопрос:
Больше похоже на статью из разряда "пиарюсь". На хабре хочется больше видеть технического, нежели "смотрите какой интересный проект".
Название специально выбрано совпадающим с набором виджетов для андроид?
Из этого складывается впячатление, что интернируются все строки, но это не так. Интернируются строки созданные на этапе компиляции, а именно константы. Строка созданная через string.Create string.Join и многими другими способами интернирована не будет, то есть все, что создаются во время работы приложения.
p.s. но если очень нужно есть специальный метод String.Intern
А если серьёзно как они смогли добиться такого покрытия подняв частоту и скорость передачи, если у 5G радиус совсем небольшой и ему любые преграды мешают сильно больше, чем сетям прошлых поколений?
п.с. в репозитории не должно быть артефактов сборки, т.е. папки obg и bin должны быть прописаны в файле gitignore, а также папка .vs. Вообще этот файлик должен создаваться автоматически, во всяком случае Github desktop создает его сам, нужно лишь указать для какого проекта создаётся репозиторий(в вашем случае проект Visual studio).
p.s. Да и решают авторы статьи и библиотеки разные задачи