
이클립스로 스프링 프로젝트 진행할 땐 따로 서버 중지를 하지 않고 종료해도 이클립스가 알아서 포트를 비워주기 때문에 별 신경을 안써서 IntelliJ에서도 그렇게 적용되는줄 알았다. 종료하고 다음날 어플리케이션을 가동하려는데 아무 문제없이 가동되던것이 콘솔창에 Web server failed to start. Port 8080 was already in use. 이미 사용중이라고 나온다.어제까지 이 포트번호로 가동했던 프로젝트가 갑자기 포트번호를 이미 사용중이라고 나오길래 이게 무슨말인가 싶어서 열심히 구글링 해본결과 IntelliJ만 종료해서는 포트가 자동으로 해제가 안되는 특징 때문이였다. 때문에 반드시 가동중인 서버를 멈추고 종료해야 포트를 계속 잡아먹는 문제가 생기지 않는다. 서버 가동을 멈추지 ..

작성 전에 유의해야 할 점이 있다. 각각의 테스트 코드는 순차적이 아닌 독립적으로 실행된다. 순서에 의존적으로 설계하면 안된다. 먼저 test디렉토리에 가서 테스트하고자 하는 패키지와 클래스를 생성해주고 클래스에서 테스트가 필요한 메소드에 @Test라는 어노테이션을 명시해준다. 필자는 save, findByName, findAll 세 가지 메소드를 테스트 할 것이다. 메소드 별로 각각 실행한다면 문제는 안되지만 클래스 전체로 실행한다면 findByName, findAll 두 메소드가 테스트 에러를 일으킨다. 이는 두 메소드에 save메소드를 실행시켜 저장한 값을 테스트하기 때문인데 둘 중 먼저 실행되는 메소드를 거치고 나면 저장되있는 값이 그대로 보존되기 때문이다. 원활한 테스트를 위해 MemoryMem..
Ctrl + Alt + v : 리턴값에 맞는 변수 자동 생성 Ctrl + Alt + m : 메소드로 빼기 Ctrl + Shift + t : 테스트 만들기 Alt + Insert : getter, setter 생성 및 기타(Class, Interface등등) 생성 기능 Ctrl + Alt + Insert : 같은 디렉토리에 생성 Shift + F6 : 해당 부분과 관련된 곳 전부 Rename해준다. Ctrl + Shift + Enter: 코드 한줄을 자동완성과 세미콜론(;)까지 입력시켜 마무리해준다. Ctrl + Shift + F10 : 현재 코드 실행 Shift + F10 : 이전 실행 재실행 Ctrl + / : 선택한 라인 주석 처리(//로 주석처리) Ctrl + Shift + / : 선택한 영역만큼 ..

동시성(concurrency)이란 단일 cpu에서 동시에 여러 작업을 하는 것처럼 보이게 만드는 것 즉 싱글 코어에서 멀티 쓰레드를 동작시키는 방식이다. HashMap은 이런 동시성 문제가 있어 멀티 쓰레드 어플리케이션 환경에서는 ConcurrentHashMap을 더 선호한다고 한다. 이는 내부적으로 동기화를 하느냐의 차이가 있기 때문이다. 그렇다고 해서 ConcurrentHashMap은 추가 및 삭제와 같은 작업만 될뿐 읽기 작업은 동기화되지 않기때문에 모든 작업이 동기화되는 것은 아니다. 위의 표에서 볼 수 있듯이 속도는 HashMap이 빠르기 때문에 무조건적으로 ConcurrentHashMap이 좋다고 보기도 힘들다. 정리하자면 멀티 쓰레드 환경에서는 ConcurrentHashMap 단일 쓰레드에서..