Я являюсь студентом по обмену из российского ГМИГ имени Трофима Лысенко (Главный Мурманский Институт Генетики). Учился на инженера-программиста и пол года назад был отправлен в Америку в качестве студента по обмену. Это у меня получилось благодаря двойному гражданству (я гражданин Ирана и России).
Рубрика «.net» - 4
Все новые функции C# 13 | Что нового в .NET 10, почему нет .NET 9
2023-04-01 в 15:17, admin, рубрики: .net, 1 апреля, C#, КодоБред, ненормальное программирование, юморArrayPool<T>: подводные камни
2023-03-30 в 15:04, admin, рубрики: .net, C#, memory management, pool, pooling, высокая производительность, Программирование
Автоматическая сборка мусора упрощает разработку программ, избавляя от необходимости отслеживать жизненный цикл объектов и удалять их вручную. Однако, чтобы сборщик мусора был полезным инструментом, а не главным врагом на пути к высокой производительности — иногда имеет смысл помогать ему, оптимизируя частые аллокации и аллокации больших объектов.
Для уменьшения аллокаций в современном .NET предусмотрены Span/Memory<T>
, stackalloc
с поддержкой Span
, структуры и другие средства. Но если без объекта в куче не обойтись, например, если объект слишком большой для стека, или используется в асинхронном коде — этот объект можно переиспользовать. И для самых крупных объектов — массивов, в .NET встроены несколько реализаций ArrayPool<T>
.
В этой статье я расскажу о внутреннем устройстве реализаций ArrayPool<T>
в .NET, о подводных камнях, которые могут сделать пулинг неэффективным, о concurrent-структурах данных, а также о пулинге объектов, отличных от массивов.
Сказка про Method as Parameter
2023-03-13 в 6:11, admin, рубрики: .net, C#, dotnet core, garbage collector, method, optimization, Блог компании КонтурПривет. Меня зовут Саша Денисов, я инженер в Контуре.
Я веду блог во внутренних ресурсах компании и хочу поделиться им с вами. Это серия преимущественно развлекательных статей на инженерные темы, которые не претендуют на научность и полноту знаний в них. Каждая следующая статья зарождается в моменте, когда при решении очередной рабочей задачи в Контуре я (или мои близкие коллеги) сталкиваюсь с чем-то, что вдохновляет меня.
Нужен ли ConfigureAwait?
2023-03-07 в 19:01, admin, рубрики: .net, C#, configureawait checker, асинхронность
Мне никогда не нравилась многословность кода. Длинные и подробные названия упрощают работу с бизнес-логикой, но технические детали кода хочется держать краткими, чтобы они отвлекали на себя минимум внимания.
Одна из многословных конструкций .NET связана с деталями реализации асинхронности и обросла кучей мифов. Про неё спрашивают на собеседованиях, код-ревью, делают обязательной, добавляя в правила линтера. Это .ConfigureAwait(false)
, сопровождающий каждый await
в коде.
В этой статье я расскажу, зачем нужен ConfigureAwait(false)
и как обойтись без него.
Swagger и полиморфные контракты в .NET 7
2023-03-07 в 13:00, admin, рубрики: .net, C#, dotnet, dotnet core, dto, json, ruvds_статьи, swagger, Блог компании RUVDS.com, документация, ооп, полиморфизм, ПрограммированиеНе так давно состоялся релиз седьмой версии платформы .NET. Он привнёс множество изменений и интересных нововведений, по которым уже успели пробежаться в рамках новостного обзора.
В этой статье мы рассмотрим развитие сериализации платформы (System.Text.Json
) вместе с возможностями, которые она открывает.Читать полностью »
Как изменять строки в dotnet
2023-02-25 в 11:44, admin, рубрики: .net, C#, csharp, dotnet, invoke, span, изменение строк, ненормальное программирование, строкиСтроки в dotnet являются предназначенной только для чтения последовательностью Char
-ов. Об этом явно написано в документации MicrosoftЧитать полностью »
Rust vs C#: два способа решить проблему ссылок в структурах
2023-02-23 в 9:55, admin, рубрики: .net, C#, RustВозврат ссылки на структуру из метода, объявленную в этом самом методе, является одним из самых классических примеров "висячих ссылок". Но что если возвращается не ссылка, а структура, содержащая ссылку? И не явно, а через вызов другого метода? Как понять, где у нас явный "провис ссылки", а где нормальный код? Звучит как какая то "дичь", но подобный кейс - вполне реальная боль для авторов языков программирования.
Давайте посмотрим на примере Rust и C# как авторы решают эту неоднозначную проблему.
Постановка задачи
Сортировка слиянием — не так просто, как кажется
2023-02-03 в 8:28, admin, рубрики: .net, C#, Unicode, Алгоритмы, внешняя сортировка, оптимизация, Программирование, сортировка слияниемВ одной конторе соискателю на позицию Senior C# developer выдали тестовое задание: отсортировать файл со строками определенного формата.
Требования такие:
-
Формат строки: число, точка, пробел, далее любые символы до конца строки.
-
Порядок сортировки — сначала сортируем текстовой части строки, потом по числу если текстовые части совпадают.
-
Кодировка — UTF-8.
-
Размер файла — 100гб - гарантированно больше объема ОП.
-
Должно отработать за 1 час на машине проверяющего, вряд ли там будет супер-быстрый SSD и огромное количество оперативной памяти.
Дельта компрессия и квантизация объектов в C#
2023-01-10 в 18:43, admin, рубрики: .net, C#, Gamedev, unity, разработка игрCтатья затрагивает тему сериализации данных, которые передаются по unreliable каналам.
В первую очередь это касается реалтайм игр, которые критичны к сетевым задержкам, имеют активное общение клиента и сервера, например, 10 - 60 раз в секунду и используют UDP протокол.
Домашнее облачко или что можно сделать с Orange Pi 5 (Часть 1)
2023-01-02 в 22:40, admin, рубрики: .net, AArch64, api, arm64, C#, docker, kubernetes, Orange Pi, Orange pi 5, Raspberry Pi, rk-3588, SBCРаботаю разработчиком и довольно часто бывает нужны какие то сервисы локальные под рукой, что то дорогого покупать не хотелось, арендую обычно когда выкатываю к заказчику. Подумал поискать где можно хранить нужные для разработки, хранения и демонстрации сервисы (сайты, API и другое) . Наткнулся я на очень миниатюрное и экономичное решение, это SBC - single-board computer, одноплатные компьютера. Из того что хотелось бы это побольше памяти и ядер (потоков) процессора, а тут бонусом еще и миниатюрность, возможность легко перевозить, работать от power bank в случае необходимости.