Ciao, questo è che non vogliamo farlo anche noi.
Ben tornato.
Esaminiamo le operazioni di riduzione che sono anche operazioni permanenti.
Le operazioni di riduzione possono essere classificate in due tipi di gruppo.
Uno di questi è rappresentato dalla regolazione mentre l'altro dal metodo Collect.
Ma guarda il Collect Muntari coinvolgere i precedenti demo che abbiamo raccolto un flusso di
elementi in un flusso duellante di elementi possono anche essere raccolti in altri tipi come il set o la mappa.
Guarda il metodo Collect in una lezione successiva.
In questa particolare conferenza concentriamoci su questo e usiamo il metodo su entrambi questi metodi sono sovraccarichi per
introdurre B come metodi di overload e daremo un'occhiata a tutti e tre di essi.
Quindi concentriamoci solo sul metodo ridotto per ridurre il metano come suggerisce il nome per ridurre il flusso
di elementi in un singolo valore.
Quindi abbiamo il flusso di elementi e l'output sarebbe un singolo valore su alcuni sarebbe uno
degli esempi.
Quindi, se tu come un flusso di numeri e se vogliamo calcolare la somma del flusso di
elementi del flusso di numeri, allora possiamo usare il metodo di riduzione sotto il metodo ridotto accetta un'operazione chiamata un'operazione
di riduzione.
E questo dà un'impressione direzionale sarebbe la stessa operazione.
Allo stesso modo, potremmo voler trovare i massimi o minimi del flusso di elementi, ad esempio, nel nostro esempio di libri che è
stato usato come caso d'uso nelle nostre demo in cui abbiamo aggregato l'elenco di libri di
due fonti.
Amazon su Bansal No, ma potremmo voler trovare il libro con il prezzo più basso e per
questo possiamo usare il metodo ridotto e molto presto li elimineremo da questo.
Ora ecco come avviene la riduzione che funziona il metodo adieus.
Quindi, come ho detto prima, importa importa la loro operazione di produzione.
In questo caso stiamo preparando come una sorta di operazione di riduzione sarebbe una operazione di
reazione insufficiente sarebbe applicata ripetutamente sul flusso di elementi.
Quindi qui in alto abbiamo il flusso di Elements 4 elementi 5 1 3 e 6 sulla strada che ti circonda, che è
l'uscita è il 15 bit è mostrato in basso.
Quindi l'operazione elettorale sarà applicata ripetutamente.
Quindi inizialmente prenderà i primi due elementi di 5:01 e li aggiungerà per ottenere W6, quindi l'operazione somma
può essere applicata al risultato giusto.
U-6 l'elemento successivo in cui solo tre per ottenere WSI su un secondo più operazione verrà applicato sul
nuovo dissolvibile nove e il prossimo sei per ottenere il valore finale 15.
Ecco come funziona quel metodo di abuso.
Questa è un'operazione di estrazione della sintassi soi che è un operatore binario e produce un'opzione sottoutilizzata
usata per non mettere in errore l'opzione.
Ora se il flusso stesso è vuoto, l'opzionale non avrà alcun valore.
Quindi qui l'input è l'operatore binario e viene chiamato come nome del parametro come accumulatore.
Perché stiamo accumulando il valore dell'operatore binario perché sta andando a prenotare sugli elementi di Ustream
alla volta.
Ok, ecco perché è un operatore binario che è un'interfaccia funzionale.
Quindi dovremmo fornire un'implementazione dell'operatore binario qui come esempio.
Qui ne stiamo calcolando alcuni.
Quindi abbiamo gli stessi elementi 5 1 3 e 6 e stiamo aggiornando qui.
Array intero.
Quindi stiamo invocando il metodo di velocità della classe base.
Quindi, come fa questa fonte di flusso, lo scambiamo con questo o con il metodo, mi viene detto che
usa un metodo che accetta un operatore binario passando questo metodo chiamato sum che è un metodo statico nella
classe intera.
OK, questo è passato qui.
Quindi questa è l'operazione di redazione e il summit verrà invocato ripetutamente per questi elementi estremi e l'output è un'opzione
in base alla quale si avrebbe il migliore valore utilizzato con appena 50.
OK, ecco come appare.
Ora se la stessa cosa viene eseguita in modo imperativo nel modo tradizionale dovremmo usare un ciclo.
Quindi qui stiamo avendo la variabile chiamata sum e la somma manterrà il valore finale.
Quindi all'interno della speranza di Fardell stiamo passando attraverso la lista di numeri
che è il flusso di numeri e applichiamo ripetutamente l'operatore somma sui numeri e stiamo accumulando
il valore nel riepilogo.
OK, quindi la variabile avrà il valore dell'accumulatore finale.
Ora sappiamo che il problema che questo tipo di codice sta promuovendo è ingombrante.
Quindi ci vorrà un po 'di tempo per comprendere questo particolare tribunale.
E la seconda cosa è che se vogliamo combattere questa cosa, allora sarà doloroso.
Destra.
Ne abbiamo sentito parlare molto
E la terza cosa è che se abbiamo una variabile multipla condivisa e stiamo per paralizzarti, il che
significa che useremo il monitoraggio di lunedì, quindi dobbiamo sincronizzare il motore condiviso già pronto.
Ma così in questo caso la variabile omicida condivisa è davvero un parallelismo di questa cosa che
significa che il seguito sarà in qualche modo paralizzato.
Quindi verranno utilizzate più minacce per calcolare la somma in modo che queste diverse minacce
dovranno coordinarsi tra loro.
Altrimenti avremmo una condizione di gara.
Quindi dovremo sincronizzare alcune variabili per via del fatto che sarà costoso.
Quindi ciò che guadagneremo a causa della parallelizzazione della velocità è ciò che faremo per la parallelizzazione.
Quindi questo sarà compromesso perché la sincronizzazione è costosa.
Questo è un problema.
Abbiamo e ma di tribunale.
Ma se usi l'uso, non avremo questo problema.
Quindi se leggo il tuo post è solo la stessa corte ma il metodo stream è ora
cambiato con un altro metodo chiamato caso Potala o il parlamento è inserito tra il flusso sottoutilizzato e il
resto del codice è lo stesso.
Quello è che un metodo ebraico sarà in grado di paralizzarsi in modo aggraziato senza sincronizzazione.
OK, questo renderà molto efficiente.
Quindi questo è il vantaggio che abbiamo per usare il metodo e questo è il modo in cui funziona.
Quindi ancora una volta abbiamo i quattro elementi alti 1 3 e 6.
Ma in questo è che importa perché stiamo usando un live stream.
Sta andando a partizionare il flusso di elementi nel segmento segmenti uno su un segmento per notare
che ci sono solo due thread buckler su ciascun core.
L'operazione di deduzione verrà applicata ripetutamente proprio come avviene in un approccio sequenziale.
OK, così presto abbiamo esaminato l'approccio sequenziale di dove l'operazione veniva applicata in particolare.
Questo è ciò che accadrà in ciascuno di questi segmenti su ciascuno dei segmenti in quanto produce un valore
accumulato.
In questo caso sarebbe 6 sul mio.
Quindi, infine, il metodo ridotto ha applicato l'operatore più su questi due valori accumulati
per ottenere il valore finale di.
Ma una cosa da notare è che per far funzionare correttamente il metodo giusto l'operazione di produzione deve
essere sociata per essere conosciuta dalle scuole superiori.
Ecco come appare la proprietà associata qui stiamo usando l'operatore plus.
Quindi l'operazione di produzione è un'operazione positiva qui.
Quindi entrambe queste espressioni avranno lo stesso valore e sappiamo che anche questa è una vera proprietà.
Quindi se abbiamo partizionato gli elementi come nell'espressione sinistra in cui stiamo costruendo un segmento per produrre un
valore accumulato su C sarà nel secondo segmento.
Va bene.
Anche se è solo un valore singolo, questo valore e viene aggiunto sarà uguale all'espressione del lato
destro.
Se la partizione è stata eseguita nel modo in cui viene mostrata sul lato destro.
Quindi questa è l'essenza qui alla proprietà.
Ora, se abbiamo esteso a quattro elementi, ecco come appare.
Quindi tutte queste sono espressioni diverse che soddisfano le proprietà associate e tutte queste produrranno
lo stesso valore.
Ma tipicamente puoi aspettarti che la seconda espressione sia l'espressione che verrebbe usata in un
barile impostato.
In questo modo si sostiene che dividerebbe i quattro elementi in due segmenti su ae beb in un segmento C e
D sarà nel secondo segmento in cui i volumi cumulativi verranno aggiunti ancora una volta per ottenere
il valore finale.
Ma la cosa da notare è che qui l'ordine è importante, in più non
importa se l'ordine degli elementi del flusso è diverso, ma se stai considerando qualcosa come la concatenazione delle stringhe,
ovviamente l'ordine deve essere mantenuto.
Quindi l'ordine è importante e abbiamo bisogno di questa proprietà affinché il parallelismo funzioni.
Ma se questa operazione di produzione non supporta la pubertà colpita da sociate, allora possiamo vedere come nel
personaggio è probabile che abbia un risultato errato.
Inoltre, possiamo anche avere risultati incoerenti su più sessioni in media, è un esempio di un'operazione
di produzione che non è associata.
Puoi prendere una penna e un foglio e puoi lavorarci sopra vedrai
che la media non è un socio, non lo soddisfa e quindi fa la proprietà.
No questa è la seconda sintassi del metodo di utilizzo della lettura sta prendendo il ciclo Alamitos qui come prima.
Sta prendendo anche l'operatore binario ma il primo parametro è chiamato come identità sull'output, il valore
restituito è un B.
Quindi restituisce un valore piuttosto che restituire un'opzione un movimento precedente era facoltativo.
Ma questo restituisce il valore.
Ora qui il flusso è vuoto.
Quindi questa particolare questione di lettura ritornerà identicamente.
OK, quindi l'identità è come un valore predefinito e ciò lo farà.
Quindi qui abbiamo un esempio in cui stiamo facendo concatenazione di stringhe sull'identità una stringa vuota
sulla quantità ridotta di versi che l'uso inizialmente reso inizia a funzionare.
Prende l'identità e poi si apre al primo elemento.
Così in precedenza, quando abbiamo fatto l'esempio precedente, ma la stessa operazione ha preso i primi due elementi
e poi ha aggiunto i due elementi.
Ora se consideriamo la stessa operazione di somma per questo metodo di utilizzo corretto e diciamo
che anche tu hai un'identità zero, l'identità verrà aggiunta al primo elemento sui medici che verrà aggiunto al secondo
elemento.
Va bene, ecco come funziona questo particolare metodo e questo è come funzionerà anche la prossima parte.
Ora qui la chiamiamo identità di identità è solo una proprietà qui.
Quindi la stringa vuota è identità e se aggiungessimo quel lavoro sarebbe uguale all'aggiunta di Java con una
stringa vuota.
E il risultato è Djala, per questo è chiamato come una proprietà di identità.
Diamo un'occhiata a questo, diamo un'occhiata a un esempio qui.
Quindi qui vogliamo inventare queste tre string chiamate a e b così che questi sono gradi di uno studente
e vogliamo solo concatenarli e stiamo usando l'operazione più l'operazione di concatenazione in una configurazione in
modo che io usi la mia terza prima partizione li divide in due segmenti uno di loro è uno
e il secondo come gli ultimi due archi.
Un unbe.
E questo è ciò che sta accadendo in ciascuno dei segmenti.
OK in ciascuno dei thread.
Quindi abbiamo l'identità che è una stringa vuota e che è concatenata con a per ottenere il valore.
Quindi quello è il lato sinistro sul lato destro.
Per prima cosa abbiamo avuto l'identità concatenata con una per ottenere otto sotto il valore risultante sarà concatenata Vit
B per ottenere il valore finale.
AB Quindi abbiamo questi due segmenti e i valori accumulati sono a e AB e quindi applichiamo l'operazione di concatenazione ancora
una volta perché la concatenazione verrà applicata a scopo protettivo.
Quindi viene applicato ancora una volta, ottenendo questo valore finale a eb questa è una rappresentazione semplificata di
quel metodo ridotto.
Quindi il falso barometro è io, che in realtà è fuori dall'operazione di sottoproduzione che chiamiamo lo
fa.
E prende due valori di tipo B nel nostro esempio stringa ottiene due stringhe.
Produce una stringa.
Ma sappiamo che l'operazione di concatenazione è costosa.
L'operatore plus è costoso.
Quindi potremmo voler usare un generatore di stringhe.
Diamo un'occhiata a un esempio in cui introdurremo il metodo di utilizzo totale.
Quindi stiamo per concatenare AB con il metodo append e con il builder di stringhe.
Quindi, ancora una volta abbiamo le opzioni e questo è ciò che accade nelle nuove partizioni.
Quindi abbiamo prima il costruttore di stringhe.
OK, così il generatore di stringhe sarà l'identità qui intraprende una stringa vuota.
Io aggiungerei una stringa attraverso di essa.
OK.
Quindi, abbiamo un generatore di stringhe sotto il quale viene aggiunto con questa stringa.
Quindi quelli sono due tipi diversi.
Quindi abbiamo il generatore di stringhe e nella versione precedente del thread abbiamo le corde.
OK.
Entrambi erano dello stesso tipo e producevano una corda.
Ma qui abbiamo due diversi tipi di string builder e string che producono un generatore di stringhe e
sul lato destro ancora una volta stiamo prendendo il builder di stringhe vuoto accodandolo con un
razzo e un generatore di stringhe, quindi quel risultato sarà attivo e sarebbe per ottenere il generatore di stringhe off AB e questo è il
suo aspetto.
Quindi è un accumulatore.
Quindi abbiamo il giusto metodo di utilizzo e abbiamo io che in questo caso è un generatore di stringhe su
quel tipo di IA sei tu.
In questo caso, stiamo costruendo un costruttore con una funzione cumulativa che sta prendendo una U sotto D indisturbata usando
una U.
Quindi in questo caso sarebbe un costruttore di stringhe e Dean corrisponderebbe alla stringa.
Quindi se digiti l'espressione sinistra qui stringa una stringa vuota in alto e in basso.
In questo modo ti dirai in che modo tu e B riuscirai a generare un generatore di corde e le persone a generare distretto.
E sta generando un irrigatore.
Ecco perché abbiamo un generatore di stringhe fuori da a come output sul lato sinistro.
Ora la domanda è.
Quindi dobbiamo stringare sotto snaw on che dobbiamo inventare e aggiungerli per produrre un altro generatore di stringhe.
Ma la loro funzione cumulativa, come puoi vedere, sta prendendo due diversi tipi, A o B iniziano a
prenderti se ti piace nel caso della regolazione precedente che sta prendendo due tipi diversi.
Ma qui come essere fuori a e b fuori da una B.
Quindi, ciò significa che abbiamo bisogno di un'altra funzione e che è chiamata come una funzione combinatore.
Prende due elementi dello stesso tipo e produce un altro tipo su quel valore finale prodotto è
ciò che viene scritto è di un tipo.
Quindi quello sarebbe un altro costruttore di corde.
Ecco cosa sta succedendo qui.
Quindi il combinato non fa altro che il metodo append.
Quindi nel costruttore di stringhe abbiamo caricato tutti i metodi.
Quindi uno di questi abbiamo visto all'interno dell'accumulatore che quel metodo ci stava portando come input.
Ma questo metodo di append che vediamo in basso sta prendendo un generatore di stringhe come parametro.
OK, quindi abbiamo il generatore di stringhe di punti bruciati e la modifica del builder.
Quindi togliendo una stringa da un punto a una penna docstring, ma molto sarebbe produrre una stringa fuori
dal tempo.
Quindi è imbarazzante usare una stringa ma un generatore di stringhe.
Quindi ecco la sintassi.
Ecco un esempio.
Questo indice è lo stesso uso di lettura che assume un'identità e richiede un accumulatore che è una funzione
di byte.
Quindi ti porta sotto D e produce un u poi il combinatore è un operatore binario e impiega e
produce un U.
Quindi l'esempio come l'esempio precedente.
Quindi l'identità è un costruttore di stringhe del cumulo o sta attaccando una stringa del generatore di stringhe
come input e come accodare la stringa alla stringa più tardi. Infine il combinatore sta cuocendo.
Il potenziamento di Bulgars aggiunge al secondo generatore di stringhe il primo generatore di stringhe a produrre il builder
finale di stringhe.
Quindi è bloccato sulla funzione.
Ora andiamo avanti e guardiamo tutto nel codice.
OK.
Qui ci si trova nella classe di operazioni di streaming nel pacchetto chiamato funzione di script semantico su Dot stream.
Qui siamo nel metodo principale.
Quindi dal metodo principale invocheremo metodi diversi.
Quindi uno di questi è che io uso la metrica e passeremo i libri che siamo bravi
a ottenere da fonti diverse e che il metodo ridurrà effettivamente il flusso di elementi per trovare il libro con la base più bassa su
di esso in realtà usa il primo versione di quello ed usi la versione semplicistica più
probabilmente starai usando quel particolare metodo la maggior parte del tempo.
Ma guardate anche la stessa logica ma correte via.
E poi finalmente dare un'occhiata all'ordine o alle indicazioni.
Diamo un'occhiata a questo e usiamo il metodo qui.
Quindi l'obiettivo è trovare il libro con il prezzo più basso con qualcosa di maggiore rispetto al 5 ° trimestre. 5 che significa che stiamo
usando un filtro.
Quindi andiamo avanti e prendiamo libri.
La costruzione tipica del gasdotto è per il
libro e se
la valutazione è superiore o uguale a 4. 5.
Solo allora elaboreremo l'elemento stream in modo tale che utilizzerei maildir e dobbiamo passare
l'acuminato che è l'operazione elettorale.
Quindi avremmo due libri quello per il primo libro B due per il secondo libro e useremo qui
l'operatore ordinario.
Quindi il prezzo è ciò di cui abbiamo bisogno.
Quindi ottieni un prezzo se è inferiore o uguale a B non ottieni il prezzo
fatto che hai finito Beaven è scritto sia vero.
Ora sappiamo che i valori adottivi sono fatti come un'opzione giusta.
E questo avrebbe dovuto valere e dalla nostra lezione precedente sappiamo
che possiamo farci largo uso se non è qui è onnipresente perché un consumatore.
Quindi se il valore ridotto è divertente, vogliamo stamparlo.
Quindi diremo di essere consumatore dopo solo un singolo parametro dice
vomito.
Ed è appena stato battuto.
OK, questo è quello che abbiamo su prima di correre.
Diamo anche un'occhiata al burro fuori dal tribunale.
Quindi questo è un tribunale competitivo.
Hai la lista dei libri e stiamo esaminando i libri usando un seguito.
Quindi hanno accumulato il libro con il prezzo più basso.
Verrebbe memorizzato in questo video.
Ma proprio come qualcuno nel nostro esempio, un esempio che abbiamo visto in questa luce.
Quindi inizialmente il risultato non sarebbe così andremo qui e otterremo questo aspetto.
E vogliamo assicurarci che il libro abbia una valutazione di almeno 4. 5.
Questo è quello che stiamo facendo qui sul primo libro che ha un punteggio maggiore o uguale a 4. 5 sarebbe stato memorizzato in questo
video ma lo è.
E poi avremmo questa dichiarazione continuare.
Continueremo con il resto dei libri.
Ma nella prossima iterazione il risultato non sarebbe tranquillo o no.
Quindi verremmo qui e quel libro.
Vogliamo assicurarci che abbia anche un punteggio maggiore o uguale a 4. 5.
E se lo fa allora possiamo vedere il video dei prezzi.
Qui è con il premio offerto fino al taglio e desiderato sotto più del risultato attuale, quindi aggiorneremmo
la variabile risultante con il nuovo libro.
Questo è quello che facciamo.
Quindi è molto semplice.
Quindi andiamo avanti ed eseguilo.
Quindi come puoi vedere questo è il metodo che userò qui.
La prima versione che ho notato stampa questo titolo Jawa 3 e ha un gioco come una valutazione di fundie o 4. 6 puoi verificarlo in seguito i dati sono dentro che
qui per estrarre il vetro e puoi vedere che abbiamo lo stesso valore qui,
ma sappiamo che morire ma il campo attivo ha questi svantaggi come è ingombrante perché
è molto più complicato qui si basa il bilanciamento sulla sincronizzazione che rallenta la
sincronizzazione di quell'area.
Ma in questo caso che è una variabile mutabile condivisa nel ciclo for come paralizzata.
Quindi con quello non guardiamo l'ultimo che è l'introduzione sovraccaricata.
Quindi intendo solo insolita questa
cosa qui, quindi qui esamineremo le due questioni relative alle elezioni.
Ci sono altri due russi.
Quindi stiamo andando a guardare gli stessi esempi.
Quindi abbiamo i grandi qui come tutti i punti di forza.
Quindi quando dici stream, guardiamo
la seconda versione che prende un'identità che è vuota con due parametri per l'accumulatore, così che si mise
in
guardia in Ishan alla
fine della stringa.
Chiamiamolo concat 1.
Quindi questa è la prima versione su facciamo anche la seconda versione.
Quindi questo assenso all'indietro.
In realtà questo sarebbe un costruttore di stringhe.
Quindi questa è l'identità in questo caso.
Poi avremo l'accumulatore del rotore dell'accumulatore che prenderà un generatore di corde su una corda
che mi serve perché sia Daut che è successo.
Quindi questo è l'accumulatore.
Ora dobbiamo combinare il nostro.
Come abbiamo detto, per i costruttori di stringhe chiamiamo che abbiamo eseguito mentre eseguiamo
il secondo accodamento sovraccaricato di apan.
Quindi per essere SBO questo e basta.
E questo gli farebbe fare un costruttore di pietre a Scarlett concat e stamperà questo.
Quindi questo invocherà il metodo a due stringhe, la stampa e il metodo che potenziano davvero il costruttore di stringhe di metadati.
Quindi è così.
Quindi lasciami andare avanti.
Non sono su questo così come puoi vedere entrambi restituiscono la scena concatenata valore a B.
Quindi è quello che è.
Quindi questi sono i due metodi sovraccaricati su questi valori di ritorno sovraccaricati piuttosto che facoltativi.
Quindi questa è l'unica differenza.
Ma il terzo usa effettivamente una funzione combinatore anche sul secondo.
Se la stringa vuota è vuota, restituirebbe questa identità.
E lo stesso vale con questo che avrebbe scritto come trematore qui e questo dà un costruttore di stringhe vuoto.
Quindi questo è tutto.
Grazie e spero vi sia piaciuto conoscere le operazioni di produzione e la discordia che
saranno disponibili nella sezione risorse.
Grazie.
E felice codifica.