- GDoc: QUIC at 10k feet
- Medium: Why quick is not the next big thing
- YTVideo:QUIC: Replacing TCP for the Web by Jana Iyengar(2018)
- YTVideo:QUIC: in Theory and Practice - Robin Marx | DeltaV 2018
- YTVideo:Fixing HTTP/2 and preparing for HTTP/3 over QUIC - Robin Marx | O'Reilly Velocity Berlin 2019
- YTVideo: HTTP/3 and QUIC: the detials by Robi Marx (2019)
import com.github.benmanes.caffeine.cache.AsyncLoadingCache; | |
import com.github.benmanes.caffeine.cache.Caffeine; | |
import com.github.benmanes.caffeine.cache.LoadingCache; | |
import org.jetbrains.annotations.NotNull; | |
import reactor.core.publisher.Mono; | |
import reactor.core.scheduler.Schedulers; | |
import java.time.Duration; | |
import java.util.function.Function; | |
import java.util.function.Supplier; |
/* | |
* Copyright 2020 The Netty Project | |
* | |
* The Netty Project licenses this file to you under the Apache License, | |
* version 2.0 (the "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at: | |
* | |
* https://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software |
import java.util.concurrent.Executors; | |
import java.util.concurrent.Callable; | |
import java.util.List; | |
import java.util.concurrent.CompletableFuture; | |
import java.time.Instant; | |
import java.util.concurrent.TimeUnit; | |
public class LoomApp{ | |
public static void main (String [] args) throws Exception{ | |
var thread = Thread.startVirtualThread(() -> System.out.println("virtualthread Hello")); |
@Override | |
public void getUserInfo(UserInfoRequest request, StreamObserver<UserInfo> response) { | |
final CompletableFuture<String> Result = | |
provider.getUserInfo(request.getUserId()); // some other grpc request invoke | |
final CompletableFuture<UserInfo> responseFuture = | |
trackResult.thenApply(result -> UserInfo.newBuilder().setUserInfo(result).build()); | |
responseFuture.whenComplete( | |
(result, throwable) -> { | |
if (result != null) { | |
response.onNext(result); |
Architecture is 'the important stuff, whatever that is' or 'the parts that are hard to change later'. An architect analyzes business, domain, and other requirements to develop solutions that satisfy a list of prioritized architectural characteristics (-ilities). We should consider time and change with respect to architecture, or evolvability.
Software ecosystems are in a state of dynamic equilibrium. New languages, tools, methods constant force new equilibriums to emerge (free OS, linux, + free operations, puppet, led to the shift to containers). The pace of change in technology is constantly and rapidly changing in unexpected ways. We should architect systems knowing the landscape will change. Make ease of change a principal of architecture, remove the 'hard to change' definition of architecture.
An evolutionary architecture supports guided, incremental change across multiple dimensions. Evolvability is a meta characteristic that