목록분류 전체보기 (718)
쌓고 쌓다
Member (회원 도메인) @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } 생성자로 이름, 나이를 받는다. 기본 생성자도 존재. id는 저장소에서 할당함. MemberRepository public class MemberRepository { private static Map store = new HashMap(); private static long sequence = 0L; privat..
SpringDataJpa에서 페이징을 쉽게 처리할 수 있다. public interface SpringDataJpaPosterRepository extends JpaRepository { Page findByTitleContaining(String title, Pageable pageable); } 검색과 관련된 코드 작성은 포스팅한적 있다. 자세한 사항은 그 게시글을 보자. 간단히 포함될 내용과 페이징 처리를 위한 파라미터를 전달하여 해당 내용이 포함되고 페이징 처리된 정보를 가져올 수 있다. 정렬시 Pageable 인터페이스를 넘겨준다. Pageable은 페이징 처리에 필요한 정보를 타입이며 실제 구현체는 PageRequest 클래스를 사용한다. PageRequest 객체 생성 방법 Pageable ..
문제의 발견 게시글 정렬의 방법으로 날짜, 댓글 개수를 구현했다. 이상하게 날짜순은 잘 정렬되어 나오는데 댓글 개수로 정렬시 게시글(레코드)의 누락과 중복이 발생했다. JPA의 Paging은 ORDER BY와 Limit를 사용한다. 문제 설명 아래의 결과를 먼저 보자. 게시글에 달린 댓글 개수인 comment_cnt를 내림차순으로 출력한다. limit를 통해 보일 레코드를 조절했다. 네모 박스친 레코드 title이 "수정제목fsfs"인 레코드가 중복되어 나타난다. 사실 MySQL의 버그인가? 생각이 들었다. 내가 버그를 찾은걸까? ㅎㅎ 결과적으로 말하면 버그가 아니다. ORDER BY에는 문제가 없다. 크기순으로 정렬되어 있지 않은가. 즉, 고유한 순서를 보장해주지 않지만 정렬은 보장해줬다. 그럼 LIM..
Response 구조 HTTP/1.1 200 OK status line Date: Sun, 2 June Server: Apache Content-Length: 1 Content-Type: text/html headers blank line hello body HTTP 응답 메시지 생성 1. HTTP 응답 코드 지정 // [status-line] response.setStatus(HttpServletResponse.SC_OK); SC_OK는 200으로 매핑되어 있어 메소드 호출시 200을 넣어줘도 동일하다. 2. 헤더 생성 //[response-headers] response.setHeader("Content-Type", "text/plain;charset=utf-8"); response.setHeader..
댓글 구현한 이후 게시글 삭제시 SQL Error가 발생했다. Cannot delete or update a parent row: a foreign key constraint fails 게시글 삭제 기능 구현 이후에 댓글 기능을 구현했고 게시글 삭제 부분에 댓글 처리를 추가적으로 작성해주지 않아 SQL 에러가 발생했다. 게시글 삭제시 해당 게시글의 댓글들도 함께 삭제하도록 코드를 추가 및 변경해보자. CommentRepository public interface SpringDataJpaCommentRepository extends JpaRepository { Page findByPno(Long pno, Pageable pageable); // 페이징된 댓글들 List findByPno(Long pno);..
HTTP 요청 데이터 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 3가지 방식이 있다. GET - 쿼리 파라미터 /url?username=LSM&age=1 메시지 바디 없이, 쿼리 파라미터에 데이터를 담아 전달 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달 HTTP message Body에 직접 데이터를 담아서 요청 HTTP API에서 주로 사용 (JSON, TEXT) JSON 주로 사용하며 POST, PUT, PATCH 1. GET 쿼리 파라미터 username=LEE, age=1 데이터를 아래의 URL로 전달한다. http://localhost:8080/reques..
https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 사용자 정의 정렬 함수를 등록하여 풀자. 숫자 6과 10이 주어졌을때 두 숫자를 앞 뒤로 순서를 바꿔가며 붙여보고 더 큰 숫자를 만들 수 있는 방법으로 정렬하면 된다. 6과10으로 6 10 = 610, 10 6 = 106을 만들 수 있다. 이때 6이 먼저 오는 방법이 더 큰 수를 만들 수 있음을 이용한다. 테스트케이스 11은 000과 같은 결과가 나왔을때 0으로 반환하는 경우를 고려해야..
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 아래의 로직을 수행하자. 1. 다리의 트럭들이 한 블럭씩 이동한다. (이때 다리를 모두 건넌 트럭은 pop한다.) 2. 다리에 오를 수 있는 트럭들을 다리에 추가한다. 3. 시간을 +1 해준다. 123 과정을 트럭들이 다리를 모두 건널때까지 반복해주면 된다. 전체 코드 #include #include #include using namespace std; int solution(int b..