Τι επέτρεψε την αύξηση της διαμέσου υπηρεσίας αναπαραγωγής από περίπου 300 σε 700 μηνύματα ανά δευτερόλεπτο; Πώς χρησιμοποιήθηκαν τα ConcurrentDictionary και SemaphoreSlim;
C#
int i = 1; object obj = i; ++i; Console.WriteLine(i); Console.WriteLine(obj); Console.WriteLine((short)obj);
Εργασία: Λαμβάνονται γεγονότα από χρήστες, καθένα πρέπει να επαληθευτεί σε εξωτερική πηγή, αλλά αυτή δεν απαντά άμεσα. Υλοποιήστε το VerificationService που: - Δέχεται γεγονότα από χρήστες - Προσπαθεί να επαληθεύσει κάθε ένα επικοινωνώντας με μια εξωτερική υπηρεσία - Αν η απάντηση είναι PENDING, επαναλαμβάνει την αποστολή αυτού του γεγονότος όχι νωρίτερα από 5 δευτερόλεπτα - Μέγιστο 3 προσπάθειες, μετά τις οποίες το αναγνωριστικό του γεγονότος εμφανίζεται στο stdout με κατάσταση FAILED - Επιτυχώς επεξεργασμένα γεγονότα εμφανίζονται στο stdout με κατάσταση VERIFIED Τα πρότυπα και οι σφραγίδες των εξωτερικών εξαρτήσεων έχουν ήδη υλοποιηθεί: 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 }
Ποιες είναι οι τιμές των Sum και Count;
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(); } Τι θα είναι στο stdout;
Λίστα<Action> ενέργειες = new List<Action>(); για (var count = 0; count < 10; count++) { ενέργειες.Add(() => System.Console.WriteLine(count)); } foreach (var ενέργεια in ενέργειες) { ενέργεια(); } Τι θα είναι στο stdout;
Τι συμβαίνει όταν περιμένουμε την πρώτη ολοκληρωμένη εργασία με Task.WhenAny ενώ άλλες εργασίες εξακολουθούν να εκτελούνται;
Πώς να περιορίσετε το βαθμό παραλληλισμού κατά την επεξεργασία ενός συνόλου ασύγχρονων εργασιών;
Πώς να οργανώσετε την αναμονή για νέα γεγονότα αν η ουρά είναι άδεια, και ποια είναι η διαφορά μεταξύ Channel και ConcurrentQueue;
public struct S : IDisposable { private bool dispose; public void Dispose() { dispose = true; } public bool GetDispose() { return dispose; } } Τι θα είναι στο stdout;
[όνομα] πες μας για μια ενδιαφέρουσα εργασία ή λύση στην τρέχουσα ή προηγούμενη εργασία σου που θα ήθελες να μοιραστείς.