분류 전체보기 (53) 썸네일형 리스트형 (Spring) 어떤 식으로 캐시를 구성하는 것이 좋을까?? 캐시 전략에 대해 알아보자 웹 페이지를 개발하기 위해서는 우리는 캐시를 활용해서 성능을 개선해야 할 경우가 있을 것이다 오늘은 그러한 캐시를 어떤 방법으로 활용할 수 있는지 알아보고자 한다 캐시란?? : 휘발성 메모리로 컴퓨터의 전원이 꺼지면 지워지는 특징이 있지만 DB에서 조회하는 것과 다르게 굉장히 빠르게 조회할 수 있다는 특징이 있다 이러한 특징이 있는 캐시는 장단점이 명확하기 때문에 전술적으로 혹은 전략적으로 캐시의 설계전략을 잘 설계해서 가져가는 것이 좋다 캐시 전략은 크게 쓰기 / 읽기 전략이 있다 먼저 읽기 전략은 아래와 같은 전략들이 있다 1. Look Aside 전략 그림에서 볼 수 있듯이 먼저 캐시를 방문 하고 캐시 미스가 날 경우 DB에서 조회 및 캐시에 저장하는 방법이다 장점캐시와 DB가 분리 운영되고 있기.. (Spring) Lettuce를 활용하여 Redis를 활용하는 방법을 알아보자 Spring 에서 Redis를 다루기 위해서는 다양한 라이브러리들이 있는데 나는 그중에서 Lettuce를 활용한 Redis 구현을 해보려고 한다 여기서 잠깐 Redis란??Redis는 Key - Value 값을 기반으로 하는 In Memory NOSQL DB 이다장점모든 데이터를 메모리에 저장하기 때문에 속도가 굉장히 빠르다다양한 자료구조를 저장하기 때문에 보다 다양하게 데이터를 관리 할 수 있다만료 시간을 설정할 수 있고 만료 시간이 지나면 자동으로 지워지기 때문에 보다 효율적인 데이터 관리가 가능하다단점용량이 작기 때문에 대용량으로 저장하기 어렵다휘발성이 있기 때문에 일반 DB와 같이 사용 하는 것이 좋다싱글 스레드 이기 때문에 하나의 명령어만 처리가 가능하다 즉 크기가 큰 명령을 처리하게 될 경우 .. (알고리즘) 멀리 뛰기 풀이 프로그래머스 멀리뛰기 문제를 풀면서 어떤 방식으로 접근해야 할 지 고민을 좀 했다 해당 문제는 멀리뛰기를 1칸 또는 2칸을 할 수 있고 해당 방법으로 맨 끝 칸 까지 갈 수 있는 경우의 수를 구하는 문제이다 사실 여러가지 방법이 있지만 나는 그림을 그려 보았다 사실 1과 2일 경우에는 1 하나와 (1,1) , 2 이렇게 2개 가 있어서 1과 2가 나올 것이고 3부터 그림을 그려서 얼추 가짓수를 생각해보았다그런데 이 갯수가 1 -> 2 -> 3 -> 5 -> 8 ... 이렇게 커지는 것이 아닌가?? 사실 이건 어디서 많이 본 것 같은데.. 바로 피보나치의 수열을 생각해보았다 피보나치의 수열은 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열 이라고 한다 이번 문제에서는 0이 존재하.. (알고리즘) 최소공배수와 최대공약수 구하기 알고리즘 문제를 풀다 보면 최대 공약수와 최소 공배수를 활용한 문제들이 자주 등장한다 오늘은 N개의 최소공배수 문제를 통해서 최소 공배수와 최대 공약수의 연관 관계를 알아보려고 한다 해당 문제는 배열 내부의 값들의 최소 공배수를 반환 하는 문제이다 이 문제는 쉽게 말하면 최대 공약수를 구한 다음에 남은 값들을 곱하면 되는 문제이다 최대 공약수는 말 그대로 에서 공통된 약수들의 최대 값이다 즉 저 숫자들로 더 이상 나누어 떨어질 수 없는 상태 까지 나누고 나눈 값을 곱한 값이 최대 공약수 이다 최소 공배수는 말 그대로 저 숫자들의 공통된 최소 공배수로 이는 즉 최소 공약수를 구한 후에 나머지 값 까지 구한 값이 될 수 있다 즉 위의 예제의 경우에는 2가 최대 공약수, 168이 최소 공배수가 되는 것이다 그.. (AWS) RDS 없이 EC2 로 데이터베이스 서버 구축하는 방법 나는 개발을 할 때 이번에 처음으로 로컬로 데이터를 구축하는 것을 시도해보았다 그러다가 남에게 프로젝트를 보여줘야 할 상황이 있을 때 어떻게 대처할까라는 의문이 들게 되었다 물론 내 컴퓨터의 ip주소를 열어놓고 들어오쇼!! 할수도 있지만 이는 조금 비효율 적인 방법!! 그래서 AWS 로 DB 서버를 구축해보려고 하는데 여기서 다른 방법으로 RDS 를 쓰지 않고 구축하려고 한다 여기서 잠깐 EC2 란?? : 쉽게 말해서 AWS에게 컴퓨터 한대 빌리는 것이다 1. 먼저 인스턴스 시작을 눌러서 EC2 를 만든다 필자는 우분투로 서버를 만들 예정이다2. 인스턴스 유형 선택프리 티어에서도 사용이 가능한 T2.micro 로 사용 하려고 한다3. 키 페어 생성키 페어가 기존에 있는 사람은 키 페어를 사용하고 없는 사.. (Spring) 크론 표현식에 대해 알아보자 이번 개인 프로젝트에서 나는 SoftDelete를 구현하기로 했다 SoftDelete란??Delete 쿼리가 날아갈 시점에 Delete를 시키지 않고 이 데이터를 업데이트 하면서 추후에 복구 및 증거 수집등에서 유용하게 사용하기 위한 방법이다단점으로는 Query를 관리를 많이 해야 하고 DB에 데이터가 지속적으로 축적되지 않기 위해서 관리를 해줘야 한다우선 SoftDelete를 구현하기 위해서 간단하게 정책을 설정하기로 했다 SoftDelete 된 내용은 본인 혹은 관리자만 볼 수 있어야 한다SoftDelete 된 내용은 90일이 지나면 삭제가 되서 지속적으로 데이터가 축적되는 현상은 방지한다이 2가지 정책을 가정하고 시작을 하려고 한다 우선 오늘은 2번째 정책인 90일이 지나면 자동으로 삭제가 되는 A.. (Spring) No property {} found for type {} 해결 법 JPA와 QueryDSL 을 동시에 사용하려다 보면 이런 현상들이 발생 한다@Transactional@Serviceclass IssueService( private val issueRepository: IssueRepository, private val queryDslIssueRepository: QueryDslIssueRepository private val memberService: ExternalMemberService,){이런 식으로 2개의 Repository를 주입 받아야 하는 현상이 생기는 것이다 나는 이 부분이 마음에 안들어서 JPA와 QueryDSL 을 하나의 Repository로 통합을 해보려고 한다위와 같이 리펙터링을 하여 Service 코드에서 하나의 Repositor.. (Spring) 관점 지향 코딩의 핵심!! AOP 의 설정 법을 알아보자 implementation("org.springframework.boot:spring-boot-starter-aop")AOP 란??부가 기능과 핵심 기능을 구분하여 부가 기능을 모듈화 하여 Application 전체에서 사용 할 수 있도록 하는 방법Annotation 을 사용하여 모듈화 할 수 있고 이를 전체적으로 사용할 수 있다사용하기 전에 build.gradle에 설정을 해주고 가자!! AOP를 사용하기 위해서는 실행 위치나 메서드의 상태 변화 따라서 다음과 같은 Annotation 을 적용할 수 있다@AspectAOP를 사용하기 위해서 정의한 클래스 위에 지정해 준다@PointcutAOP기능을 메서드, Annotation 등 어디에 적용시킬지 지점을 설정 지점을 설정하기 위한 Annotation@B.. 이전 1 2 3 4 ··· 7 다음