Задать вопрос
  • Java и Android или C# и Unity - что выгоднее?

    Проще и выгоднее реализовать себя там, где есть интерес (не только денежный).

    Я бы на вашем месте вообще Java с интерпрайзом рассматривал, вы еще не старикан - есть время успеть вписаться.
  • Кто может разжевать асинхронные контроллеры?

    Виктор П., мне кажется потому, что вы пытаетесь искать сравнения синхронного подхода с асинхронным в рамках ASP.NET (очень узкая тема), вместо того, чтобы гуглить в сторону "Почему много потоков - это плохо?". Можно еще порыться в старых холиварах, почему взлетел NodeJS (как сервер), ведь он по природе вообще однопоточный.
  • Кто может разжевать асинхронные контроллеры?

    Виктор П.,
    к чему это синтетическое ограничение на количество потоков?
    переключение контекстов простаивающих потоков - это тоже не бесплатаня операция, при том абсолютно бесполезная. Чем меньше потоков выполняют один и тот же объем работ - тем выше общая производительность.

    мой начальник мне говорит, что в таком случае при асинхронном режиме у нас будет делаться дополнительная работа на приостановку/возобновление и приложение, написанное в синхронном режиме будет работать быстрее (и сдохнет позже).

    Сериализация/десериализация контекста потока при асинхронном IO происходит однажды, а переключение контекстов активных потоков - постоянно.
  • Кто может разжевать асинхронные контроллеры?

    Виктор П.,
    при превышении количества запросов (одновременно выполняемых) над количеством потоков в пуле сервер просто упадёт (в обоих режимах).

    Асинхронный режим может одновременно обслуживать больше запросов, чем реально использовать потоков под них: запрос ожидает ответа от БД, а поток возвращен в пул и уже обслуживает следующий запрос.
  • Что должен из HTML (4 + 5) знать профессионал Front-End-а?

    snap44, на самом деле самое непосредственное) БЭМ - это про деление страницы на семантические блоки.
  • Что должен из HTML (4 + 5) знать профессионал Front-End-а?

    Да в ней аж 750 страниц! Неужели все оттуда нужно знать WEBеру?

    Что случится, когда вы узнаете, что книжек такого объема нужно минимум 4-5?)
  • Кто может разжевать асинхронные контроллеры?

    Виктор П.,
    В синхронном режиме поток простаивает (он не жрёт ресурсы на вычисление, он ничего не делает).

    В этом состоянии он не обслуживает входящие запросы, тредпул вынужден начать создавать потоки вместо переиспользования, когда все потоки окажутся заняты. Это сильно бъет по производительности. Вот график сравнения сихронного режима с асинхронным, где явно видно, как резко начинает расти время ответа сервера по исчерпании тредпула (надлом синей кривой, у автора сконфигурирован на 50 потоков).

    image-thumb.png
    В асинхронном режиме система создает новый поток, в него записывается весь контекст первого потока. После этого первый поток возвращается в пул и может обрабатывать другие веб запросы.

    Контекст сериализуется и "первый" поток тут же возвращается в пул. Спустя много времени завершается I/O, берется свободный поток из пула, в нем восстанавливается контекст и он выполняет continuation.
    На этом самом "спустя много времени" (пока выполняется I/O) и получается экономия.
  • Кто может разжевать асинхронные контроллеры?

    Виктор П., вы привели пример с ToListAsync() из EF, что как раз связано с асинхронным вводом-выводам из БД. Здесь поток не будет выделяться сразу, а будет поставлен коллбек на системное прерывание события окончания чтения, а текущий обрабатывающий поток вернется в пул и будет ждать следующего клиента. Когда же данные появятся и их можно будет отдать клиенту - только тогда будет взят свободный тред из пула.

    Если в обработчике будут долгие операции, то, добавив сюда асинхронность, ОС выделит еще один поток, который будет обрабатывать этот EventLoop?

    Нет, event loop будет спокойно обрабатываться в том же потоке, что и раньше, а вашу задачу будет выполнять новый поток. По этой причине нельзя изменять GUI из потока, отличного от главного.

    Что за риск исчерпать пул потоков? Если мы выставим значение в максимальное, то количество потоков в пуле потоков станет равно количеству системных потоков?

    Любое максимальное значение можно превысить.

    Про "сигналить" тоже не очень понятно.

    Конкретно об MS SQL Server погуглите в сторону ASYNC_NETWORK_IO. И асинхронные системные вызовы. Суть в том, что вместо цикла ожидания (синхронного) мы (то есть функция фреймворка) может попросить системное API поставить выполняться некоторую задачу с IO, а по ее окончании позвать коллбэк (который будет continuation'ом кода после await).

    в пуле потоков для веба содержатся системные потоки ОС?

    Именно они. Преимущество тредпула перед созданием потоков непосредственно - они уже созданы и ждут работу. Их количество ограничено, по исчерпанию которых их нужно досоздавать (что уже требует дополнительных затрат), а ресурсы у системы не бесконечны - рано или поздно кончится память.

    И вот этим async/await мы просто освобождаем поток из пула, но создаем системный поток.

    С помощью await мы возвращаем поток в пул (откуда его могут сразу же заюзать другие запросы), а когда нам действительно понадобится выполнять код - берем из пула. Выгода в том, что поток не тратит время на бесполезное ожидание, тупо блокируясь, а освобождается.

    Получается, что нагрузка на сервер может быть увеличина, но система в целом будет загруженнее?

    Да, это выльется в большее максимальное число запросов, обрабатываемых за отрезок времени.
  • Как правильно реализовать архитектуру AJAX приложения?

    Чтобы выбрать инструмент (или отказаться от него) желательно уметь им пользоваться и знать, зачем он нужен.
  • Как изучить язык баз данных SQL?

    Важнее научиться правильно проектировать базы данных. В сравнении с этим сами запросы - это ерунда.
  • Как изучить язык баз данных SQL?

    Не стоит быть таким начинающим...

    В одну руку книгу - другой код писать. Откуда еще же черпать свежие знания для практики? Изучил какой-либо нюанс - попробовал - дальше пошел.
  • Как войти в фронтенд или как это учить?

    google не смог дать достаточно полного ответа.

    Это значит, что вы не смогли задать ему хороший вопрос. От необходимой вам информации спрятаться сложнее, чем ее найти.
  • Python Decimal и хранение денег в базе?

    fogersp, float - это крайне отвратительно (от чего тут у всех волосы зашевелились на руках), так делать нельзя ни в коем случае. Если вы не имеете возможности исправить биллинг, то decimal с вашей стороны поможет лишь снизить потери точности при операциях на вашей же стороне, глобально это вряд ли что-то исправит. Но это и не опасно.

    Могу предположить, что те СУБД и биллинги, которые вы видели, без нулей, используют не float и не явный decimal, а какой-нибудь спеицальный тип money, который с высокой долей вероятности будет правильно подстроенным decimal, "отрезающим" визуально лишние нули. Если же это не так, то все плохо.
  • Python Decimal и хранение денег в базе?

    fogersp, вы не смогли в иронию и включили какашкомёт, кто из нас жалок?) А могли бы нормально спросить о том, как устроен decimal в Python, а не иррациональную чуйку демонстрировать.
  • Python Decimal и хранение денег в базе?

    Ни разу в жизни не видел чтобы биллинги хранили значения баланса в таком виде, с нулями в конце. Понятно, что с точки зрения математики они ничего не решают, но вот как то не так это все.

    Если вы загуглите о том, как хранятся значения в памяти компухтера, вас ждет много интересных открытий.

    Пожалуй, в следующий раз, когда встречу холивар на тему: "Нужно ли программисту фундаментальное образование?", я буду кидать линк сюда.
  • Стоит ли читать Thinking in Java?

    Это книжка не только про язык, но и про паттерны, поэтому все еще годная, если язык изучается с нуля. Но и ею ограничиваться тоже не стоит.
  • Какие преимущества у C# и недостатки перед JS (Electron, NW.JS) для дескстопных приложений?

    Виктор П., .NET Native - по сути, AOT-компиляция в натив (что играет роль только на холодном старте), рефлекшн при этом будет так же тормозить и мы лишимся рантаймовых оптимизаций.

    Я бы топил за байт-код, который куда лучше оптимизируется и быстрее парсится, чем текстовый (!!!) аналог. Типизацию, пользовательские ValueType'ы и все вот это вот.

    В кордове можно использовать только то api, которое даёт кордова. Когда вы пишете на c#, у вас больше возможностей.

    Вы точно так же используете API фреймворка и CLR. Есть некоторое читерство unsafe, но это почти всегда будет вынужденной мерой, уж точно не лучшей практикой, используемой повсеместно. Но кордова может подключать нативные "плагины".
  • Какие преимущества у C# и недостатки перед JS (Electron, NW.JS) для дескстопных приложений?

    Кроличья нора глубже, чем вам может казаться. Вы пытаетесь сравнивать языки или платформы?

    Для того, чтобы писать десктопный софт на JS может быть всего две родственных причины:
    1. вы хотите мигрировать интерфейс сайта в новую программу
    2. у вас в распоряжении есть только веб-фронтендеры

    В остальных случаях стоит выбрать Qt.