‫En in deze video gaan we Kyuss behandelen en we gaan zien hoe we cues in onze applicaties
‫kunnen gebruiken. cues zijn significant en worden veel gebruikt door ons besturingssysteem, bijvoorbeeld om taken, planning en vele andere
‫processen af te handelen.
‫Cues moeten worden gebruikt wanneer de volgorde van de gegevens belangrijk is, zoals we in ons voorbeeld zullen zien.
‫Dus laten we doorgaan en allereerst een wachtrij definiëren om een wachtrij te definiëren die u kunt gebruiken om in de wachtrij te staan.
‫Trefwoordwachtrijen maken ook deel uit van de generieke verzamelingen, wat betekent dat we moeten definiëren
‫welk type A-wachtrij zal bevatten.
‫Dus in dit geval zal het een aantal gehele getallen bevatten, maar het kan ook elk ander type bevatten.
‫Het kan touwtjes vasthouden, het kan zelfs het hele object vasthouden.
‫Je bent dus volledig vrij om te bepalen wat je wilt dat dit item bevat.
‫Dus wachtrij dan minder dan ondertekenen, integreren en ondertekenen en dan is de naam van de wachtrij gelijk en dan kun
‫je hem meteen initialiseren zoals we hier doen, waar we gewoon een lege wachtrij maken die gehele getallen bevat.
‫OK, dus nu kunnen we doorgaan en items aan deze wachtrij toevoegen.
‫Om items toe te voegen om te beschuldigen, kunt u de NQ-methode gebruiken.
‫De NQ-methode voegt een object toe aan het einde van de wachtrij.
‫OK, dus als ik bijvoorbeeld een item zoals een toevoeg, zal dit item het eerste zijn, omdat het het eerste is dat
‫we opnemen, maar het zal ook het laatste zijn.
‫OK, dus zodra we er nog een toevoegen, is het nieuwe item het laatste item in de wachtrij.
‫OK, dus dat is hoe bestellen is gedaan.
‫Het is vergelijkbaar met een stapel, maar het verschil is dat een wachtrij wanneer je iets weggooit, dus wanneer
‫je een item laat vallen, het vanaf het begin van de wachtrij zal nemen.
‫Dus het andere item dat als eerste is gemaakt, wordt weggenomen of wordt als het ware uit de wachtrij
‫gehaald.
‫OK, dus om de Qs-items te bekijken, kunnen we de peak-methode gebruiken en deze methode geeft het eerste item in de wachtrij weer, dus
‫de voorkant van de wachtrij, om zo te zeggen.
‫Dus het is net een rij mensen waar je aan de balie staat en je wilt bijvoorbeeld iets bestellen, dan geeft
‫de methode je de eerste persoon in die rij die op het punt staat te bestellen.
‫Oké, dus laten we dit heel snel uitvoeren en kijken hoe dit eruit gaat zien.
‫En we zien dat de waarde vooraan in de wachtrij één is.
‫Laten we nu nog een paar waarden toevoegen om te zien hoe dat onze toepassing gaat beïnvloeden.
‫Dus hier ga ik de verschillende wachtrij-items toevoegen, dus ik ga Q1 en Q2 en Q3 beëindigen en ik gebruik alleen
‫deze nummers.
‫Een twee drie.
‫Het kunnen ook andere nummers zijn.
‫Het hoeft niet echt een, twee, drie te zijn.
‫OK, dus met peaking krijgen we het item dat aan het begin van de wachtrij staat.
‫Je kunt elke keer zien, ongeacht wat we aan de wachtrij toevoegen, dat het ons eerste item in de wachtrij
‫zal zijn.
‫Dus het wordt degene die wordt weergegeven toen we de Peek-methode gebruikten.
‫Om nu een item uit de wachtrij te verwijderen, zou u de dequeue-methode gebruiken.
‫Oké, dus hier stip je de wachtrij.
‫Dus deze dequeue zal nu het eerste gehele getal van onze wachtrij verwijderen en het zal het ook meteen opslaan.
‫We zouden dit dus kunnen opslaan, laten we dit bijvoorbeeld een wachtrij-item noemen, en het zal dan het resultaat
‫van dit dequeue-item opslaan.
‫Dus eigenlijk zal het er een opslaan, want dat is het eerste item dat we in de lijst hebben.
‫En dan zal Peking ook verschijnen, want nu is er geen meer.
‫Het eerste artikel is weg.
‫Dus nu is de waarde in de wachtrij twee omdat, nou ja, we hebben net het eerste item ontdekt.
‫Het is dus vergelijkbaar met het in een stapel gooien, maar het haalt het item aan het begin van de wachtrij weg in plaats van
‫het einde van de wachtrij of het einde van de stick, hoe je het ook wilt bekijken.
‫Je kunt natuurlijk ook proberen een item aan het begin uit de wachtrij te halen, als er geen
‫elementen in de kubus zijn, maar je zult een ongeldige bewerkingsuitzondering tegenkomen, de wachtrij is leeg, dus je
‫moet controleren of de wachtrij leeg is of niet voordat u dit uitvoert.
‫Dus hier kunnen we de dequeue-methode uitvoeren omdat we weten dat we zojuist iets hebben ontdekt.
‫Maar anders zou je de eigenschap count van je wachtrij gebruiken om erachter te komen hoeveel items je daar
‫hebt.
‫Dit is dus de eigenschap die u kunt gebruiken, krijgt het aantal elementen in de wachtrij
‫en u kunt vervolgens controleren of die groter is dan nul, bijvoorbeeld om te controleren of er
‫iets in de wachtrij staat dat u bijvoorbeeld kunt , wacht.
‫OK, dus in dit specifieke voorbeeld ga ik gewoon door en gebruik mijn.
‫Q Tel om dubbel te checken in een while-lus, en voor elk item ga ik het uit de wachtrij halen en noteer
‫ook het aantal items dat nog in de Q zit en ook het item dat is verwijderd.
‫Dus deze regel hier zal het item verwijderen door de dequeue-methode aan te roepen en tegelijkertijd zal het het
‫item hier weergeven, want dat is wat we hier gebruiken.
‫We gebruiken de string.
‫Rechts.
‫En met deze positie nul, zal het weergeven wat het resultaat is van de dequeue call.
‫En zoals je hier kunt zien, retourneert de dequeue-methode een geheel getal.
‫Dus we gaan hier een nummer weergeven.
‫Oké, dus laat me de wachtrij verwijderen die ik hier heb gebruikt om te demonstreren hoe een item uit de wachtrij kan worden gehaald
‫en laten we het opnieuw uitvoeren en je kunt de waarde anders zien dan deze.
‫En dan beginnen we hier eigenlijk met de draadlus.
‫Dat is het interessante deel.
‫Er wordt dus één woord uit de kubus verwijderd.
‫Nu hebben we nog maar twee items over.
‫Twee werden verwijderd uit de CUNA.
‫We hebben nog maar één item over en er zijn er drie uit de kubus verwijderd.
‫Nu hebben we nog maar nul items over.
‫Dus eigenlijk is de Q op dat moment leeg.
‫Oké, dus laten we kijken naar een min of meer realistisch voorbeeld, natuurlijk, we werken niet met
‫databases in dit eenvoudige voorbeeld hier, maar laten we zeggen dat we een e-commerceplatform hebben en we zijn een verkoper en we ontvangen
‫een heleboel bestellingen.
‫Deze bestellingen dienen zo te worden verwerkt dat de servicetijd, dus de wachttijd voor de klant, tot een minimum
‫moet worden beperkt.
‫Dit is de reden waarom we Q's gaan gebruiken omdat ze erg praktisch zijn, omdat we geven
‫om de volgorde van de bestellingen die binnenkomen.
‫Dus de volgorde van bestellingen, dat is een beetje een tongbreker hier, maar de volgorde waarin de gegevens
‫zijn ontvangen, oké, en daarmee bedoel ik de bestellingen zelf.
‫Dus laten we eens kijken naar deze zeer eenvoudige klasse die we hier gaan bouwen en ik ga het
‫hier in hetzelfde bestand plaatsen.
‫Schijfloze bestelling met een order-ID-eigenschap, de orderhoeveelheidseigenschap en vervolgens de constructor, die in feite alleen die twee
‫waarden instelt wanneer we een orderobject maken.
‫En dan hebben we dit afdrukbericht of deze procesbestellingsmethode die de bestel-ID afdrukt van het item dat
‫we momenteel bekijken.
‫Dus van de volgorde waar we momenteel naar kijken.
‫OK, dus wat ik nu zou willen doen, is dat ik methoden zou willen maken in mijn
‫programmaklasse.
‫Dus ik ga het nog steeds hier in deze beugel plaatsen.
‫En de werkwijze, zij gaan de bestellingen van de verschillende vestigingen verzorgen.
‫Dus laten we zeggen dat we twee verschillende vestigingen hebben waar we bestellingen vandaan kunnen halen.
‫Laten we zeggen dat we verkopen op Amazon en tegelijkertijd bijvoorbeeld bij Best Buy, en dan krijgen we
‫die bestellingen nu.
‫Nu gaan we het niet te ingewikkeld maken waarbij we gaan kijken welke branch is wat de volgorde van de verschillende
‫branches doet, of iets wat je natuurlijk als een uitdaging voor jezelf zou kunnen zien als je
‫dat wilt ontwikkelen .
‫Maar we gaan gewoon zeggen: oké, geef me de bestellingen van elk in de juiste volgorde en geef me
‫ook de bestellingen van filiaal naar in de juiste volgorde.
‫OK, dus hier is dit tak één met een heleboel bestellingen en dan hebben we tak twee met een heleboel
‫woorden.
‫Dus we krijgen de gegevens.
‫Laten we zeggen dat we deze gegevens uit een database halen waar we controleren, oké, wat waren de orders?
‫En we zouden ze waarschijnlijk op datum controleren, zodat elke bestelling ook een datum zou krijgen.
‫Hier hebben we de bestellings-ID, maar proberen meestal ook op te slaan wanneer deze is besteld, enzovoort.
‫Maar we gaan het simpel houden voor dit voorbeeld.
‫OK, dus we hebben nu een reeks bestellingen in beide voorbeelden.
‫En wanneer we de methode orders ontvangen van tak één en twee noemen, zullen ze in feite gewoon een volgordearray
‫omdraaien.
‫Dus hier een scala aan bestellingen.
‫OK, dus dat is wat deze verklaring hier doet, bestellingen retourneren.
‫Nu, in ons specifieke voorbeeld, zal de bestellings-ID in feite uniek zijn voor de twee verschillende bestellingen, dus ze
‫zullen bij wijze van spreken al in de juiste volgorde staan.
‫OK, dus dit is bestelling één in bestelling twee, dan hebben we bestelling drie en vier en vijf van
‫tak twee en dan 's avonds en tak één, kwam er nog een bestelling en iemand kocht 10 van onze
‫artikelen.
‫Nu, in onze hoofdmethode, kunnen we een wachtrij maken en we kunnen al deze dingen hier kwijt en onze hoofdmethode, we
‫kunnen nu doorgaan en een wachtrij met bestellingen maken.
‫Oké, dus hier, wachtrijvolgorde.
‫Je kunt zien dat dit nu geen eenvoudig type zoals integer zal zijn, maar het zal in
‫feite een heleboel orders bevatten.
‫Dat is het leuke van de wachtrij.
‫Het zijn dus niet alleen simpele types en ik noem deze wachtrij voor één bestelling en ik ga het
‫meteen hier initialiseren.
‫En dan kunnen we op dit punt doorgaan en al onze bestellingen die we van Branch 1 krijgen in de wachtrij plaatsen door dit for-lus
‫hier te gebruiken, dit voor elke lus.
‫Dus we gaan door elke afzonderlijke bestelling die ik hierin O ga noemen voor elke lus in
‫deze iteratie in onze ontvangstorders van Tak één.
‫Dit hier zal van het type orderarray zijn.
‫OK, dus als we deze methode aanroepen, zal het een reeks bestellingen retourneren, zoals je hier ziet.
‫Dus in principe zal dit voor elke lus de orders doorlopen die we binnen deze orderarray hebben en het
‫zal door elk van hen kijken.
‫Dus alles zal eerst deze volgorde zijn, dan zal het deze volgorde zijn, dan zal het die volgorde zijn.
‫En voor elk van hen zal het die orders bevatten.
‫OK, dus dat is wat dit voor elke lus doet.
‫En dan maken we ook een andere voor elke lus voor de andere tak.
‫Dus.
‫Hetzelfde geldt hier voor elke lus, allemaal in bestellingen die zijn ontvangen van tak twee.
‫OK, dus dit is Branch-kerel, dit is Branch één en hetzelfde geldt.
‫Dus hetzelfde concept is van toepassing.
‫Dus voor de bestellingen, we gaan één voor één door onze wachtrij en dan zullen we de elementen uit onze
‫wachtrij verwijderen en verwerken totdat onze wachtrij leeg is en alle bestellingen uiteindelijk zijn verwerkt.
‫OK, daarom hebben we hier deze procesbestelmethode die de bestellingen zal verwerken.
‫Oké, dus nu kunnen we verder.
‫En in plaats van onze hoofdmethode hierboven, kunnen we, als we eenmaal de orderrij hebben met alle
‫items erin, er doorheen gaan en kunnen we controleren of de orderrij niet leeg is en zolang deze niet leeg is.
‫Dus zolang de bestellingen in de wachtrij staan, is het aantal groter dan nul.
‫We gaan deze while-lus uitvoeren en we gaan de volgorde vooraan in de wachtrij verwijderen.
‫Dus de volgorde die als eerste binnenkwam, om zo te zeggen, en sla deze op in een variabele die huidige volgorde wordt genoemd.
‫OK, dus we hebben dit bestelobject, dat de huidige bestelling gaat heten, wat in feite het resultaat zal zijn
‫van het in de wachtrij plaatsen van het eerste item van onze bestellingenwachtrij.
‫Dus eigenlijk eerst dit item weghalen, dan dit item, dan dat item, dan dit item dan dat
‫en dat ene, OK, en dan zal het ze allemaal stap voor stap verwerken.
‫Dus verwerking in ons geval zal iets heel eenvoudigs zijn en we zullen het gewoon op de console afdrukken.
‫Maar u kunt hier natuurlijk iets veel complexers op de achtergrond uitvoeren.
‫Dit kan een aantal gebeurtenissen veroorzaken, bijvoorbeeld het verzenden van een e-mail naar een
‫medewerker die het moet regelen of welk verwerkingssysteem dan ook dat u in uw bedrijf gebruikt.
‫Oke.
‫En ja, dat is het eigenlijk.
‫Dus laten we nu deze applicatie uitvoeren om de resultaten te zien en te zien dat bestelling
‫één is verwerkt, bestelling twee is verwerkt, dan bestelling zes, dan drie, vier, vijf.
‫OK, dus we verwerken de orders, natuurlijk, in de volgorde waarin we ze hebben gestuurd. OK, we voeren
‫ze uit.
‫Je kunt hier zien dat we eerst in de rij staan van Tak één en dan van Tak twee.
‫Dus stel je voor voor het volgende scenario waarin de bestellingen, ze intern in het systeem
‫worden aangemaakt, maar ze eerst moeten worden geaccepteerd en volledig naar de verwerkende entiteit moeten worden gepusht, wat die entiteit
‫ook is, zoals ook het andere kantoor bijvoorbeeld.
‫En dat doen ze bijvoorbeeld aan het eind van de dag.
‫Dus First Branch één maakt hun personeel af en ze zeggen: oké, we nemen die orders aan.
‫En dan later die dag, want laten we zeggen dat ze in een andere tijdzone zitten.
‫Tak twee zegt bijvoorbeeld: ja, we zijn het eens.
‫Welnu, we sturen onze bestellingen op dat moment ook als goedgekeurd, en dan worden ze verwerkt.
‫OK, dus zo zou dit voorbeeld bijvoorbeeld kunnen worden beschouwd.
‫Rechts.
‫Anders zou je ze natuurlijk meteen bestellen op basis van hun ID of op basis van het tijdstip waarop
‫ze zijn gemaakt.
‫Ja is goed.
‫Nu heb je dus een zeker idee van hoe deze bestellingen werken en hoe de wachtrijen werken.
‫Dat is het belangrijkste deel.
‫U kunt nu dus uw eigen wachtrijen maken en deze in uw toepassingen gebruiken.
‫Oke.
‫Dus ik hoop dat je genoten hebt van deze video.
‫Tot ziens in de volgende.