Back-End 32

프로그래머스 - 체육복

https://school.programmers.co.kr/learn/challenges 코딩테스트 연습 | 프로그래머스 스쿨개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!school.programmers.co.kr import java.util.*;class Solution { public int solution(int n, int[] lost, int[] reserve) { Arrays.sort(lost); Arrays.sort(reserve); boolean[] lost_visited = new boolean[lo..

Back-End/TIL 2025.04.28

프로그래머스 - 타겟넘버

https://school.programmers.co.kr/learn/challenges 코딩테스트 연습 | 프로그래머스 스쿨개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!school.programmers.co.kr class Solution { public int solution(int[] numbers, int target) { return dfs(numbers, target, 0,0); } private int dfs(int[] numbers, int target, int index, int sum) { // 모든 숫자를 사용한 경우 ..

Back-End/TIL 2025.04.28

클린코드로 프로젝트 리팩토링하기 (DRY 원칙, SRP, 가독성)

프로젝트 리팩토링을 진행하였습니다! 미래의 나에게 큰 고통을 주면 안되기에.... 편한 유지보수를 위해서, 가독성 높은 코드를 작성하기 위해서 MVP 개발이 완료된 지금 시점에서 리팩토링을 진행하는 것이 맞다고 생각하였다. 중복되는 코드를 리팩토링한 사례를 바탕으로 설명하자면, 우리 서비스는 모임이라는 그룹이 존재한다.계정 자체의 권한은 JWT로 관리하여 @Secured 어노테이션으로 권한을 체크 하지만,모임 유저의 권한 체크는 따로 로직을 구현해야 해서 아래와 같은 코드가 존재한다.//권한을 체크 (feignClient)if(!roleCheckClient.checkRole(organizationId,userTrackingId,roles).getData()){ log.info("권한 체크 결과는 ..

Back-End/JavaSpring 2025.04.28

웹훅

웹훅이란, 웹/앱 에서 사용자 정의 콜백을 사용해서,애플리케이션의 동작을 강화하거나 변경하는 방법이다. REST API 라고 하면,하나의 요청에 따른 하나의 응답으로 이루어 진 것이라는 것을 알 수 있다.클라이언트에서 요청을 보내면 서버에서 응답을 보내주는 구조인데, 웹훅은 반대다. 웹훅은 서버에서 특정이벤트가 발생하였을 때,클라이언트를 호출하는 방식으로역방향 API 라고 부르기도 한다. Polling과 Webhook 비교 보통 폴링 방식과 웹훅 방식을 비교하는데, 두가지 방식은 명확한 차이점을 갖고 있다. API 폴링은 서버가 이벤트가 발생했는지 주기적으로 확인해야 한다. 만약 서버가 준비 되지 않았다면, 클라이언트는 주기적으로 서버로 요청을 보내야 한다. 만약 요청 주기가 60초 라고 했을..

Back-End 2025.04.20

MSA에서 채팅 개발하기 (Spring, STOMP, Kafka, MongoDB, MySQL) - MongoDB 세팅 #3

MongoDB 세팅을 진행하자! 의존성 추가해주고 시작//mongoDBimplementation 'org.springframework.boot:spring-boot-starter-data-mongodb' MongoConfig 설정 MongoConfig설정을 해주지 않아도, MongoRepository를 상속받아서 사용하는 것도 가능하지만,동적 쿼리 문제를 해결하려면 MongoTemplate의 도움을 받아야 하기 때문에MongoConfig설정을 따로 해주었다. //MongoConfig 클래스를 작성하지 않고 MongoRepository를 상속받아서 사용하는 것도 가능하지만,//동적 쿼리 문제를 해결하려면 MongoTemplate의 도움을 받아야 하기 때문에 저는 설정 클래스를 따로 만들어 주었습니..

Back-End/JavaSpring 2025.04.17

MSA에서 채팅 개발하기 (Spring, STOMP, Kafka, MongoDB, MySQL) - STOMP 세팅 #2

이어서 STOMP 세팅을 하겟슴다 //STOMPimplementation 'org.springframework.boot:spring-boot-starter-websocket'implementation 'org.webjars:webjars-locator-core'implementation 'org.webjars:sockjs-client:1.5.1'implementation 'org.webjars:stomp-websocket:2.3.4'implementation 'org.webjars:bootstrap:5.2.3'implementation 'org.webjars:jquery:3.6.4'  이건 STOMP 의존성을 추가한 것이다.  WebSocketConfig 설정 @Configuration@RequiredA..

Back-End/JavaSpring 2025.04.13

MSA에서 채팅 개발하기 (Spring, STOMP, Kafka, MongoDB, MySQL) - Kafka 세팅 #1

본격 적인 채팅을 개발하기 앞서서 카프카 기본 설정을 해주겠다. 나중에 내가 다시 채팅을 개발할 것이라는 다짐으로 최선을 다해서 작성할 예정인데,,, 솔직히 자신은 없다..   참고로, 이는 카프카 개념공부가 아닌,기본 설정환경을 이야기하는 것이므로, 앞으로 나올 모든 게시글에서 언급되는그룹id, producer, consumer 와 같은 개념은설명하지 않고 넘어가도록 하겠습니다..  Kafka 의존성 추가 implementation 'org.springframework.kafka:spring-kafka'testImplementation 'org.springframework.kafka:spring-kafka-test'//이건 ImmutableMap 사용하려고 추가한건데 나중에 kafka 설정에 필요한 것..

Back-End/JavaSpring 2025.04.13

DTO, DAO, VO 차이점

이름이 헷갈리는 DTO, DAO, VO 를 알아보도록 하자. 나도 잘 모르던 이번 기회에 개념을 명확히 해보려고 한다.  DAO  DAO는 Data Access Object의 약자로, DB의 데이터에 접근하기 위한 객체를 가리킨다. DB에 접근하기 위한 로직을 따로 분리해서 객체로 만든다. 직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다. 예를 들자면, 이런식이다.public class UserDaoImpl implements UserDao { private JdbcTemplate jdbcTemplate; // JdbcTemplate 설정자 주입 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { ..

Back-End 2025.04.11
728x90