https://www.sberbank.ru/proxy/services/rates/public/actual?rateType=ERNP-41&isoCodes[]=USD&isoCodes[]=EUR®ionId=038
https://www.sberbank.ru/proxy/services/rates/public/actual?rateType=ERNP-2&isoCodes[]=USD&isoCodes[]=EUR®ionId=038
struct ExponentialInteger
{
private readonly int value;
private readonly int exp;
//.ctor
// operator +
// operator -
// operator *
// operator /
// operator implicit
// operator explicit
// IEquatable, IComparable, IFormattable
// итд
private static string[] suffix = new[]
{
"", "K", "M", "t", "q", "Q", "s", "S", "o", "n", "d", "U", "D", "T", "Qt", "Qd", "Sd", "St", "O", "N", "v", "c"
};
public override string ToString()
{
if (exp >= suffix.Length || exp < 0)
{
return $"{value}*10^{exp}";
}
else
{
return $"{value}{suffix[exp]}";
}
}
}
go env
– GOMODCACHE
). По умолчанию после установки эта переменная смотрит на /Users/user.name/go/pkg/mod
.go mod vendor
).WebAPI браузера поедоставляет вещи типа setTimeout, или async await, коллбек-функции которые закидываются в очередь, а оттуда в порядке своей приоритетности попадают в стек по очереди. Промисы обрабатываются в приоритетном порядке.Обычные callback-функции не попадают в очередь, они вызываются в общем стеке. Кроме промисов в приоритетную очередь микрозадач функция может быть добавлена через queueMicrotask(function).
А что если "асинхронные" операции занимают много памяти и выполняются долго. Если они выполняются в том же стеке, то они также перекроют доступ ко всем остальным операциям?Асинхронные операции выполняются отдельными служебными потоками параллельно с основным стеком. Поэтому сами они не могут заблокировать основной стек. По завершению/таймеру асинхронная операция кладёт функцию в очередь микро- или макрозадач.