전체 글

문제https://www.acmicpc.net/problem/6198🎲 문제 해석문제 자체를 이해하는 것은 오래 걸리지 않는다.각 빌딩에서 오른쪽으로 나열된 건물의 옥상을 볼 수 있는 갯수의 총합 인 것이다.우선 예제를 통해 그림을 그려보면 이런 그림이 되는 것이다.🎲 문제 풀이위에 사진에서는 각 관리인이 보이는 타워를 말하고 그 갯수를 세면 총 5개이다. 문제의 해답이 5라는 것이다.1번. 2중 for문 풀이처음에 이문제를 보면 2중 for문 사용해서 자신보다 큰 빌딩이 나오기 전까지의 빌딩의 갯수를 합하면 된다고 생각했지만 문제는 입력의 조건이였다.빌딩의 갯수가 최대 8만개인데 시간 제한은 1초(1억)이다. 그렇다면 2중 for문으로 시간 복잡도가 O(n2)이 되버리면 보나마나 시간제한이 표시 될..
문제https://www.acmicpc.net/problem/5397 🎲 문제 해석문제를 해석하는 것은 물론 굉장히 쉽다. 우리가 자판을 통해 글씨를 쓸 때 맨 앞에 작성하고 중간에 작성하고 하는것을 생각하면 편하다다만 특수 문자를 생각해줘야 한다. 우리는 그냥 화살표와 ← 가 그려진 버튼을 누르지만 우리는 그것을 구현하기 위해 받았다는 문자를 '', '-' 를 통해 받는것이다. 이러한 과정을 거쳤을때 무슨 문자가 남을것이냐가 중요하다🎲 문제 풀이사실 문제 풀이가 중요하다.가장 중요한 것은 커서 포인트의 위치를 어떻게 표현할 것이냐 이다우선 단순하게 생각해보자문자를 넣고 빼고 하는 것을 보았을때 대부분 stack을 많이 생각한다. 그리고 커서가 움직이고 사이에 값을 넣고 빼고 해당 포인트의 뒤에 값을..
💢 문제현재 우리의 메인 화면에는 조회수 순으로 작품을 나열하는 것이 있다.그렇다면 조회수가 중요해지는데 조회수는 조금만 생각해도 동시성 문제가 발생 할 수 있다.쇼핑몰의 재고값을 다루는 동시성보다는 중요도가 떨어질수는 있어도 중요한 문제이기 때문에 그냥 대충 넘기는 것은 좋지 않다고 생각했다 그래서 이번에도 동시성 문제를 해결해보고자 한다.우선 문제를 봐야한다 기본적인 동작이다.work의 값을 가져오고 직접 그 값을 1 증가시킨 후에 save로 저장한다. 테스트테스트를 진행하는 방법은 매우 간단하다. JMeter를 통해 1000번의 요청을 하는 것이다. 당연히 결과는 view가 1천번 올라가는 것이다.에러가 없고 TPS는 4.8이라는 형편없는 결과를 내뱉었다 역시 동시성 문제가 발생하면서 겨우 106..
· CS/💾 DB
프로젝트에서 쿼리를 튜닝하면서 한가지 궁금증이 생겼다 🎋 쿼리 튜닝을 통한 응답 속도 개선 ( feat. QueryDSL, JPQL )현재 구현된 서비스의 검색 기능들 중 대부분은 조건이 한 개이다. 물론 다양한 테이블을 join하는 것은 있을수 있지만 검색의 조건이 다양한 것은 조금 다르다고 생각했다기존의 특정 단어로만latewalk.tistory.com ❓ 궁금증우리는 서브쿼리를 종종 사용하다보면 그리고 많은 쿼리문을 작성하다보면 언뜻이라도 그런 생각이 든다어? 이거 조인으로 할 수 있는거 아냐? 혹은 어? 이거 서브쿼리문 작성하면 되겠는데?그런 쿼리문 중 대부분은 두 개를 같이 써도 같은 결과를 도출해내고는 한다하지만 튜닝을 좋게 하기 위한 방법으로 서브쿼리는 지양해야 한다고 말한다. 그 이유가 ..
현재 구현된 서비스의 검색 기능들 중 대부분은 조건이 한 개이다. 물론 다양한 테이블을 join하는 것은 있을수 있지만 검색의 조건이 다양한 것은 조금 다르다고 생각했다기존의 특정 단어로만 검색하는 것이 아닌 여러가지 조건이 담긴 검색의 성능 향상을 위해 작성해본다💬 쿼리 튜닝이 필요한 작업과 설명검색의 조건은 카테고리와 장르를 기준으로 그곳에 해당하는 작품들을 검색해서 전달하는 것이다1. 카테고리와 장르와 연관된 작품id까지 저장되어 있는 중간 테이블을 제작검색의 성능을 향상시키는 방법은 중간 테이블을 활용하는 것이라고 생각했다. 그렇기 때문에 아래와 같이 카테고리와 장르가 연결된 작품들을 작성하는 중간 테이블을 제작했다.이렇게 해서 좋아지는 것을 짧게라도 생각해본다면 만약 중간 테이블이 없었다면카테..
💥 기존의 버전 테이블을 탐색하는 쿼리현재 프로젝트에서는 버전을 관리하는 테이블이 따로 존재하기 때문에 가장 나중에 업데이트 된 상품을 확인하는 것은 그렇게 복잡하지 않은 쿼리로 작성이 가능했다@Query("select v.work.id " + "from Version v " + "where v.confirm = 'COMPLETE'" + "group by v.work.id " + "order by max(v.updatedDate) desc")Page findLatestUpdateDates(Pageable pageable);이렇게 가져오면 해당 검색 결과를 page형식의 쿼리문으로 날아가는 것을 확인할 수 가 있다. 🧨 요구사항 발생 : 롤백 데이터의 ..
문제https://www.acmicpc.net/problem/10804  문제 풀이 문제의 풀이 자체는 굉장히 간단하다. 1 ~ 20까지의 숫자가 주어진 배열이 있고 그 배열에서 원하는 인덱스 범위를 역방향으로 만드는데 그 행위를 총 10번 하는 것이다. 그리고 그 결과를 나타나게 한다. 처음에 문제를 풀때 그냥 이분법 처럼 lt와 rt를 나눠서 서로 방향을 바꿔서 문제를 풀었다.하지만 갑자기 번뜩 생각난 것이 "배열의 중간에 있는 값들의 삽입과 삭제가 빈번하게 일어나는 문제" 인것이다 그래서 평소에 사용하고 싶었던 LinkedList를 사용해서 문제를 풀어보았다. 사용하기 전에 두 배열을 구성하는 방법에서 차이를 알아보자 ArrayLinkedList메모리 할당연속적인 메모리 블록에 할당비연속적인 메모리..
· AWS
💦 엥?? 파일 저장소라며?1부에서 실컷 이미지파일 저장하고 다른 파일도 저장할 수 있다고 길게 설명하고 있었다. 하지만 S3는 부가적인 기능을 또 가지고 있다. 바로 "정적 웹 사이트 호스팅"이라는 기능이다 쉽게 표현해서 웹 서비스를 다른 사용자들도 쉽게 사용할 수 있도록 인터넷에 배포를 하겠다! 라는 것을 뜻하는 것이다. S3와 가까운 친구 CDN서비스, CloudFront우선 갑자기 CDN이 나왔는데 왜 그런것일까? 우리가 S3로 정적 웹 사이트를 호스팅할 수 있다고 했지만 실제로 사용하다보면 사용자는 S3에 직접 엑세스하여 컨텐츠를 다운로드해줘야 하는 일이 점점 늘어나게 된다. 다운로드가 계속 된다면 성능이 점점 저하될 수 있다는 말과도 같다. 그것을 위해 CDN이 등장했다 💦 CDN과 Clo..
· AWS
💬 S3가 뭘까??파일 저장 서비스를 제공하는 S3는 사진이나 동영상 같은 다양한 파일을 저장할 수 있다. 마치 iCloud같은 것이라고 생각해보면 된다 왜 S3를 사용하는 걸까?우리가 서비스를 구성하면 이미지를 저장하는 경우가 굉장히 많다. 그렇다면 그 많은 이미지를 어딘가에 저장을 해야하는데 어디로 저장을 해야할까? 가장 먼저 생각나는 것은 컴퓨터 내부에 저장하는 것이다. 하지만 이는 조금만 많이 데이터가 쌓여도 컴퓨터 저장공간에 문제가 발생할 수 있다는 것을 알 수 있다. 그래서 우리는 외부에 굉장히 넓은 저장 공간에 파일을 저장하기로 했다. 마치 우리가 핸드폰에 우리의 사진을 저장하는 것이 아닌 naver cloud, iCloud 같은 곳에 저장하는 것처럼 말이다. S3는 그것처럼 사용된다고 생..
· AWS
💨 S3 연동하기아마 S3관련해서 글을 보다가 넘어왔을 확률이 높다고 생각한다. 혹여 혹시라도 그런게 아니라면 이전의 글에서 S3를 등록하는 방법도 적어놓았으니 한번 보고오는것도 좋을것 같다 🗃 S3 사용해보기💬 S3가 뭘까??파일 저장 서비스를 제공하는 S3는 사진이나 동영상 같은 다양한 파일을 저장할 수 있다. 마치 iCloud같은 것이라고 생각해보면 된다 왜 S3를 사용하는 걸까?우리가 서비스를 구성하latewalk.tistory.com 1. Depency 추가implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' 2. yml 혹은 properties 설정IAM : 우리가 s3를 설정하면 IAM에 권한을..
늦은산책
중얼중얼블로그