전체 글 썸네일형 리스트형 [STEP13] 캐시가 무엇인가 0. 조회가 오래 걸리는 쿼리에 대한 캐싱, 혹은 Redis 를 이용한 로직 이관을 통해 성능 개선할 수 있는 로직을 분석1. Redis를 이용한 로직 이관을 통해 성능을 개선 할 수 있는 로직 파악 e-commerce 프로젝트에 사용 되는 api들 중 아래 3가지가 캐싱 적용 혹은 레디스를 이용한 로직 이관으로 성능 개선이 가능할 것으로 보인다. 1. 선착순 쿠폰 발급 기존 로직은 쿠폰 발급시 쿠폰 개수보다 많은 요청이 들어왔을 경우 때문에 DB에 비관적 락을 거는 방식을 사용했다. 이를 레디스를 이용한 로직으로 성능 개선할 수 있을 것으로 판단하였다. 2. 인기 상품 목록 추가 결제 완료시 외부 api 인 인기상품 통계 입력를 호출하여 statics 테이블에 결제된 상품 데이터들을 입.. 더보기 동시성 이슈에 대한 조사 나의 시나리오(e-commerce)에서 발생할 수 있는 동시성 이슈 선착순 쿠폰 발행 - 쿠폰이 1개 남았을 경우에 여러유저가 쿠폰 발행을 시도한다면?주문생성 - 재고감소- 주문 생성시에 재고가 감소하고 재고가 1개 남았을때 여러 유저가 주문을 시도한다면? 위의 시나리오에서 예측되는 동시성 이슈에 적용할 수 있는 제어 방법들 1. DB lock구현복잡도 : 간단하다. - 낙관적 락 (Optimistic Lock) :save시 락을 거는 방법이다.(경합이 별로 안일어날 것이다~ 해서 낙관적 락) 성능 - 락을 걸기 전에 select 구문을 사용하지 않기 때문에 성능적으로는 비관적 lock보다 우수하다고 볼 수 있다.- 트랜잭션을 필요로 하지 않는다. - 효율성 : 경합이 많이 일어나는 상황일 수록 효.. 더보기 99클럽 코테 스터디 7일차 TIL + Biginteger 오늘의 문제https://www.acmicpc.net/problem/15829 - 오늘의 학습 키워드Biginteger - 공부한 내용 본인의 언어로 정리하기1. 첫째줄에 문자의 길이를 입력한다.2. 문제에 주어진 key포인트를 확인한다. 2-0 문자에 해당하는 숫자를 부여한다.(a는 1. b는 2... z 는 27) 2-1 아래는 우리가 구현해야하는 수식이다. 2-2 수식에서 r 값과 M값은 문제에서 아랫 부분에 정의해주었다.2-3 문자 길이의 각 항에 대해 문자의 자리에 따라 0부터 50까지 r의 자리수 제곱으로 계수를 만드는데 Large는 최대 50자이다.31^50 을 하면 (51자리 넘어감) long의 자리 수가 넘어가기 때문에 BigInteger를 사용해야된다는 결론이 나온다. 2-4숫자를 모두.. 더보기 99클럽 코테 스터디 6일차 TIL + Map -오늘의 문제https://www.acmicpc.net/problem/27160할리갈리 - 오늘의 학습 키워드 Map, HashMap - 공부한 내용 본인의 언어로 정리하기 오늘 문제는 할리갈리이다. 1.첫번째 줄에는 몇줄의 입력(명령어)이 들어가는지 입력한다.2.두번째줄에는 과일이름과 개수가 입력된다.STRAWBERRY, BANANA, LIME, PLUM3.입력이 모두 끝났을 때, 해당 과일 이름 뒤에 나온 숫자의 총합이 정확히 5가 되면 YES 아니면 NO를 출력하는 문제이다. 오늘의 회고 - 어떤 문제가 있었고, 나는 어떤 시도를 했는지 아직 BufferedReader 작성하는 것과 StringTokenizer 사용이 익숙하지 않아서 컴파일 에러가 많이 떴다.1. StringTokenize.. 더보기 99클럽 코테 스터디 4일차 TIL + 문자열 StringBuilder - 오늘의 학습 키워드StringBuilder 문제링크https://www.acmicpc.net/problem/11945 - 공부한 내용 본인의 언어로 정리하기 저번 포스팅에서는 BufferedReader, BufferedWriter에 대해 다뤘습니다.그런데 뺴먹은게 있었죠. BufferedReader, BufferedWriter를 사용시에 IOException을 꼭 추가해줘야된다고 합니다. BufferedReader와 BufferedWriter 클래스의 메소드들은 입출력에러가 발생할 경우 자체적으로 IOException을 던지도록 정의되어있다. 그러므로 이 메소드들을 사용할 때 반드시 예외처리를 해주어야 한다. 아래 예제처럼 메인함수를 작성할 때 throws IOException으로 처리해주면 편리하다.. 더보기 99클럽 코테 스터디 3일차 TIL + BufferedReader, BufferedWriter - 오늘의 학습 키워드BufferedReader, BufferedWriter, String - 공부한 내용 본인의 언어로 정리하기 자바에서 Scanner는 입력 처리가 느린편이라고 한다.많은 데이터를 빠르게 읽고 쓸때는 BufferedReader, BufferedWriter를 사용한다고 한다고하여오늘은 적은 데이터지만 BufferedReader, BufferedWriter를 사용해서 코드를 작성해보았다. 필요한 import 들 5개import java.io.BufferedReader; // 입력시 사용import java.io.BufferedWriter; // 출력시 사용import java.io.InputStreamReader; // 바이트 스트림으로 데이터를 읽는다import java.io.O.. 더보기 99클럽 코테 스터디 2일차 TIL + 문자열(EOF) - 오늘의 학습 키워드문자열 EOF - 공부한 내용 본인의 언어로 정리하기 1. 문자열 비교시 == 사용하면 인스턴스의 주소비교2. 문자열 비교시에는 equals를 사용해주어야 정확히 비교된다.3. 입력의 끝을 알수 없을경우 EOF를 사용한다. - while ((str = br.readLine()) != null) // null이면 EOF 보통 코딩테스트에서는 시간복잡도를 위해서 BufferedReader를 사용하는 것이 유리하다고 한다.앞으로는 BufferedReader 사용을 연습해보자. - 오늘의 회고 - 어떤 문제가 있었고, 나는 어떤 시도를 했는지 처음에는 문자열 입력의 끝을 == null로 비교하여 컴파일 에러가 발생하였다. - 어떻게 해결했는지 == null로 비교하면 안된다는걸 .. 더보기 99클럽 코테 스터디 1일차 TIL + 문자열 https://school.programmers.co.kr/learn/courses/30/lessons/12916 - 오늘의 학습 키워드자바로 코딩테스트 풀기 - 문자열 - 공부한 내용 본인의 언어로 정리하기코딩테스트에는 자동완성이 없어서 필요한 유틸들을 직접 치는 걸 손에 익도록 해야할 것 같다.import java.util.Scanner, BufferedReader 등등 - 오늘의 회고 - 어떤 문제가 있었고, 나는 어떤 시도를 했는지백준의 경우 입력부터 출력까지 전부 내가 작성해야하는데 프로그래머스의 경우에 solution에 String이 s로 미리 주어져 있는걸 몰랐다. - 어떻게 해결했는지(검색해보니) solution의 매개변수로 String s가 미리 주어져 있었다.String 관련 .. 더보기 이전 1 2 3 4 5 다음