들어가며 주특기 주차가 시작되었다. JPA를 처음 사용해보는 거라서 삽질을 엄청나게 하느라고 따로 공부한 내용은 없었다. DAO와 DTO의 차이는 정리한 적이 있지만 오래 전 포스팅이라 내용이 부족한 것 같아 오늘의 TIL은 간단하게 JPA에서 사용하는 domain과 DTO의 차이점에 대해 간단하게 정리해보고자 한다. [개발지식] DAO / DTO(VO)란? [개발지식] DAO / DTO(VO)란? https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/ DTO의 사용 범위에 대하여 1. DTO란? DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)입니다. 간략하게 D.. annajin..
들어가며 JPA를 본격적으로 시작하려고 하자마자 에러가 터졌다. 역시 초기 세팅 후에 피할 수 없는 우리의 에러ㅎㅎㅎㅎㅎㅎ 오늘의 TIL은 JPA 프로젝트 세팅을 시작하다 만난 에러 트러블 슈팅을 해보고자 한다. 트러블슈팅 문제1 - hibernate.properties not found 에러 구글링 해보니 JDK 버전의 문제였다. JDK 8과 달리 JDK 11버전은 JAXB 라이브러리를 내장하고 있지 않기 때문에 pom.xml 파일에 별도로 추가해 주어야 한다고 한다. pom.xml에 아래 디펜던시를 추가해주면 해결된다. javax.xml.bind jaxb-api 2.3.0 문제2 - Connection is broken 에러 이 에러는 H2를 실행시켜두지도 않고 연결하려고 해서 생긴 에러였다. 터미널..
들어가며 인프런 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 강의 수강을 시작했다. 기존에는 Mybatis를 사용했었는데 항해99 커리큘럼에서 JPA를 사용하기도 하고, JPA가 여러모로 개발하기에 편리할 듯 싶어 이번에는 Mybatis대신 JPA를 공부하고 사용하기로 했다. 오늘의 TIL은 JPA를 사용하는 이유와, 강의 내용을 따른 초기 세팅 방법을 정리해보고자 한다. JPA를 사용하는 이유? JAVA는 객체지향언어이고, JAVA를 사용하는 Spring 역시 객체지향적으로 이루어져있다. 그런데, Spring과 함께 주로 사용하는 DB는 관계형 데이터베이스이다(Oracle, MySQL 등. 이하 관계형 DB). 즉, 객체 지향 언어를 사용하고 있다면 객체 데이터를 관계형 DB를 사용해서 관리하게..
들어가며 주특기 주차를 들어가기에 앞서 경쟁력을 키우기 위해 무엇을 공부하면 좋을까 고민하다가 초보자를 위한 로드맵을 발견했다. 이 정도까지 알아야한다고? ...라는 생각이 들어서 더 찾아봤는데 완전히 허무맹랑한 가이드는 아니였다. 기술면접을 대비하기 위한 Github Repo들을 뒤져보니 더하면 더했지 덜하지는 않더라. 앞으로 갈 길이 멀다... 먼 길을 떠나 내일 한 걸음 더 나아가기 전에, 오늘의 TIL은 앞으로 정리해야할 것 & 정리하고 싶은 것들 목록을 쭉 나열해보고자 한다. 공부 가이드 참고 초보 개발자를 위한 로드맵 GitHub - pocojang/developer-roadmap: 2020년 웹 개발자가 되기 위한 로드맵 2020년 웹 개발자가 되기 위한 로드맵 :kr:. Contribute..
들어가며 거의 1개월동안 묵혀놨던 동기 & 비동기 / 블락 & 논블락을 드디어 정리했다! 지금까지 가슴 한 켠에 짐으로 남겨뒀었는데 해결하고 나니까 후련하다. 다만 다른 사람한테 설명을 해주려니 스스로 이해를 제대로 하진 못했다는 생각이 들어서 여러번 다시 봐야겠다는 생각이 들었다. 아무튼, 오늘의 TIL은 동기 & 비동기를 정리한 글을 다시 이해하기 위해 간단히 정리해보고자 한다! [개발지식] 동기 & 비동기 vs 블로킹 & 논블로킹 [개발지식] 동기 & 비동기 vs 블로킹 & 논블로킹 들어가며 예전에 Petpular 프로젝트 때 사용해본 Spring WebClient에서 동기 & 비동기 / 블로킹 & 논블로킹의 개념이 등장했었다. WebClient는 논블로킹방식으로 작동하고 block() 메소드를 이..
들어가며 이진 탐색은 예전에 맛보기로 공부했던 적이 있었기도 하고 크게 어려운 개념이 아니라 이해하기 쉬웠다. 늘 말하듯이 구현은 다른 문제지만. 오늘의 TIL은 이진 탐색의 개념을 정리해보고자 한다! 이진 탐색 이진 탐색 알고리즘(binary search algorithm)은 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다. 출처 - 위키백과 이진 탐색(Binary Search)은 그림에서 보는 것처럼 중앙값을 기준으로 절반 씩 줄여나가면서 목표값을 찾아가는 알고리즘이다. 단, 이진 탐색을 하기 위해서는 자료가 순서에 따라 정렬되어 있어야 한다. 만약 정렬되어 있지 않은 자료에서 이진 탐색을 한다고 하면, 중앙값 기준으로 좌/우가 무조건 작거나 크다고 보장할 수 없기 때문이다. 이진..
들어가며 TIL을 쓰려고 보니 새삼 벌써 항해99에 승선한 지 19일 밖에 지나지 않았다는 사실을 깨달았다. 체감상 알고리즘 주차가 시작된지 한달은 족히 된거같은데 아직 한주가 더 남았다니... 이제 슬슬 체력이 딸리기 시작했다. 최근 며칠간 TIL을 쓸 기력이 없어서 대충 쓴 느낌이 컸는데, 오늘도 아마 비슷할 것 같다. 이번 주 일요일에 푹 쉬어서 체력을 보충해야겠다. 넋두리는 이정도로 하고, 오늘의 TIL은 강의 진도에 맞게 퀵 정렬과 병합 정렬의 개념을 정리하고자 한다. 정렬 퀵 정렬 퀵정렬(Quick sort)은 이름에서 알 수 있다시피 O(n log n)이라는 빠른 속도로 정렬할 수 있는 알고리즘이다. 퀵 정렬은 분할 정복(Divide and Conquert)를 통해 정렬을 하게 되는데, 기준..
들어가며 쌓인 스트레스 + 컨디션 + 부족한 수면시간 콤보로 하루종일 잠만 잤다. 그 업보로 새벽에 TIL 쓰기 시작하기 형벌을 받게 됐다ㅎ 오늘은 몇시에 잘 수 있을까... 오늘의 TIL은 오늘 배운 트리의 개념과 구현문제를 정리하도록 해보자! 트리 트리란? 뿌리와 가지로 구성되어 거꾸로 세워놓은 나무처럼 보이는 계층형 비선형 자료구조. 한 가족의 계보를 나타내는 족보나 회사 조직도 같은 것들도 트리 구조 형태로 되어 있다. 트리에서 사용하는 용어 기본적으로 그래프와 크게 다르지 않지만 트리에서 사용하는 용어들을 먼저 알고 들어가보자 Node 트리에서 데이터를 저장하는 기본 요소 Root Node 트리 맨 위에 있는 노드 Level 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된..
들어가며 해시 테이블은 개념이 연결리스트에 비해 크게 어렵지는 않았지만 여전히 코드 구현은 몇시간이고 붙잡고 있어도 해결이 안된다. 오늘 구현이 안됐던 이유는 문제 접근부터가 잘못되었어서였던거 같아서 오늘의 TIL은 문제를 풀면서 고민했던 것과 해시 테이블의 개념정리를 해보고자한다! 해시테이블 해시 테이블이란? 키에 값을 매핑할 수 있는 구조인, 연관 배열 추상 자료형(ADT)를 구현하는 자료구조이다. ‘키와 값을 매핑한다’ 비슷한게 생각이 난다. 바로 딕셔너리(dictionary)이다. (자바에서는 map, 자바스크립트에서는 object 등등) 해시 테이블을 사용하는 이유는 뭘까? 간단하게 레스토랑의 메뉴를 배열과 비교하여 예시로 생각해보자. 메뉴판에는 각 메뉴와 그 메뉴의 가격이 적혀있다. 이걸 배열..
들어가며 할게 너무 많은데 어제 늦게자는 바람에 하루종일 피곤해서 제대로 공부 못했다. 페이스 조절이 중요한데 자꾸 욕심부리게 된다. 어제도 그렇게까지 할 생각은 아니었는데... 낮 시간에 의미없이 보내는 시간들을 줄이는게 일찍잘 수 있는 방법이지 않을까 싶다. 아무튼, 졸린눈을 부여잡고 오늘의 TIL은 큐에 대한 정리와 문제풀이를 하고자한다. 큐(Queue) 큐는 시퀀스의 한쪽 끝에는 엔티티를 추가하고, 다른 반대쪽 끝에는 제거할 수 있는 엔티티 컬렉션이다. 쉽게 말하면 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형구조로, 데이터의 입력과 출력 순서는 선입선출(FIFO, Fisrt In First Out)이다. 큐는 스택에 비해서는 상대적으로 쓰임새가 적다고 한다. 엥? 근데 왜이렇게..