전체 글137 쓰기지연 전략 쓰기 지연 전략 우리 프로젝트에서는 게시물이 "조회수"라는 필드를 갖고 있었다. 조회수는 게시물이 조회될 때마다 그 값이 1씩 증가한다. 초기에는 게시물이 조회 될 때마다 RDB에 해당 게시물의 조회수를 1 증가하는 Update 쿼리를 날려주는 방식을 사용하였다. ※ 조회수는 설계상 기본적으로 RDB에 저장되고 사용되었다. [조회수 증가_JPA] @Modifying(flushAutomatically = true) @Query("update Board b set b.views = b.views + 1 where b.id = :boardId") void updateViews(@Param("boardId") Long boardId); 실제로 위와 같은 메서드를 JPA로 만들고 게시물이 조회될 때마다 해당 메서.. 2023. 2. 13. Union-Find 알고리즘을 케이크처럼 쉽게 이해하는법 Union-Find Union-Find 알고리즘은 다수의 노드로 트리를 만들 때 사용된다. 각 노드들을 병합해서 트리로 만드는 것이 Union 노드가 병합될 수 있는지를 확인하는것이 Find라서 Union-Find이다. 1. 노드로 트리 만들기 1부터 5까지의 노드가 있다고 하고 이 노드들로 트리를 만든다고 해보자 [노드] 우선 1과 2를 병합(연결) 할 수 있다 [1, 2 병합] 다음으로는 3과 4, 5를 병합해본다 [3과 4, 5 병합] 여기에 1과 3을 병합할 수 도 있다. [1-3 병합] 각각 연결된 노드가 있는 1과 3을 병합해도 트리가 되는 데는 문제가 없다. 그러나 2와 4는 병합할 수 없다 [병합 불가 경우] 왜냐하면 노드 2와 4는 같은 트리 내에 있는 노드이기 때문이다. 따라서 이 두 .. 2023. 2. 7. Reids를 사용한 Cache 전략 Redis를 사용한 Cache 전략 프로젝트 진행 중 개발을 하다 보니 자주 조회되지만 변하지 않는 값들이 보였다. 같은 값인데 조회될 때마다 RDB를 거쳐야 하는 것은 확실히 비효율적이다. 따라서 이런 값들을 캐싱해서 조회 시 RDB를 거치지 않게 하고 효율성을 높여보려고 하였다. Spring에서는 메서드에 캐시를 적용할 수 있는 인터페이스를 제공하고 있으며, 이 프로젝트에서는 구현체로 Redis를 사용하였다. Redis는 인메모리 기반의 비관계형 데이터베이스로 물리적인 디스크가 아닌 메모리에서 데이터를 처리하기 때문에 속도가 매우 빠르다. 이번 프로젝트에서는 설치가 간단하고, Spring에서도 손쉽게 사용할 수 있는 Redis를 선택하였다. 1. Redis 설치 & 사용법 [Ubuntu] sudo a.. 2023. 2. 6. 순한 수열 순한 수열 백준 12104번 문제 https://www.acmicpc.net/problem/12104 12104번: 순환 순열 두 바이너리 문자열 A와 B가 주어졌을 때, A와 XOR 했을 때, 0이 나오는 B의 순환 순열의 개수를 구하는 프로그램을 작성하시오. 순환 순열이란 순열 P = P0, P1, ..., PN-1이 있을 때, 왼쪽으로 k번 순환 www.acmicpc.net 1. 문제 2. 풀이 2.1 풀이 방법 문제에서 요구하는 대로, B 순열을 왼쪽으로 이동시키며 A와 같아지는 경우를 찾으면 된다. 예를 들어 아래와 같은 순열이 주어졌다고 하자. [순열 예_그 1] B 순열을 왼쪽으로 한 칸씩 이동시키면서 A와 같아지는지를 확인한다. [순열 예_그 2] 이 예제의 경우 B 순열을 4번 이동 시키.. 2023. 1. 21. 이전 1 ··· 3 4 5 6 7 8 9 ··· 35 다음