전체 글 33
Redis를 이용한 랭킹 조회
이전에 진행했던 프로젝트에서 여행지 방문수에 따른 여행지 랭킹을 조회하는 API 의 코드를 리펙토링 해보았다.📋 프로젝트 흐름여행 기록(Record)을 할 때 기록된 다녀온 여행지와 여행 시작 날짜를 기준으로 많이 기록된 상위 7개의 여행지를 항목별로 조회하게 한다. Ranking 관련 API월별 랭킹계절별 랭킹💬 이전에 진행한 방식사용자가 Record를 작성해 저장할 경우 Record에 속한 여행지들의 정보가 RecordPlace 테이블에 recordId와 placeId가 따로 저장된다. 이후 랭킹 조회를 할 때 사용자로부터year , month 혹은 season 정보를 받아와서 RecordPlace에 저장된 데이터를 기반으로 랭킹 정보를 조회해서 PlaceRankGetResponse클래스에 담아 ..
Programming/Spring | 2025. 9. 10. 21:24
Cursor 기반 페이지네이션 적용해보기
📄 Pagination이란한정된 네트워크 자원을 효율적으로 활용하기 위해 특정한 정렬 기준과 지정된 개수에 따라 데이터를 분할하여 가져오는 기술이다.엄청난 수의 데이터를 DB에서 애플리케이션으로 가져오면 네트워크 오버헤드가 생길 수 있기 때문에 필요한 데이터만 나눠서 응답하여 네트워크의 낭비를 막고 빠른 응답 할 수 있다.방식▪️ offset 기반 페이지네이션 방식데이터 조회 쿼리문을 작성할 때 OFFSET 쿼리와 LIMIT 쿼리를 붙여 가져올 데이터 숫자와 페이지 번호를 작성한다. ▪️ cursor 기반 페이지네이션 방식Cursor는 어떠한 데이터의 위치를 가리키는 포인터고 커서가 가리키는 레코드로부터 일정 개수만큼 가져오는 방식이다. 즉 우리가 원하는 데이터가 어떤 데이터 다음에 있다는 것에 집중한..
Programming/Spring | 2025. 8. 19. 23:55
Interface와 Abstract
Interface 인터페이스란 클래스가 따라야 할 설계도와 같다.따로 필드를 작성하지 않고 추상 메소드만 정의한다. 이때 실제 로직 또한 작성하지 않고 추후 구현하는 클래스가 작성하게 한다. 인터페이스는 interface 라는 키워드를 사용하고 구현 클래스는 implements 키워드를 사용한다.이때 구현 클래스는 인터페이스 안 모든 추상 메소드를 구현해야한다. 💡 일반 class 구현과 Interface 클래스 구현의 차이일반 클래스를 추후 자식 클래스가 상속 받아서 참조할 경우 일반 클래스에서 메소드를 구현해야한다. 하지만 자식 클래스에서 참조한 메소드는 객체마다 다르게 구현될 것이기 때문에 사실 일반 클래스에서 구현한 메소드가 사용되는 일이 많지 않다.만약 Interface 클래스를 만든다면, 메..
Programming/Java | 2025. 6. 15. 23:30
WebServer와 WAS
웹 애플리케이션을 개발하다보면 항상 언급되는 개념이 WAS, Servlet과 같은 단어들이다. 학교 수업때 들어봤던 개념들이긴 하지만 가물가물 해졌기에 다시 한번 복습해보며 웹 애플리케이션이 어떻게 동작되는 지에 대해 공부한 내용을 작성해보겠다. Web Server클라이언트에서 HTTP 요청을 했을 때 그 요청을 받아 정적 컨텐츠(HTML, CSS, JS)를 제공하는 서버를 의미한다.또한 클라이언트로부터 동적 컨텐츠를 요청 받았을 경우 WAS에게 요청을 넘겨주고 WAS가 처리한 결과를 클라이언트에게 전달하는 중간자 역할도 한다.대표적인 웹서버로는 Apache, NginX가 있다. WAS클라이언트가 DB와 관련된 일이나 다양한 로직 처리와 같은 동적 컨텐츠를 요청할 때 처리해주는 미들웨어JSP, Servl..
CS/Network | 2025. 6. 7. 23:39
Spring container와 Bean
spring containerApplicationContext applicationContext = new AnnotationConfigApplication(AppConfig.class);ApplicationContext 를 스프링 컨테이너라고 한다. 이때 컨테이너는 객체를 담고 있는 공간이다.스프링 컨테이너는 XML 을 기반으로 만들수 있고 어노테이션 기반의 자바 설정 클래스로 만들 수 있으며 요즘은 어노테이션 기반으로 만드는 추세이다.스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext 로 구분해서 이야기한다.BeanFactory 를 직접 사용하는 경우는 거의 없어서 ApplicationContext 를 스프링 컨테이너라고 한다. 스프링 컨테이너 생성AppConfig의..
Programming/Spring | 2025. 5. 23. 22:22