SlideShare a Scribd company logo
Reactiv
e
Stream
s
THEN
Java Developer
LATER
Enterprise
Architect
NOW
Scala Consultant
TWITTER
@slavaschmidt
MAIL
slavaschmidt@gmx.d
e
Reactiv
e
Stream
s
Stream
A stream can be defined as a sequence of
data.
A powerful concept that greatly simplifies I/
O operations.
Java 5/6/7
A sequence of elements
supporting sequential and
parallel aggregate operations.
Java 8
•sequence of data or instructions
•hot or cold
•bounded or unbounded
•focus on data transfer and/or
transformation
Uses
•bulk data transfer
•batch processing of large data sets
•micro-batching
•real-time data sources
•embedded data-processing
•monitoring and analytics
•metrics, statistics composition
•event processing
•error handling
MEET
ALICE AND
BORIS
MEET
ALICE AND
BORIS
Java 6
Java 7
Java 8
NAK (NACK)
Backpressure
Reactive Stream
MEET
ALICE AND BORIS
•Typical threads
•Do some work
•Exchange data
Direct Calls
private static final SThread alice =

new SThread("RS-Alice") {

@Override public void swap(int count) {

super.swap(count);

borice.swap(count);

}

};
private static final SThread borice =

new SThread("RS-Borice") {

@Override public void run() {

while (!stopped()) { SwapEnvironment.work(); }

}

@Override public void swap(int count) {

super.swap(count);

}

};
Java
IO
“Let’s move some data”
Java IO
A PipedOutputStream
PipedInputStream
protected byte buffer[];
B
Java IO
A PipedOutputStream B
PipedInputStream
protected byte buffer[];
Java IO
A PipedOutputStream BPipedInputStream
Write
Block
Transfer
Block
Read
Block
Java IO
val alice = new SThread("RS-Alice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateA) out.write(Env.BEER)

}

}
val borice = new SThread("RS-Borice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateB) in.read()

}

}
val out = new PipedOutputStream()

val in = new PipedInputStream(out, size)
Java IO
val alice = new SThread("RS-Alice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateA) out.write(Env.BEER)

}

}
val borice = new SThread("RS-Borice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateB) in.read()

}

}
val out = new PipedOutputStream()

val in = new PipedInputStream(out, size)
INCREASE
Java IO
val alice = new SThread("RS-Alice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateA) out.write(Env.BEER)

}

}
val borice = new SThread("RS-Borice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateB) in.read()

}

}
val out = new PipedOutputStream()

val in = new PipedInputStream(out, size)
INCREASE
Java IO
val alice = new SThread("RS-Alice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateA) out.write(Env.BEER)

}

}
val borice = new SThread("RS-Borice") {

override def swap(n: Int) {

super.swap(n)

for (i <- 0 to n * rateB) in.read()

}

}
val out = new PipedOutputStream()

