Ce a permis creșterea capacității serviciului de replicare de la aproximativ 300 la 700 de mesaje pe secundă? Cum au fost folosite ConcurrentDictionary și SemaphoreSlim?
C#
Sarcină: Evenimentele sunt primite de la utilizatori, fiecare trebuie verificat într-o sursă externă, dar aceasta nu răspunde imediat. Implementați VerificationService care: - Acceptă evenimente de la utilizatori - Încearcă să verifice fiecare contactând un serviciu extern - Dacă răspunsul este PENDING, încearcă să re-trimită acest eveniment nu mai devreme de 5 secunde - Maximum 3 încercări, după care ID-ul evenimentului este afișat în stdout cu status FAILED - Evenimentele procesate cu succes sunt afișate în stdout cu status VERIFIED Modelele și stubs-urile dependențelor externe sunt deja implementate: 1. VerificationStatus 2. Event 3. VerificationResult 4. IExternalSource public enum VerificationStatus { OK, Pending, Error } public record Event(string Id, string Payload); public record VerificationResult(VerificationStatus Status, string? Message = null); public interface IExternalSource { VerificationResult Verify(string eventId); } public class VerificationService { private readonly IExternalSource _externalSource; private const int MaxAttempts = 3; private static readonly TimeSpan RetryDelay = TimeSpan.FromSeconds(5); public VerificationService(IExternalSource externalSource) { _externalSource = externalSource; } // TODO: implement }
int i = 1; object obj = i; ++i; Console.WriteLine(i); Console.WriteLine(obj); Console.WriteLine((short)obj);
Lista<Action> acțiuni = new List<Action>(); for (var count = 0; count < 10; count++) { acțiuni.Add(() => System.Console.WriteLine(count)); } foreach (var acțiune in acțiuni) { acțiune(); } Ce va fi în stdout?
Ce se întâmplă când aștepți prima sarcină finalizată cu Task.WhenAny în timp ce celelalte sarcini încă rulează?
Care sunt valorile lui Sum și Count?
Cum să organizezi așteptarea pentru evenimente noi dacă coada este goală, și care este diferența între Channel și ConcurrentQueue?
Cum să limitezi gradul de paralelism atunci când procesezi un set de sarcini asincrone?
public class A { public virtual void Print1() { System.Console.Write("A"); } public void Print2() { System.Console.Write("A"); } } public class B : A { public override void Print1() { System.Console.Write("B"); } } public class C : B { public new void Print2() { System.Console.Write("C"); } } static void Main(string[] args) { var c = new C(); A a = c; a.Print1(); a.Print2(); c.Print2(); } Ce va fi în stdout?
public struct S : IDisposable { private bool dispose; public void Dispose() { dispose = true; } public bool GetDispose() { return dispose; } } Ce va fi în stdout?
[nume] povestește-ne despre o sarcină sau soluție interesantă de la locul tău de muncă actual sau anterior pe care ai dori să o împărtășești.