본문 바로가기
반응형

분류 전체보기714

ConcurrentHashMap vs Hashtable vs Synchronized Map 개요 멀티쓰레드 자바 어플리케이션에서 Hashtable, Vector는 병목현상이 되었습니다. 따라서 JDK 1.5는 대용량, 짧은 대기 시간에 매우 효율적인 몇 가지 우수한 동시 컬렉션을 도입했습니다 3가지 컬렉션이 모두 쓰레드 안전하고 멀티 쓰레드, 동시성 자바 어플리케이션에서 사용합니다. 하지만, 쓰레드 안전 구현에 차이가 있습니다. Hashtable은 JDK 1.1에 등장한 레거시 클래스로 동기화 메서드를 사용해 동기화 안전을 보장합니다. Hashtable의 모든 메서드들은 동기화되어 있으므로 쓰레드가 증가할 때마다 느려집니다. Synchronized Map은 Hashtable처럼 동시성 자바 프로그램 사용합니다. 하지만 Hastable과 달리 레거시 클래스가 아니고 Collections.sync.. 2022. 10. 15.
equals() 와 hashCode()는 왜 재정의 해야 할까? 개요 롬복으로 equals()를 재정의하면 항상 hashCode()도 같이 재정의하도록 안내하고 있습니다. 어노테이션도 @EqualsAndHashCode입니다. 이는 Map, Set 등의 자바 컬렉션 클래스가 equals, compareTo, hashCode를 사용하기 때문입니다. equals와 hashCode를 같이 재정의 하지 않으면 원하는 대로 동작하지 않을 수도 있습니다.(해쉬 테이블에서 키로 사용할 때 기준입니다) 따라서 이번 시간에는 equals와 hashCode를 알아보겠습니다.. equals() 자바의 equals() 와 hashCode()는 Object 클래스에 있기 때문에, 모든 자바 클래스는 기본적으로 equals()와 hashCode() 구현체를 가집니다. equals() 자바 공식.. 2022. 10. 14.
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.. 2022. 10. 14.
TIL_2022.10.12 1. Facts(사실, 객관) - 개발자를 위한 글쓰기 가이드 완독 및 정리 - 개인 프로젝트 Controller 테스트 완료 - 회사 SSL 인증 진행 2. Feelings(느낌, 주관) "개발자를 위한 글쓰기 가이드" 완독 및 정리했습니다. 개발자가 쓴 책은 아니고 카피라이터 작가분이 쓰신 책인데, 쉽고 예제 위주로 설명주셔서 편하게 읽었습니다. 블로그에 글을 많이 쓰다보니 내가 가진 잘못된 습관들을 알 수 있었고 교정 할 기회가 되어서 좋았습니다. 회사에서 홈페이지에 새로운 SSL 발급중입니다. 마음같아서는 빠르게 하고 싶은데 중간에 절차가 있다보니 늦어지는 것을 느꼈습니다. 도메인 등록을 위해 온라인팀에서 처리를, SSL 인증회사에서는 계속 계약 및 진행 상황 확인을, 실제적인 인프라 적용에는 인.. 2022. 10. 13.
개발자를 위한 글쓰기 가이드 - 유영경 개요 블로그 글을 열심히 쓰다보니, 어떻게 하면 글을 사람들에게 쉽게 전달하고 가독성이 좋게 만들 수 있을까 고민합니다. 그러다 개발자를 위한 글쓰기 책이 있다고 하여 구매하여 읽게 되었습니다. '테크니컬 라이팅 45가지 원칙' 중에 도움이 될만한 내용을 추려보겠습니다. 08 핵심부터 쓴다 텐서플로(TensorFlow)는 구글 브레인(Google Brain)팀에서 근무하는 연구자와 엔지니어가 기계 학습과 심층 신경망 연구용으로 개발했지만, 기타 분야에도 광범위하게 적용할 수 있는 범용성을 갖춘 시스템입니다. 텐서플로는 데이터 흐름 그래프를 사용하는 수치 연산용 오픈소스 소프트웨어 라이브러리입니다. 유연한 아키텍처를 채택하여 단일 API를 통해 데스크톱, 서버 또는 휴대기기에 장착된 하나 이상의 CPU 또.. 2022. 10. 13.
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테이블에 모든 행을 매번 접근하는 것이 아니라, 정렬에 따라서 종료된느 시점.. 2022. 10. 10.
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를 쓰지 않고 새로운 해쉬값을 할당받아 저장되므로, .. 2022. 10. 10.
운영중인 Vue.js 웹 서비스를 타입스크립트로 다시 쓰기, 장기효 개요 vue 강의로 유명한 캡틴판교 장기효님이 발표한 내용입니다. 기존 레거시 코드를 제거한 경험을 공유하는데, vue를 TS로 개선한 작업이지만, 언어가 중요한 것이 아닌 레거시 개선을 중점으로 확인하니 좋은 세미나였습니다. 문제상황은 무엇인가? Clova 더빙이라는 웹 편집기로 비디오, 오디오 등의 미디어 제어와 타임라인을 편집한다 왜 타입스크립트를 도입했나? -> 적은 인원으로 빠르게 서비스를 오픈하면서 기술 부채가 심하게 쌓였던 상황 하지만 문제가 있었으니... 안정성 - 잘 돌아가는 서비스는 건드리지 않는게 좋다 - 오랜 기간을 거쳐 안정성을 확보한 서비스와 기능을 건드리는 건 위험하다 학습 비용 - TS를 아는 사람은 나 혼자 - 팀 전체의 학습 비용이 큰 상황 테스팅 - 기능을 보장할 수 있.. 2022. 10. 9.
TIL_2022.10.08 1. Facts(사실, 객관) - oracle 인덱스 스캔 공부 2. Feelings(느낌, 주관) oracle 인덱스 스캔을 공부했습니다. 7가지의 스캔 방식이 있으며, 각 방식의 특징과 간단한 사례를 실습했습니다. 처음에 어렵게만 느껴졌던 인덱스가 막상 실습을 하고 사용해보니 크게 어려운 것은 아니였습니다. 공부를 계속 하면서 암기를 마구마구 하기보다, 인출을 통해서 계속 머리속으로 인덱스가 진행되는 과정을 그려보려고 노력했습니다. 3. Findings (배운 점) 인덱스 스캔은 총 7가지가 있는데, 오라클이 옵티마이저를 활용해서 최선의 선택을 내립니다. 그런데, 각 학습상황에 따라서 같은 코드도 버전에 따라서, 사용자 환경에 따라서 달라진다고 합니다. 따라서 인덱스 힌트를 사용해서 튜닝을 할 수 있.. 2022. 10. 9.
반응형