전체 글
Try with Resources - 손쉬운 자원 해제
Java 개발을 하다보면 close 메서드를 호출해 자원을 해제해줘야하는 자원을 마주하게된다. 만약 프로그램에서 사용한 자원을 해제하지 않아 독점하게되면 운영체제의 자원이 고갈되어 다른 프로그램은 자원을 사용하지 못하게되는 결과를 초래하기 때문이다. Scanner BufferedReader FileInputStream FileOutputStream BufferedInputStream BufferedOutpusStream 기타 등등 위와 같은 자원을 사용 객체들은 try-catch-finally 블록에서 자원을 사용하고 해제해야만한다. 예를 들어, 텍스트 파일을 읽어 콘솔에 출력하는 코드는 아래와 같이 작성해 자원을 반드시 해제시켜야한다. public class Test { public static voi..
[나의 MSA 구축 일기] 처음 MSA를 구축해보며 겪었던 시행착오들
해보고 싶어서 그랬어요. 작년 여름이었다. 제대로 공부 한 번 해보자는 생각으로 JPA를 공부하고 있었는데 MSA라는 것을 알게되었다. 기존의 거대한 하나의 애플리케이션을 쪼개 여러 개의 애플리케이션으로 분리하고, 서로간의 통신은 RESTful-API로 구현하는 아키텍쳐인데 거기서 오는 장점에 매료되어 바로 관련 자료를 찾고 프로젝트를 시작했다. 각각의 모듈(분리된 애플리케이션)은 서비스의 특성과 목적에 따라 다른 개발 환경을 가질 수 있다. 제대로 구축된 MSA에서는 특정 모듈이 오류가 발생해 정상적인 서비스 제공이 불가능하더라도 전체 서비스가 죽지 않고 해당 모듈을 이용하는 서비스만 제한되었다. 특정 서비스의 코드 개선, 비즈니스 로직 수정 등의 변경이 발생할 경우 자그마한 하나의 모듈만 재배포하면 ..
![[WhiteShip Java LIVE Study] 6주차 : 상속](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCSSIc%2FbtqXBXmsYtj%2FL6v6Q34qOczI7nJSkobkF0%2Fimg.jpg)
[WhiteShip Java LIVE Study] 6주차 : 상속
목표 자바의 상속에 대해 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 상속 상속이란 기존의 클래스에 기능을 추가하거나 재정의해 새로운 클래스를 정의하는 것을 의미한다. 말그대로 기존의 클래스에 정의되어있는 모든 필드와 메소드를 물려받고, 추가적인 필드와 메소드를 구현할 수 있도록 한다. 이 때, 기존에 정의된 클래스를 상위 클래스(Super Class)라고 하고 상위 클래스를 상속받는 클래스를 하위 클래스(Sub Class)라고 한다. 아래 다이어그램에서 Animal(동물)은 Mammal(포유류), Bird(조류), Reptile(파충류)의 상..

주니어 개발자의 2020년 회고
당장 공부하고 진행해야할 프로젝트나 스터디가 있지만, 2020년을 되돌아보는것이 앞으로 있어서 더 도움이 될 것 같아 2020년 회고를 하기로 했다. 올 해는 나에게 많은 고민을 안겨주었던 해였다. 많은 실망이 있었고, 그 실망이 나의 견문을 넓혀주는 계기가 되기도 했다. 견문이 넓혀지면서 다시 또 아쉬움이 생기고 또 다시 많은 고민을 안겨주었다. 연초진행중이던 프로젝트에서 전체 회식이 있었고, 팀장님은 정말 감사하게도 회식 자리에서 나를 과장급 인력이라고 소개해주셨다. 다른 PL분들한테서도 일 잘한다는 얘기를 들었고 자존감 뿜뿜하면서 퇴근했던 기억이 난다. 처음 사용하는 툴로 진행한 프로젝트인데 큰 문제 없이 프로젝트가 마무리되어 정말 다행이다. 그 이후에는 새로 입사한 사원들의 교육을 진행했다. 3주..
![[if(kakao) 2020] JUnit5를 시작하며](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIUfKH%2FbtqRol0R6ob%2FcLGfxZWLKkgnPbLCfFlenk%2Fimg.jpg)
[if(kakao) 2020] JUnit5를 시작하며
지난달에 if kakao 2020도 신청해서 들었는데, 메모만 해놓고 귀찮아서 포스팅을 못했었다. 이번 연휴때 시간이나서 밀린 포스팅을 하는김에 JUnit5 관련 세션에 대한 내용을 포스팅해봤다. 카카오스토리의 Nesoy 님께서 발표하신 세션인데, JUnit4와 JUnit5를 비교하고 JUnit5를 찍먹하는 내용이다. 예전에 인프런에서 강의는 JUnit4 코드로 제작이 되어있었고 내가 실습한 환경은 JUnit5 이었다. 두 버전의 테스트 코드가 달라서 나도 몇번 삽질한 끝에 JUnit5 버전의 코드를 작성했고, 그 코드를 다른 사람들 참고하라고 게시한적이 있었는데 댓글로 문법이 퇴보한 것 같다는 의견이 있었다. 그 때 답글로 그렇지 않다고 말만 했었는데, 그 분이 이 세션을 보셨더라면 더 도움이 됬을것 ..
![[WhiteShip Java LIVE Study] 5주차 : 클래스](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuMoTg%2FbtqRoQGmzwB%2FS5oI6XkIUaZXaJltPiJJdK%2Fimg.jpg)
[WhiteShip Java LIVE Study] 5주차 : 클래스
목표 자바의 Class에 대해 학습하세요. 학습할 것 (필수) 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 과제 (Optional) int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. 클래스를 정의하는 방법 객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 모든 데이터를 객체로 취급..