[백준][BOJ 2210] - 숫자판 점프
2023. 10. 2. 12:33
Algorithm/BruteForce
문제 https://www.acmicpc.net/problem/2210 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다. www.acmicpc.net 문제 접근 숫자판의 임의의 위치에서 인접한 4방향으로 5번 이동하면서 숫자판에 적힌 숫자를 붙이는 것이 핵심적인 기능이다. 이동 시에 이미 방문했던 칸을 다시 방문해도 상관없다는 조건이 붙어 있다. 숫자가 0인 경우에도 0으로 시작하는 수를 만들 수 있다. 위의 규칙을 만족시키면서 숫자판에서 이동할 때 나올 수 있는 모든 숫자의 개수를 구하는 것이 ..
Spring MVC - Spring MVC의 구조 - 2. 핸들러 매핑과 핸들러 어댑터
2023. 6. 7. 23:01
카테고리 없음
들어가며 저번 포스트에서 우리가 만들었던 프론트 컨트롤러의 역할을 수행하는 Dispatcher Servlet에 대해 알아보았다. 이번 포스트에서는 핸들러 매핑과 핸들러 어댑터에 대해 알아본다. 과거의 컨트롤러 저 두 파트를 보기 전에 예전에 사용했던 컨트롤러를 한 번 보도록 하자. 과거에는 컨트롤러가 인터페이스 형식이었고 해당 인터페이스를 상속받은 객체를 빈으로 등록하는 형식을 사용하였다. public interface Controller{ ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception; } @Component("/something/old-controller") publ..
Spring MVC - Spring MVC의 구조 - 1. Dispatcher Servlet
2023. 6. 7. 22:31
Spring & JPA/SpringMVC
들어가며 이전까지 우리가 프론트 컨트롤러 및 여러 개선점을 적용한 프레임워크를 만들고 그 구조를 알아보았다. 이번 파트부터는 실제 스프링 MVC의 전체적인 구조를 알아본다. Spring MVC 구조 우선 우리가 만들었던 프레임워크 구조를 보면 다음과 같다. 다음은 실제 스프링 MVC에서 사용하고 있는 구조이다. 매우 유사하지 않은가? 이는 스프링 MVC 프레임워크의 구조가 갑자기 어디선가 등장한 것이 아닌, 이전에 있던 수 많은 문제점과 편의성을 제공하기 위해 개선이 적용된 결과임을 의미한다. 직접 만든 프레임워크와 스프링 MVC 구조를 한번 비교해보자. Front Controller -> Dispatcher Servlet HandlerMappingStore -> HandlerMapping MyHandl..
JDBC - JDBC 커넥션 풀 - DataSource 적용
2023. 6. 5. 17:53
Spring & JPA/JDBC
들어가며 저번 포스트에서 DataSource 인터페이스를 사용하여 커넥션을 얻는 것에 대해 알아보았다. 이번 포스트에서는 배운 방식을 레포지토리에 적용하여 어떻게 변경되는지 알아보자. RepositoryV1 구현 커넥션을 얻는 부분에서 많은 변경이 발생된다. public class MemberRepositoryV1{ private final DataSource dataSource; public MemberRepositoryV1(DataSource dataSource){ this.dataSource = dataSource; } public Member save(Member member) throws SQLException{ ... } public Member findById(String memberId) ..
JDBC - JDBC 커넥션 풀 - DataSource
2023. 6. 5. 17:12
Spring & JPA/JDBC
들어가며 저번 포스트에서 커넥션 풀에 대해 알아보았다. 이번 포스트에는 해당 커넥션 풀을 사용하는데 있어 사용하는 추상화된 인터페이스인 DataSource 인터페이스에 대해 알아본다. DataSource 지금까지 우리가 구현한 예제에서 커넥션을 얻을 때는 DriverManager.getConnection()을 사용하였다. 그런데 이제 DriverManager를 통해 계속 커넥션을 새로 생성하는게 아니라 커넥션 풀을 사용하여 커넥션을 얻으려고 한다. 문제는 각 커넥션 풀을 사용하는 방법들이 모두 다를 수 있단 것이다. 즉 구체적인 방법에 애플리케이션이 의존할 수 있다. 만약 커넥션 풀 1을 사용하는데 커넥션을 가져오는 코드가 getConnection()이라고 하자. 그런데 커넥션 풀 2로 바꾸어야 하는 상..
JDBC - JDBC 커넥션 풀 - 커넥션 풀의 개념
2023. 6. 5. 16:08
Spring & JPA/JDBC
들어가며 저번 포스트에서 JDBC를 사용한 데이터 저장, 조회, 수정, 삭제를 구현하였다. 이번 포스트에서는 트랜젝션이라는 개념을 배우기 이전에 커넥션 풀이라는 개념에 대해 먼저 알아보고 간다. 커넥션 획득 과정 어떤 요청이 들어왔을 때 DB 커넥션이 필요한 경우 다음과 같은 방식을 통해 커넥션을 연결한다. 먼저 DB 드라이버에 현재 사용 가능한 커넥션이 존재하는지 조회한다. 이 단계에서 만약 사용 가능한 커넥션이 존재한다면 해당 커넥션을 반환하고 과정이 종료된다. 이후 사용 가능한 커넥션이 없다면 DB 드라이버는 DB에 TCP/IP 연결을 수행한다. TCP/IP 연결이 성립되면 ID, PW를 전송한다. DB는 받은 ID와 PW를 사용하여 사용자 인증을 수행하고, 해당 연결에 대한 DB 세션을 생성한다...
JDBC - JDBC 사용 - 3. 데이터 수정과 삭제
2023. 6. 3. 23:12
Spring & JPA/JDBC
들어가며 저번 포스트에서 JDBC를 사용하여 데이터를 조회하는 과정을 구현하였다. 이번 포스트에서는 JDBC를 사용하여 데이터를 수정하는 과정을 구현할 것이다. 데이터의 수정 데이터를 수정하는 SQL은 다음과 같다. UPDATE MEMBER SET MONEY=? WHERE MEMBER_ID=? 당연하게도 해당 SQL을 DB에 전송하기 위해서는 커넥션과 전송시킬 객체가 필요하다. 이전과 비슷한 코드이기 때문에 별다른 설명 없이 구현한다. public void update(String memberId, int money) throws SQLExceptions{ String sql = "update member set money=? where member_id=?"; Connection conn = null;..
JDBC - JDBC 사용 - 2. 데이터 조회
2023. 6. 3. 21:34
Spring & JPA/JDBC
들어가며 저번 포스트에서는 데이터를 저장하는 기능을 JDBC를 사용하여 구현하였다. 이번 포스트에서는 저장된 데이터를 조회하는 기능을 JDBC를 사용하여 구현해본다. 데이터의 조회 구현 데이터를 조회하는 SQL 구문은 다음과 같다. SELECT * FROM MEMBER WHERE MEMBER_ID=? JDBC를 사용하여 데이터를 조회하기 위해서는 해당 SQL 구문을 DB에 전송할 커넥션이 필요하다. 또한 해당 SQL을 전송시킬 Statement도 필요하다. 그리고 조회한 데이터를 가져올 객체인 ResultSet이라는 객체 역시 필요하다. public Member findById(String memberId) throws SQLException{ String sql = "select * from membe..
JDBC - JDBC사용 - 1. 데이터 저장
2023. 6. 3. 19:58
Spring & JPA/JDBC
들어가며 이전 포스트에서 JDBC의 개념, 기술들의 설명에 대해 알아보았다. 이번 포스트에서는 코드를 통해 어떻게 사용하는지에 대해 알아본다. JDBC를 사용한 회원 정보 등록 회원 정보를 등록하는 예제를 만들어보자. 여기서는 H2 데이터베이스를 사용하고, 이미 연결이 완료되었다고 가정한다. 가장 먼저 회원에 대한 정보를 구현해야 한다. 구현할 회원은 매우 간단한 상태만을 가지고 있다. 먼저 회원의 id이다. 이것으로 회원을 유일하게 식별할 수 있다. 그 다음이 회원이 가지고 있는 돈 액수이다. 이를 클래스로 나타내면 다음과 같다. @Data @NoArgsConstructor @AllArgsConstructor public class Member{ private String memberId; privat..
JDBC - JDBC의 이해 - 데이터 접근 기술
2023. 6. 3. 18:21
Spring & JPA/JDBC
들어가며 저번 포스트에서 JDBC가 등장하게 된 계기와 효율성, 그리고 그 한계점에 대해 알아보았다. 이번 포스트에서는 JDBC를 활용하여 DB에 접근하는 기술들, 특히 SQL Mapper와 ORM에 대해 알아보도록 한다. JDBC 직접 사용과 SQL Mapper JDBC가 나온지 얼마 안된 초창기에는 대부분 JDBC에 다이랙트로 접근하여 SQL을 전송하는 방식을 사용하였다. 하지만 이는 너무 오래 전의 기술로 현재는 대부분 사용하지 않는 방식이다. 현재 사용하는 기술은 SQL Mapper가 있다. SQL Mapper 기존에 JDBC를 다이랙트로 사용하던 때에는 DB에서 데이터를 가져올 때 일일히 객체에 매핑했었어야 했다. @AllArgsConstructor public class Member{ priv..