목록전체 글 (32)
dew's CSE Studying
17장 웹 페이지에서 댓글 등록하기17.1 댓글 등록의 개요댓글 생성 뷰 페이지(_new)에 댓글 입력 폼 만들기[댓글 작성] 버튼을 클릭해 REST API 요청 보내기 document.querySelector(): 웹 페이지에서 특정 요소(버튼)을 찾아 반환한다addEventListener(): 특정 요소에 이벤트가 발생(버튼 클릭)했을 때 특정 동작(댓글 객체 전달)을 수행한다fetch(): 웹 페이지에서 REST API 요청(POST 요청)을 보낸다 17.2 댓글 생성 뷰 페이지 만들기부트스트랩에서 코드를 복사해주고_new.mustache에 추가한 후 조금 수정해준다수정 완료! 17.3 자바 스크립트로 댓글 달기17.3.1 버튼 클릭 이벤트 감지하기 17.3.2 새 댓글 자바스크립트 객체 생성하기새..
15장 댓글 컨트롤러와 서비스 만들기15.1 댓글 REST API의 개요REST 컨트롤러: 댓글 REST API를 위한 컨트롤러로 서비스와 협업, 클라이언트 요청을 받아 응답하며 뷰가 아닌 데이터 반환서비스: REST 컨트롤러와 리파지터리 사이에서 비즈니스 로직, 즉 처리 흐름을 담당하며 예외 상황이 발생했을 때 @Transactional로 변경된 데이터 롤백DTO: 사용자에게 보여줄 댓글 정보를 담은 것. 단순히 클라이언트와 서버 간에 댓글 JSON 데이터 전송 15.2 댓글 컨트롤러와 서비스 틀 만들기게시글 리파지터리가 있어야 댓글을 생성할 때 대상 게시글의 존재여부를 파악할 수 있다15.3 댓글 조회하기15.3.1 요청을 받아 응답할 컨트롤러 만들기@AllArgsConstructor: 모든 필드를 ..
14.1 해싱이란?-키값 비교로써 탐색하고자 하는 항목에 접근-해싱(hashing): 키 값에 대한 산술적 연산에 의해 테이블의 주소를 계산하여 항목에 접근-어떤 항목의 키만을 가지고 바로 항목이 들어 있는 배열의 인덱스를 결정-해시 테이블: 키 값의 연산에 의해 직접 접근이 가능한 구조14.2 추상 자료형 사전사전의 개념사전(dictionary): (키,값)쌍의 집합 (=맵, 테이블)키(key): 사전의 단어처럼 항목과 항목을 구별시켜주는 것값(value): 단어의 설명에 해당한다-오직 키에 의해서 관리된다리스트: 위치에 의하여 관리 사전의 연산add, delete, search 14.3 해싱의 구조해시함수(hash function)-탐색키를 입력받아 해시주소 생성-이 해시주소가 배열로 구현된 해시테이..
13.1 탐색이란?탐색(search): 여러 개의 자료 중에서 원하는 자료를 찾는 작업-탐색의 단위: 항목(숫자일 수도, 구조체일 수도)키(key): 항목과 항목을 구별 = 탐색키(search key)=>탐색이란 탐색키와 데이터로 이루어진 여러 개의 항목 중에서 원하는 탐색키를 가지고 있는 항목을 찾는 것 13.2 정렬되지 않은 배열에서의 탐색순차 탐색순차 탐색(sequential search): 정렬되지 않은 배열의 항목들을 처음부터 마지막까지 하나씩 검사하여 원하는 항목을 찾아가는 방법 ex: 탐색값과 일치하는 항목을 찾을 때까지 리스트의 앞부터 순차탐색 개선된 순차 탐색=>비교횟수를 1/2로 줄여보자!int seq_search2(int key, int low, int high){ int i;..
12장 서비스 계층과 트랜잭션12.1 서비스와 트랜잭션의 개념서비스(service): 컨트롤러와 리파지터리 사이에 위치하는 계층-서버의 핵심 기능(비즈니스 로직)을 처리하는 순서를 총괄한다 트랜잭션(transaction): 모두 성공해야 하는 일련의 과정 롤백(rollback): 트랜잭션이 실패로 돌아갈 경우 진행 초기 단계로 돌리는 것 12.2 서비스 계층 만들기@Autowired private ArticleRepository articleRepository; //게시글 리파지터리 객체 주입}일단 게시글 리파지터리 객체를 주입해주었다 12.2.1. 게시글 조회 요청 개선하기모든 게시글 조회 요청 개선하기// GET @GetMapping("/api/articles") public List..
12.1 정렬이란?정렬(sorting): 물건을 크기순으로 오름차순(ascending order)이나 내림차순(descending order)으로 나열하는 것 구조레코드(record): 정렬시켜야 될 대상필드(field): 레코드의 나누어진 단위(ex. 이름, 학번, 주소, 전화번호)키(key): 레코드와 레코드를 식별해주는 역할을 하는 필드(ex. 학번 필드->학생을 구별해줌)"정렬이란 결국 레코드들을 키값의 순서로 재배열하는 것!" 정렬 알고리즘단순하지만 비효율적인 방법 - 삽입 정렬, 선택 정렬, 버블 정렬 등복잡하지만 효율적인 방법 - 퀵 정렬, 히프 정렬, 합병 정렬, 기수 정렬 등-자료의 개수가 일정 개수를 넘어가면 반드시 효율적인 알고리즘을 사용해야 한다 내부 정렬(internal sorti..
9장 CRUD와 SQL 쿼리 종합9.1 JPA 로깅 설정하기쿼리(query): DB에 정보를 요청하는 구문-INSERT문(생성), SELECT문(조회), UPDATE문(수정), DELETE문(삭제) 로깅(logging): 시스템이 작동할 때 당시의 상태와 작동 정보를 기록하는 것1.application.properties에 코드 추가logging.level.org.hibernate.SQL=DEBUG-로깅 레벨(7단계)TRACE: DEBUG 레벨보다 더 상세한 정보DEBUG: 응용프로그램을 디버깅하는 데 필요한 세부 정보INFO: 응용 프로그램의 순조로운 진행 정보WARN: 잠재적으로 유해한 상황 정보ERROR: 응용 프로그램이 수행할 수 있느느 정도의 오류 정보FATAL: 응용 프로그램이 중단될 만한 심..
6장 게시판 내 페이지 이동하기6.1 링크와 리다이렉트란링크(link): 미리 정해 놓은 요청을 간편히 전송하는 기능-페이지 이동을 위해 사용-HTML의 또는 태그로 작성-클라이언트가 링크를 통해 어느 페이지로 이동하겠다고 요청하면 서버는 결과 페이지를 응답한다 리다이렉트(redirect): 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시하는 것 6.2 링크와 리다이렉트를 이용해 페이지 연결하기6.2.1 새 글 작성 링크 만들기index.mustach에 이 링크를 추가해주었다.New Article6.2.2 -> 돌아가기입력페이지의 뷰파일인 new.mustach에 해당 코드를 추가해주었다Back 6.2.3 -> 이동하기 6.2.4 -> 돌아가기ArticleController을 ..
11.1 최소 비용 신장 트리신장 트리신장 트리(spanning tree): 그래프 내의 모든 정점을 포함하는 트리 1.모든 정점들이 연결되어 있어야 하고2.사이클을 포함해서는 안된다=>그래프에 있는 n개의 정점을 정확히 (n-1)개의 간선으로 연결하게 된다 -깊이우선/너비우선 탐색 도중 사용된 간선들만 표시하면 만들 수 있다-그래프의 최소 연결 부분 그래프최소: 간선의 수가 가장 적다(최소 n-1개의 간선)-통신 네트워크 구축에 많이 사용-각 링크의 구축 비용이 같지 않기 때문에 가장 적은 링크만 사용한다고 해서 최소 비용이 얻어지는 것은 아니다 최소 비용 신장 트리최소 비용 신장 트리(MST: minimum spanning tree): 네트워크에 있는 모든 정점들을 가장 적은 수의 간선과 비용으로 ..
Part2 게시판 CRUD 만들기3장 게시판 만들고 새 글 작성하기: Create3.1 폼 데이터란폼 데이터: HTML 요소인 태그에 실려 전송되는 데이터-웹브라우저에서 서버로 데이터를 전송할 때 사용-태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체(DTO: Data Transfer Object)에 담아 받은 후, 최종적으로 데이터베이스에 저장된다 3.2 폼 데이터를 DTO로 받기3.2.1 입력 폼 만들기3.2.2 컨트롤러 만들기3.2.3 폼 데이터 전송하기3.2.4 폼 데이터 받기받는건 @PostMapping()을 사용한다괄호 안에는 받는 url 주소를 넣는다 3.2.5 DTO 만들기3.2.6 폼 데이터를 DTO에 담기3.2.7 입력 폼과 DTO 필드 연결하기DTO와 동일한 이름을 name의 속성값..