Language(99)
-
코딩 테스트 - 프래그래머스
코딩 테스트를 풀어보자:) https://programmers.co.kr/ 문자열 출력하기 난이도 0레벨 ㅋㅋ 아래처럼 소스를 짜고! 코드를 실행! 와우! 점수를 준다 ㅋㅋㅋ 굿~최대 점수가 3점인가?? 14점도 있었다..ㅎㅎ 다른 사람의 풀이도 볼수 가 있다! ㅋㅋ 역시 코딩에 정답이 없어! 여러가지 답이 나올수 있다! 대학교때 생각이 물씬 난다 ㅎㅎ 다른소스를 보니 a.length()가 중복이라 변수로 처리했다. 굿! 앞으로 종종 풀어보자:)
2023.07.18 -
Producer-Consumer 패턴
더보기 Runnable과 Callable의 차이점은? acet.pe.kr/819 > 상황 성능이 좋지 않은 부분이 발생하여 그 부분을 해소하기 위해 멀티 쓰레드로 처리하려고 했다. 그런데 멀티 쓰레드 처리 후 나오는 리스트형 데이터가 재사용 되어지는 문제가 발생. > 결론 생산자-소비자 패턴을 사용하기로 함. 생상자 - 멀티쓰레드 처리 및 리스트형 데이터를 블라킹 큐에 넣어줌. 넣기만 함! 소비자 - BlockingQueue에 넣어진 것들을 사용함. 사용만 함! > 간단한 프로젝트 만들어서 테스트 함. @SpringBootTest class DemoApplicationTests { @Test void producerAndConsumerMethodTest() { BlockingQueue q = new Li..
2021.03.18 -
Runnable과 Callable의 차이는?
Runnable과 Callable의 차이는? - Runnable : 객체와 Exception을 발생 시키지 않음. - Callable : 특정 타입의 객체와 Exception을 발생 시킴. ㅇㅋ!
2021.03.18 -
AtomicInteger&LongAdder&Thread-Safe
자바에서 Thread-Safe 즉, 데이터에 대해 동시 접근을 제어하기 위해 Lock( 2020/11/24 - [Language/Java] - Java thread에서의 Lock의 종류?) 을 사용한다. 그런데 이 데이터가 그냥 값을 읽거나 업데이트 정도의 기능일 경우에는 Lock보다는 원자성(Atomic) 변수가 더 성능도 좋고 효율적이다. 아래는 Thread-Safe 이야기 하다가 나옴 ㅋㅋ 오늘 포스팅은 AtomicInteger와 LongAdder에 대해 알아보고자 한다. LongAdder의 경우 실제 서비스에서 사용하고 있다. 위의 사진에서 보면 여러가지 정보가 있는데 하나씩 살펴보면..! int a = 0; thread-1 thread-2 a+=1 a+=1 의 경우 CPU에 의해 처리가 되는데 ..
2020.12.01 -
Java thread에서의 Lock의 종류?
자바에서 2개의 Lock이 있는데 첫번째는 자바에서 thread간 동기화를 위해 synchronized 키워드를 사용하는것을 사용 합니다. 이런 synchronized 키워드를 사용하는 lock을 Intrinsic Lock 또는 Built-in Lock이라고 한다. // Mutual Exclusion public synchroized void intrinsicLockfunc(){ ... } // Wait synchronized(this){ ... this.wait(); ... } // signal synchronized(this){ ... this.notify(); ... } 두번째는 Java 1.5에서 java.util.concurrent.locks 패키지를 통해 제공되는 Explicit Lock이 있..
2020.11.24 -
http dump
log.WithField("dump=", "start").Debug("auth start") dump, err := httputil.DumpResponse(resp, true) if err != nil { log.Fatal(err) } log.WithField("dump??", string(dump[:])).Debug("auth dump") // fmt.Printf("DUMP => %q", dump) 참고 : https://golang.org/pkg/net/http/httputil/
2018.08.30