val in = new PipedInputStream(out, size)
INCREASE
Blocking is only a matter of time :(
Java
IO
Java NIO
“There is a better way”
Java NIO
A SinkChannel BSourceChannel
Write
Block
Transfer
BufferBuffer
Read
Block
Read
Fill
Java NIOval alice = new SThread("RS-Alice") {

override def swap(n: Int) {

val cnt = n * rateA

val buffer = ByteBuffer.allocate(cnt)

buffer.put(Vector.fill(cnt)(BEER).toArray)

buffer.flip()

val written = sinkChannel.write(buffer)

super.swap(written)

}

}
val borice = new SThread("RS-Borice") {

override def swap(n: Int) {

val buffer = ByteBuffer.allocate(n * rateB)

val cnt = sourceChannel.read(buffer)

super.swap(cnt)

}

}
val pipe = Pipe.open()

val sinkChannel = pipe.sink

val sourceChannel = pipe.source

sourceChannel.configureBlocking(true)

sinkChannel.configureBlocking(false)
BLOCKING
Java NIOval alice = new SThread("RS-Alice") {

override def swap(n: Int) {

val cnt = n * rateA

val buffer = ByteBuffer.allocate(cnt)

buffer.put(Vector.fill(cnt)(BEER).toArray)

buffer.flip()

val written = sinkChannel.write(buffer)

super.swap(written)

}

}
val borice = new SThread("RS-Borice") {

override def swap(n: Int) {

val buffer = ByteBuffer.allocate(n * rateB)

val cnt = sourceChannel.read(buffer)

super.swap(cnt)

}

}
val pipe = Pipe.open()

val sinkChannel = pipe.sink

val sourceChannel = pipe.source

sourceChannel.configureBlocking(false)

sinkChannel.configureBlocking(false)
NON-BLOCKING
“Choose how to fail”
Java NIO
IO & NIO
IO & NIO
Blocking
Dropping
or
Unbounded
or
Non-Determinism
OutOfMemory
Scalability
Solution
Backpressure
Solution
Backpressure
Dynamic Push/Pull
Fast Boris
Solution
Backpressure
Dynamic Push/Pull
Fast Alice
Backpressure
A BStream
Data
Demand
Data
Demand
Java
8
Java 8
public class ConsumerBorice extends SThread implements Consumer<byte[]> {



public ConsumerBorice(String name) {

super(name);

}



@Override

public Consumer andThen(Consumer after) {

return after;

}



@Override

public void accept(byte[] bytes) {

super.swap(bytes.length);

}

}
Java 8
private static final ConsumerBorice borice =
new ConsumerBorice("RS-Borice") {

public void swap(int count) { }

};
private static final SThread alice = new SThread ("RS-Alice") {

byte[] items(int count) {

byte[] result = new byte[count];

Arrays.fill(result, Env.BEER());

return result;

}

public void swap(int count) {

Stream.of(items(count)).parallel()

.filter(s -> s.equals(Env.BEER()))

.forEach(borice);

super.swap(count);

}

};
Java 8
private static final ConsumerBorice borice =
new ConsumerBorice("RS-Borice") {

public void swap(int count) { }

};
private static final SThread alice = new SThread ("RS-Alice") {

byte[] items(int count) {

byte[] result = new byte[count];

Arrays.fill(result, Env.BEER());

return result;

}

public void swap(int count) {

Stream.of(items(count)).parallel()

.filter(s -> s.equals(Env.BEER()))

.forEach(borice);

super.swap(count);

}

};
transformation
static push (or pull)
or sequential
Java 8
private static final ConsumerBorice borice =
new ConsumerBorice("RS-Borice") {

public void swap(int count) { }

};
private static final SThread alice = new SThread ("RS-Alice") {

byte[] items(int count) {

byte[] result = new byte[count];

Arrays.fill(result, Env.BEER());

return result;

}

public void swap(int count) {

Stream.of(items(count)).parallel()

.filter(s -> s.equals(Env.BEER()))

.forEach(borice);

super.swap(count);

}

}; Synchronous
Non-Deterministic
Limited Scalability
Terminates on error
Problems
Synchronous
Non-Deterministic
Limited Scalability
Terminates on error
Problems
Synchronous
Non-Deterministic
Limited Scalability Terminates on error
Message Driven
Responsive
Elastic Resilient
Reactive
Message Driven
Responsive
Elastic Resilient
http://www.reactivemanifesto.org
Reactive Streams
… a standard for
asynchronous stream
processing with non-
blocking backpressure.
http://www.reactive-streams.org
Participants
Netflix rxJava, rxScala, …
Oracle
Pivotal Spring Reactor
RedHat Vert.x
Twitter
Typesafe Akka Streams
Ratpack
Reactive Streams
• Semantics (Specification)
• API (Application Programming Interface)
• TCK (Technology Compatibility Kit)
API
public interface Publisher<T> {

void subscribe(Subscriber<? super T> var1);

}
public interface Subscriber<T> {

void onSubscribe(Subscription var1);



void onNext(T var1);



void onError(Throwable var1);



void onComplete();

}
public interface Subscription {

void request(long var1);



void cancel();

}
Subscription
Subscription
subscribe
onSubscribe
Producer Subscriber
Streaming
request
Subscription
onNext
onComplete
onError
cancel
Subscriber
trait BytePublisher extends Publisher[Byte] {

var subscriber: Subscriber[_ >: Byte] = _



override def subscribe(subscriber: Subscriber[_ >: Byte]) {

this.subscriber = subscriber

}

}
val alice = new SThread("RS-Alice") with BytePublisher {

override def swap(n: Int) {

for { i <- 1 to n } subscriber.onNext(Env.BEER)

super.swap(n)

}

}
Publisher
trait ByteSubscriber[T >: Byte] extends Subscriber[T] {



var subscription: Subscription = _



override def onSubscribe(subscription: Subscription) {

this.subscription = subscription

}



override def onError(t: Throwable) { }

override def onComplete() { }

}
val borice = new SThread(“RS-Borice") with ByteSubscriber[Byte]{

def onNext(t: Byte) {

super.swap(1)

}



}
Subscriber
val borice = new SThread(“RS-Borice") with ByteSubscriber[Byte]{



alice.subscribe(this)



override def swap(n: Int) {

subscription.request(n)

}



def onNext(t: Byte) {

super.swap(1)

}



}
Right Subscriber
val alice = new SThread("RS-Alice") with BytePublisher {

override def swap(n: Int) {

val cnt = math.min(n, counter.get())

counter.addAndGet(-cnt)

for { i <- 1 to cnt } subscriber.onNext(Env.BEER)

super.swap(n)

}

}
Right Publisher
trait BytePublisher extends Publisher[Byte] {

var subscriber: Subscriber[_ >: Byte] = _

var subscription: Subscription = _

val counter = new AtomicInteger(0)

def request(l: Long): Unit = {

counter.addAndGet(l.toInt)

}



override def subscribe(subscriber: Subscriber[_ >: Byte]) {

this.subscription = new ByteSub(this)

this.subscriber = subscriber

subscriber.onSubscribe(this.subscription)

}

}
implicit val mat = FlowMaterializer()(system)

Source(alice).runWith(Sink(borice))
Akka Streams
Streams.create(alice).subscribe(borice)
Reactor Stream
ratpack.stream.Streams.buffer(alice).subscribe(borice)
Ratpack.io
import rx.RxReactiveStreams._


subscribe(toObservable(alice), borice)
RxReactiveStrea
ms
//vert.x 3.0 - only supports Streams[Buffer]


val rws = ReactiveWriteStream.writeStream()

rws.subscribe(borice)



val rrs = ReactiveReadStream.readStream()

alice.subscribe(rrs)



val pump = Pump.pump(rrs, rws)

pump.start()
Vert.X
Why
should
I care?
Because
•Simplifies reactive programming
•Rises program’s abstraction level
•May be future JDK standard
Abstraction levels
Abstraction levels
Runnable &Thread
Abstraction levels
java.util.concurrent
Abstraction levels
Promise & Future
Abstraction levels
Actors
Abstraction levels
Streams
Abstraction levels
Interoperability
Shop Admin
Delivery
WebShop
Merchant
ADs Stats
Shop Admin
Delivery
WebShop
Merchant
ADs Stats
DB
REST
File System
Messaging
REST
Shop Admin
(vert.x)
Delivery
(Spring)
WebShop
(Akka)
Merchant
(ratpack.io)
ADs
(Rx…)
Stats
(Spray)
DB
REST
File System
Messaging
REST
Shop Admin
(vert.x)
Delivery
(Spring)
WebShop
(Akka)
Merchant
(ratpack.io)
ADs
(Rx…)
Stats
(Spray)
DB
Shop Admin
(vert.x)
Data Flow
Backpressure
Delivery
(Spring)
WebShop
(Akka)
Merchant
(ratpack.io)
ADs
(Rx…)
Stats
(Spray)
DB
Example Akka
Example Akka
val display = {

def ellipse (i: Input) = setColor(i).fillOval(i(3), i(4), i(5), i(6))

def rect (i: Input) = setColor(i).fillRect(i(3), i(4), i(5), i(6))



val logics: Seq[(Input) => Unit] = Seq(ellipse, rect)

def rnd = Random.nextInt(255)



val timer = Source(0.seconds, 1.second, () => rnd )

val randoms = Source { () => Some(rnd) }



val functions = timer map { i => logics(i % logics.size) }



val display = functions map { f =>

val groups = randoms.take(7)

val params = groups.fold(List.empty[Int])((l, i) => i :: l)



for { p <- params } f(p)

}



display

}



def start = {

display.runWith(BlackholeSink)

}
Example Akka
Use Case
Price Correction
System
Product schedules
Competitors
Volatile sources
Audit
Historical trends
Alerts
Sales Heuristics
Pricing Rules
Adjustments
Competitors
Volatile sources
Audit
Historical trends
Alerts
Sales Heuristics
Pricing Rules
Adjustments
Timer Scheduler
Volatile sources
Audit
Historical trends
Alerts
Sales Heuristics
Pricing Rules
Adjustments
Timer Scheduler Robots
Audit
Historical trends
Alerts
Sales Heuristics
Pricing Rules
Adjustments
Validators
Timer Scheduler Robots
Historical trends
Alerts
Sales Heuristics
Pricing Rules
Adjustments
ValidatorsLogger
Timer Scheduler Robots
Historical trends
Alerts
Pricing Rules
Adjustments
Stock ValidatorsLogger
Timer Scheduler Robots
Historical trends
Alerts
Adjustments
Stock ValidatorsLogger
Timer Scheduler Robots
Pricing
Historical trends
Alerts
Stock ValidatorsLogger
Timer Scheduler Robots
Pricing Ruler
Historical trends
Stock ValidatorsLogger
Timer Scheduler Robots
Pricing Ruler Safety
Stock ValidatorsLogger
Timer Scheduler Robots
Pricing Ruler Safety
Archive
Stock
Validators
Logger
Timer Scheduler
Robots
Pricing
RulerSafety
Archive
Data Flow
Backpressure
val schedules = Flow[Date] mapConcat generateSchedules


val robots = Flow[Schedule] map scrape

val validations = Flow[ScrapeResult] map { site =>

logSite(site)

validate(site)

}

val pricing = Flow[Validation] map checkPrice

val stock = Flow[Validation] map checkStock

val ruler = Flow[(Price, Stock)] map applyRule

val safety = Flow[Rule] map checkSafety



val zip = Zip[Price, Stock]

val split = Broadcast[Validation]
Stock
Validators
Logger
Timer Scheduler
Robots
Pricing
RulerSafety
Archive
Data Flow
Backpressure
val timer = Source(0.seconds, 1.minute, () => now)



val archive = ForeachSink[SafetyCheck] { logRule }

val graph = FlowGraph { implicit builder =>



timer ~> schedules ~> robots ~> validations ~> split



split ~> stock ~> zip.right



split ~> pricing ~> zip.left ~> ruler ~> safety ~> archive



}



graph.run()
24 cores
48 Gb
24 cores
48 Gb
150 000 000
positions
daily
Reactive Streams
Reactive Streams
•Simplify reactive programming
•Rise program’s abstraction level
•May be future JDK standard
Now I
care!
Thank you
https://github.com/slavaschmidt/reactive_streams_talk
@slavaschmidt
slavaschmidt@gmx.de

More Related Content

What's hot

Reactive programming with RxJava
Reactive programming with RxJavaReactive programming with RxJava
Reactive programming with RxJava
Jobaer Chowdhury
 
Alternatives of JPA/Hibernate
Alternatives of JPA/HibernateAlternatives of JPA/Hibernate
Alternatives of JPA/Hibernate
Sunghyouk Bae
 
Reactive Streams / Akka Streams - GeeCON Prague 2014
Reactive Streams / Akka Streams - GeeCON Prague 2014Reactive Streams / Akka Streams - GeeCON Prague 2014
Reactive Streams / Akka Streams - GeeCON Prague 2014
Konrad Malawski
 
Non Blocking I/O for Everyone with RxJava
Non Blocking I/O for Everyone with RxJavaNon Blocking I/O for Everyone with RxJava
Non Blocking I/O for Everyone with RxJava
Frank Lyaruu
 
Spring data requery
Spring data requerySpring data requery
Spring data requery
Sunghyouk Bae
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
Stuart Roebuck
 
whats new in java 8
whats new in java 8 whats new in java 8
whats new in java 8
Dori Waldman
 
2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese
Konrad Malawski
 
RxJava from the trenches
RxJava from the trenchesRxJava from the trenches
RxJava from the trenches
Peter Hendriks
 
Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...
Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...
Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...
Holden Karau
 
Bulk Loading Data into Cassandra
Bulk Loading Data into CassandraBulk Loading Data into Cassandra
Bulk Loading Data into Cassandra
DataStax
 
Shooting the Rapids
Shooting the RapidsShooting the Rapids
Shooting the Rapids
Maurice Naftalin
 
Requery overview
Requery overviewRequery overview
Requery overview
Sunghyouk Bae
 
Spark Streaming, Machine Learning and meetup.com streaming API.
Spark Streaming, Machine Learning and  meetup.com streaming API.Spark Streaming, Machine Learning and  meetup.com streaming API.
Spark Streaming, Machine Learning and meetup.com streaming API.
Sergey Zelvenskiy
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJava
Rick Warren
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Sunghyouk Bae
 
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Codemotion
 
Reenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWSReenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWS
WO Community
 
Meet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + KafkaMeet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + Kafka
Knoldus Inc.
 
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?
tvaleev
 

What's hot (20)

Reactive programming with RxJava
Reactive programming with RxJavaReactive programming with RxJava
Reactive programming with RxJava
 
Alternatives of JPA/Hibernate
Alternatives of JPA/HibernateAlternatives of JPA/Hibernate
Alternatives of JPA/Hibernate
 
Reactive Streams / Akka Streams - GeeCON Prague 2014
Reactive Streams / Akka Streams - GeeCON Prague 2014Reactive Streams / Akka Streams - GeeCON Prague 2014
Reactive Streams / Akka Streams - GeeCON Prague 2014
 
Non Blocking I/O for Everyone with RxJava
Non Blocking I/O for Everyone with RxJavaNon Blocking I/O for Everyone with RxJava
Non Blocking I/O for Everyone with RxJava
 
Spring data requery
Spring data requerySpring data requery
Spring data requery
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
 
whats new in java 8
whats new in java 8 whats new in java 8
whats new in java 8
 
2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese
 
RxJava from the trenches
RxJava from the trenchesRxJava from the trenches
RxJava from the trenches
 
Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...
Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...
Beyond Shuffling, Tips and Tricks for Scaling Apache Spark updated for Spark ...
 
Bulk Loading Data into Cassandra
Bulk Loading Data into CassandraBulk Loading Data into Cassandra
Bulk Loading Data into Cassandra
 
Shooting the Rapids
Shooting the RapidsShooting the Rapids
Shooting the Rapids
 
Requery overview
Requery overviewRequery overview
Requery overview
 
Spark Streaming, Machine Learning and meetup.com streaming API.
Spark Streaming, Machine Learning and  meetup.com streaming API.Spark Streaming, Machine Learning and  meetup.com streaming API.
Spark Streaming, Machine Learning and meetup.com streaming API.
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJava
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
 
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...
 
Reenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWSReenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWS
 
Meet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + KafkaMeet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + Kafka
 
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?
 

Similar to Reactive streams. Slava Schmidt

Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive StreamsJava/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
GeeksLab Odessa
 
Iniciación rx java
Iniciación rx javaIniciación rx java
Iniciación rx java
Elisa De Gregorio Medrano
 
Intro to Akka Streams
Intro to Akka StreamsIntro to Akka Streams
Intro to Akka Streams
Michael Kendra
 
HBase Client APIs (for webapps?)
HBase Client APIs (for webapps?)HBase Client APIs (for webapps?)
HBase Client APIs (for webapps?)
Nick Dimiduk
 
Reactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsReactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsKonrad Malawski
 
Functional Principles for OO Developers
Functional Principles for OO DevelopersFunctional Principles for OO Developers
Functional Principles for OO Developers
jessitron
 
Getting the most out of Java [Nordic Coding-2010]
Getting the most out of Java [Nordic Coding-2010]Getting the most out of Java [Nordic Coding-2010]
Getting the most out of Java [Nordic Coding-2010]
Sven Efftinge
 
Apache Spark Streaming: Architecture and Fault Tolerance
Apache Spark Streaming: Architecture and Fault ToleranceApache Spark Streaming: Architecture and Fault Tolerance
Apache Spark Streaming: Architecture and Fault Tolerance
Sachin Aggarwal
 
Data Pipeline at Tapad
Data Pipeline at TapadData Pipeline at Tapad
Data Pipeline at Tapad
Toby Matejovsky
 
Asynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyAsynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with Netty
Ersin Er
 
Jackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSVJackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSV
Tatu Saloranta
 
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
TanUkkii
 
HBaseConEast2016: HBase and Spark, State of the Art
HBaseConEast2016: HBase and Spark, State of the ArtHBaseConEast2016: HBase and Spark, State of the Art
HBaseConEast2016: HBase and Spark, State of the Art
Michael Stack
 
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
DataStax Academy
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
Edward Capriolo
 
Naver_alternative_to_jpa
Naver_alternative_to_jpaNaver_alternative_to_jpa
Naver_alternative_to_jpa
NAVER Engineering
 
Belfast JUG 23-10-2013
Belfast JUG 23-10-2013Belfast JUG 23-10-2013
Belfast JUG 23-10-2013
eamonnlong
 
Intro to ReactiveCocoa
Intro to ReactiveCocoaIntro to ReactiveCocoa
Intro to ReactiveCocoa
kleneau
 
Julio Capote, Twitter
Julio Capote, TwitterJulio Capote, Twitter
Julio Capote, Twitter
Ontico
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
NAVER D2
 

Similar to Reactive streams. Slava Schmidt (20)

Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive StreamsJava/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
 
Iniciación rx java
Iniciación rx javaIniciación rx java
Iniciación rx java
 
Intro to Akka Streams
Intro to Akka StreamsIntro to Akka Streams
Intro to Akka Streams
 
HBase Client APIs (for webapps?)
HBase Client APIs (for webapps?)HBase Client APIs (for webapps?)
HBase Client APIs (for webapps?)
 
Reactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsReactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka Streams
 
Functional Principles for OO Developers
Functional Principles for OO DevelopersFunctional Principles for OO Developers
Functional Principles for OO Developers
 
Getting the most out of Java [Nordic Coding-2010]
Getting the most out of Java [Nordic Coding-2010]Getting the most out of Java [Nordic Coding-2010]
Getting the most out of Java [Nordic Coding-2010]
 
Apache Spark Streaming: Architecture and Fault Tolerance
Apache Spark Streaming: Architecture and Fault ToleranceApache Spark Streaming: Architecture and Fault Tolerance
Apache Spark Streaming: Architecture and Fault Tolerance
 
Data Pipeline at Tapad
Data Pipeline at TapadData Pipeline at Tapad
Data Pipeline at Tapad
 
Asynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyAsynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with Netty
 
Jackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSVJackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSV
 
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
 
HBaseConEast2016: HBase and Spark, State of the Art
HBaseConEast2016: HBase and Spark, State of the ArtHBaseConEast2016: HBase and Spark, State of the Art
HBaseConEast2016: HBase and Spark, State of the Art
 
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
 
Naver_alternative_to_jpa
Naver_alternative_to_jpaNaver_alternative_to_jpa
Naver_alternative_to_jpa
 
Belfast JUG 23-10-2013
Belfast JUG 23-10-2013Belfast JUG 23-10-2013
Belfast JUG 23-10-2013
 
Intro to ReactiveCocoa
Intro to ReactiveCocoaIntro to ReactiveCocoa
Intro to ReactiveCocoa
 
Julio Capote, Twitter
Julio Capote, TwitterJulio Capote, Twitter
Julio Capote, Twitter
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 

More from Alina Dolgikh

Scala for the doubters. Максим Клыга
Scala for the doubters. Максим КлыгаScala for the doubters. Максим Клыга
Scala for the doubters. Максим Клыга
Alina Dolgikh
 
Orm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел ВейникOrm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел Вейник
Alina Dolgikh
 
No sql unsuccessful_story. Владимир Зеленкевич
No sql unsuccessful_story. Владимир ЗеленкевичNo sql unsuccessful_story. Владимир Зеленкевич
No sql unsuccessful_story. Владимир Зеленкевич
Alina Dolgikh
 
Java Concurrency in Practice
Java Concurrency in PracticeJava Concurrency in Practice
Java Concurrency in Practice
Alina Dolgikh
 
Appium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон СеменченкоAppium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон Семенченко
Alina Dolgikh
 
Cracking android app. Мокиенко Сергей
Cracking android app. Мокиенко СергейCracking android app. Мокиенко Сергей
Cracking android app. Мокиенко Сергей
Alina Dolgikh
 
David Mertz. Type Annotations. PyCon Belarus 2015
David Mertz. Type Annotations. PyCon Belarus 2015David Mertz. Type Annotations. PyCon Belarus 2015
David Mertz. Type Annotations. PyCon Belarus 2015
Alina Dolgikh
 
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Alina Dolgikh
 
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Alina Dolgikh
 
Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...
Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...
Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...
Alina Dolgikh
 
Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...
Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...
Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...
Alina Dolgikh
 
Austin Bingham. Transducers in Python. PyCon Belarus
Austin Bingham. Transducers in Python. PyCon BelarusAustin Bingham. Transducers in Python. PyCon Belarus
Austin Bingham. Transducers in Python. PyCon Belarus
Alina Dolgikh
 
Austin Bingham. Python Refactoring. PyCon Belarus
Austin Bingham. Python Refactoring. PyCon BelarusAustin Bingham. Python Refactoring. PyCon Belarus
Austin Bingham. Python Refactoring. PyCon Belarus
Alina Dolgikh
 
Denis Lebedev. Non functional swift.
Denis Lebedev. Non functional swift.Denis Lebedev. Non functional swift.
Denis Lebedev. Non functional swift.
Alina Dolgikh
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
Alina Dolgikh
 
Максим Харченко. Erlang lincx
Максим Харченко. Erlang lincxМаксим Харченко. Erlang lincx
Максим Харченко. Erlang lincx
Alina Dolgikh
 
Пиар в стартапе: извлекаем максимум пользы. Алексей Лартей
Пиар в стартапе: извлекаем максимум пользы. Алексей ЛартейПиар в стартапе: извлекаем максимум пользы. Алексей Лартей
Пиар в стартапе: извлекаем максимум пользы. Алексей Лартей
Alina Dolgikh
 
Подготовка проекта к первому раунду инвестиций. Дмитрий Поляков
Подготовка проекта к первому раунду инвестиций. Дмитрий ПоляковПодготовка проекта к первому раунду инвестиций. Дмитрий Поляков
Подготовка проекта к первому раунду инвестиций. Дмитрий Поляков
Alina Dolgikh
 
Как составлять правильный тизер для инвесторов? Никита Рогозин
Как составлять правильный тизер для инвесторов? Никита РогозинКак составлять правильный тизер для инвесторов? Никита Рогозин
Как составлять правильный тизер для инвесторов? Никита Рогозин
Alina Dolgikh
 
Startup belarus pres_khamiankova
Startup belarus pres_khamiankovaStartup belarus pres_khamiankova
Startup belarus pres_khamiankovaAlina Dolgikh
 

More from Alina Dolgikh (20)

Scala for the doubters. Максим Клыга
Scala for the doubters. Максим КлыгаScala for the doubters. Максим Клыга
Scala for the doubters. Максим Клыга
 
Orm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел ВейникOrm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел Вейник
 
No sql unsuccessful_story. Владимир Зеленкевич
No sql unsuccessful_story. Владимир ЗеленкевичNo sql unsuccessful_story. Владимир Зеленкевич
No sql unsuccessful_story. Владимир Зеленкевич
 
Java Concurrency in Practice
Java Concurrency in PracticeJava Concurrency in Practice
Java Concurrency in Practice
 
Appium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон СеменченкоAppium + selenide comaqa.by. Антон Семенченко
Appium + selenide comaqa.by. Антон Семенченко
 
Cracking android app. Мокиенко Сергей
Cracking android app. Мокиенко СергейCracking android app. Мокиенко Сергей
Cracking android app. Мокиенко Сергей
 
David Mertz. Type Annotations. PyCon Belarus 2015
David Mertz. Type Annotations. PyCon Belarus 2015David Mertz. Type Annotations. PyCon Belarus 2015
David Mertz. Type Annotations. PyCon Belarus 2015
 
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
 
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
 
Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...
Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...
Володимир Гоцик. Getting maximum of python, django with postgres 9.4. PyCon B...
 
Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...
Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...
Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов д...
 
Austin Bingham. Transducers in Python. PyCon Belarus
Austin Bingham. Transducers in Python. PyCon BelarusAustin Bingham. Transducers in Python. PyCon Belarus
Austin Bingham. Transducers in Python. PyCon Belarus
 
Austin Bingham. Python Refactoring. PyCon Belarus
Austin Bingham. Python Refactoring. PyCon BelarusAustin Bingham. Python Refactoring. PyCon Belarus
Austin Bingham. Python Refactoring. PyCon Belarus
 
Denis Lebedev. Non functional swift.
Denis Lebedev. Non functional swift.Denis Lebedev. Non functional swift.
Denis Lebedev. Non functional swift.
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
 
Максим Харченко. Erlang lincx
Максим Харченко. Erlang lincxМаксим Харченко. Erlang lincx
Максим Харченко. Erlang lincx
 
Пиар в стартапе: извлекаем максимум пользы. Алексей Лартей
Пиар в стартапе: извлекаем максимум пользы. Алексей ЛартейПиар в стартапе: извлекаем максимум пользы. Алексей Лартей
Пиар в стартапе: извлекаем максимум пользы. Алексей Лартей
 
Подготовка проекта к первому раунду инвестиций. Дмитрий Поляков
Подготовка проекта к первому раунду инвестиций. Дмитрий ПоляковПодготовка проекта к первому раунду инвестиций. Дмитрий Поляков
Подготовка проекта к первому раунду инвестиций. Дмитрий Поляков
 
Как составлять правильный тизер для инвесторов? Никита Рогозин
Как составлять правильный тизер для инвесторов? Никита РогозинКак составлять правильный тизер для инвесторов? Никита Рогозин
Как составлять правильный тизер для инвесторов? Никита Рогозин
 
Startup belarus pres_khamiankova
Startup belarus pres_khamiankovaStartup belarus pres_khamiankova
Startup belarus pres_khamiankova
 

Recently uploaded

May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 

Recently uploaded (20)

May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 

Reactive streams. Slava Schmidt