본문 바로가기

728x90
반응형

공부 정리

(141)
ConcurrentHashMap vs Hashtable vs Synchronized Map 개요 멀티쓰레드 자바 어플리케이션에서 Hashtable, Vector는 병목현상이 되었습니다. 따라서 JDK 1.5는 대용량, 짧은 대기 시간에 매우 효율적인 몇 가지 우수한 동시 컬렉션을 도입했습니다 3가지 컬렉션이 모두 쓰레드 안전하고 멀티 쓰레드, 동시성 자바 어플리케이션에서 사용합니다. 하지만, 쓰레드 안전 구현에 차이가 있습니다. Hashtable은 JDK 1.1에 등장한 레거시 클래스로 동기화 메서드를 사용해 동기화 안전을 보장합니다. Hashtable의 모든 메서드들은 동기화되어 있으므로 쓰레드가 증가할 때마다 느려집니다. Synchronized Map은 Hashtable처럼 동시성 자바 프로그램 사용합니다. 하지만 Hastable과 달리 레거시 클래스가 아니고 Collections.sync..
equals() 와 hashCode()는 왜 재정의 해야 할까? 개요 롬복으로 equals()를 재정의하면 항상 hashCode()도 같이 재정의하도록 안내하고 있습니다. 어노테이션도 @EqualsAndHashCode입니다. 이는 Map, Set 등의 자바 컬렉션 클래스가 equals, compareTo, hashCode를 사용하기 때문입니다. equals와 hashCode를 같이 재정의 하지 않으면 원하는 대로 동작하지 않을 수도 있습니다.(해쉬 테이블에서 키로 사용할 때 기준입니다) 따라서 이번 시간에는 equals와 hashCode를 알아보겠습니다.. equals() 자바의 equals() 와 hashCode()는 Object 클래스에 있기 때문에, 모든 자바 클래스는 기본적으로 equals()와 hashCode() 구현체를 가집니다. equals() 자바 공식..
HTTP Method for Restful Services 개요 REST(Representational State Transfer) 란 웹 서비스를 개발하는 아키텍쳐 스타일입니다. REST 사용의 가장 큰 장점은 인터넷 HTTP를 사용하는 사람들에게 친숙한 구성을 사용해 REST 기반으로 상호작용하는 것입니다. REST에서 가장 까다로운 작업 중 하나는 올바른 HTTP 메서드 선택입니다. 대부분 개발자은 GET, POST, PUT, DELETE 등의 메서드를 압니다. 그러나 이따금 잘못 사용합니다. 각 HTTP Method의 특징, 안전한 메서드(Safe methods), 멱등성 메서드(Idempotent Methods)을 알아보겠습니다. 안전한 메서드(Safe methods)란? 안전한 메서드(Safe methods)는 서버에 있는 자원들을 변경시키지 않는 H..
sort merge join 개요 테이블 조인의 경우 nested loop join, hash join, sort merge join 3가지가 있습니다. 이번 시간에는 sort merge join을 알아보겠습니다. sort merge join sort merge join은 내부적으로 정렬을 하고 조인을 하는 방식으로, not equal join에서 성능 향상을 위해 사용할 수 있는 방법입니다. non equal join이란 아래와 같이, where e.sal between s.losal and s.hisal 처럼 '='으로 이루어지지 않은 조인 형식을 말합니다. 아래와 같이, emp 테이블은 DEPTNO를 정렬해서 조인합니다. 따라서 dept 테이블은 emp테이블에 모든 행을 매번 접근하는 것이 아니라, 정렬에 따라서 종료된느 시점..
hash join 개요 오라클에서 조인의 방법은 총 3가지가 있습니다. nested loop join, hash join, merge join 중에서 hash join을 알아보겠습니다. hash join hash join은 선행 테이블을 해쉬 테이블로 설정하여 ROWID 대신, 해쉬값을 사용해서 대용량 데이터를 빠르게 처리하기 위한 방법입니다. nested loop join는 대용량 테이블을 조회할 때 적합하지 않습니다. for문 형식으로 계속 반복조회하기 때문입니다. nested loop join는 ROWID를 찾아서 다른 테이블과 조인했습니다. hash join은 선행 테이블을 해쉬 테이블이라 하며, 해쉬값을 저장하고 있으며, 오라클의 PGA에 저장됩니다. ROWID를 쓰지 않고 새로운 해쉬값을 할당받아 저장되므로, ..
인덱스 스캔 7가지 종류 개요 오라클에서 인덱스 스캔 방식이 많이 있는데 7가지를 정리해 보겠습니다. 오라클 옵티마이저가 자신이 판단할 때 최선의 선택을 하겠지만, 가끔 비효율적인 인덱스 스캔을 한다면, 7가지를 알아두고 적절한 인덱스 스캔을 적용하면 좋을 것 같습니다. 그 전에 먼저 인덱스가 적용되기 위한 WHERE 절 가공에 대한 사전 지식을 알아보겠습니다. WHERE절의 좌변을 가공하지 마라 숫자형 컬럼 인덱스 가공 SELECT ename, sal*12 FROM emp WHERE sal * 12 = 36000; -> SELECT ename, sal*12 FROM emp WHERE sal = 36000/12; 문자형 컬럼 인덱스 가공 SELECT ename, job FROM emp WHERE substr(job,1,5)='S..
커밋 메세지 본문은 "어떻게"보다 "무엇을", "왜"에 맞춰 작성하기 커밋 메세지 작성의 중요성 개발자의 개발 능력 못지 않게, 협업 능력이 중요하다는 것은 이제 모든 개발자들이 공감하는 부분 일 것입니다. 좋은 협력이란 핵심을 딱딱 짚는 좋은 커뮤니케이션 능력과 부드럽고 협조적인 대화스킬도 있겠지만, 커밋 메세지 작성의 견고함도 포함된다고 생각합니다. 코드로 승부하는 IT 세계에서, 다른 동료들과 협업할 때 나의 작업물의 의도를 커밋메세지로 잘 드러내는 것 만큼, 다른 동료들의 업무 향상성을 높이는 길이 없습니다. 좋은 커밋 메세지를 작성하기 위한 여러가지 가이드라인이 있습니다. 대표적으로 Chris Beams의 How to Write a Git Commit Message 글에서 7가지를 소개하고 있는데, 그 중에 커밋 메세지의 본문은 어떻게보다 무엇을, 왜에 맞춰 작성..
GitHub Flow vs Git Flow 개요 평소에는 Git Flow만 알고 있었는데, 강의를 통해 GitHub Flow도 있다는 사실을 알았습니다. 따라서 Git Flow와 GitHub Flow를 비교해보고자 합니다. 각 팀의 상황에 따라서 적절한 전략을 선택하는 데 도움이 될 것입니다. Git-Flow feature, develop, release, hotfix, master 5가지의 브랜치 전략을 가지고 있습니다. 기능을 개발하기 위해서 feature 브랜치를 만들고, 브랜치를 이동할 때 check out 명령어를 사용하면 됩니다. feature 브랜치는 개발을 동시가 아닌 별도로 진행하여 충돌을 막습니다. 기능 개발이 모두 끝나면, develop 브랜치에 머지합니다. develop 브랜치는 마치 master 브랜치와 비슷합니다. 왜냐하..

728x90
반응형