Skip to main content

async sync

sync와 async

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263// sync
@Test
    public void zipTestSync(){

        long start = System.currentTimeMillis();
      // 비행편 가져오기
        Flight flight = lookupFlight("a");
      // 승객가져오기
        Passenger passenger = findPassanger("person");
      // 티켓 가져오기
        Ticket ticket = getTicket(flight, passenger);
      // 티켓 메일 보내기
        sendEmail(ticket);

        System.out.println(System.currentTimeMillis() - start);
    }

// async
@Test
    public void zipTestSingle(){
        long start = System.currentTimeMillis();

      // 비행기 lazyloading
        Single<Flight> flight = Single.defer(() -> Single.just(lookupFlight("a")))
                .subscribeOn(Schedulers.io());
      // 승객 lazyloading
        Single<Passenger> passenger = Single.defer(() ->Single.just(findPassanger("person")))
                .subscribeOn(Schedulers.io());
      // 비행기에서 승객을 zip으로 묶어서 다 로딩이된후 티켓을 가져오는데 .toBlocking으로 기다린다.
        flight.zipWith(passenger, (f, p) -> getTicket(f, p))
                .toBlocking()
                .value().getFlightName();
        System.out.println(System.currentTimeMillis()- start);

    }

 private Flight lookupFlight(String name) {
        try {
            Thread.currentThread().sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("lokkupFlight : " + name);
        return Flight.builder().name(name).build();
    }

    private Passenger findPassanger(String name){
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("findPassanger");
        return Passenger.builder().name(name).build();
    }

    private Ticket getTicket (Flight flight, Passenger passenger){
        return Ticket.builder().flightName(flight.name).passengerName(passenger.getName()).build();
    }

    private void sendEmail(Ticket ticket){
        System.out.println("sending ");
    }

Comments

Popular posts from this blog

codefights smooth sailing ( CommonCharacterCount)

https://codefights.com/arcade/intro/level-3/JKKuHJknZNj4YGL32publicstaticintcommonCharacterCount(String s1, String s2) { int sum = 0; char[] as= s1.toCharArray(); char[] bs= s2.toCharArray(); int[] ias = newint[126]; int[] ibs = newint[126]; for (int i = 0; i < as.length; i++) { ias[(int)as[i]]++; } for (int i = 0; i < bs.length; i++) { ibs[(int)bs[i]]++; } for (int i = 0; i < ibs.length; i++) { sum += Math.min(ias[i], ibs[i]); } return sum; }

Given two strings, find the number of common characters between them. Example For s1 = "aabcc" and s2 = "adcaa", the output should be
commonCharacterCount(s1, s2) = 3. Strings have 3 common characters - 2 "a"s and 1 "c". Input/Output [time limit] 3000ms (java)[input] string s1 A string consisting of lowercase latin letters a-z. Guaranteed constraints:
1 ≤ s1.length ≤ 15. [input] string s2 A string consisting of lowercase latin letters a-z. Guaranteed constr…

Bucket Sort in python

I make buckets as many as size of arr
and put data.

arr = [0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434] def bucketSort(arr, size): buckets = [[] for i in range(size)] # put arr in bucket for i in range(len(arr)): num = size*arr[i] buckets[int(num)].append(arr[i]) output = [] # use insertion sort for i in range(len(buckets)): insertionSort(buckets[i]) # concat all data for i in range(len(buckets)): while len(buckets[i]) > 0: output.append(buckets[i].pop(0)) return output def swap(arr, i, j): temp = arr[i] arr[i] = arr[j] arr[j] = temp def insertionSort(arr): for i in range(1, len(arr)): index= i print("index : " + str(i)) while index!=0: if arr[index] < arr[index-1]: temp = arr[index] arr[index]= arr[index-1] arr[index-1] = temp index = index-1print(arr) else …