본문 바로가기

전체 글322

이펙티브 자바 4장 -2 추상 클래스보다는 인터페이스를 우선하라 추상클래스 방식은 자바가 단일상속만 지원하기에 새로운 타입을 정의하는데 제약을 가지게 된다. 인터페이스의 경우 어떠한 클래스를 상속했든 같은 타입으로 취급된다. 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해 넣을 수 있다. 인터페이스는 믹스인 정의에 안성맞춤이다. 믹스인이란 클래스가 구현할 수 있는 타입으로 믹스인을 구현한 클래스에 원래의 주된 타입 외에도 특정 선택적 행위를 제공한다고 선언하는 효과를 준다. 인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있다. 언터페이스는 기능을 향상시키는 안전하고 강력한 수단이다. 추상클래스로 정의해둔다면 그타입에 기능을 추가하는 방법은 상속뿐이며 상속해서 만든 클래스는 래퍼클래스보다 활용도가 떨어지고 깨지기는 더.. 2019. 12. 2.
JWT JWT : JSON Web Token의 약자로 데이터가 JSON으로 이루어진 토큰을 의미 세션 기반 인증 : 사용자가 로그인하면 서버는 세션 저장소에 사용자의 정보를 조회하고 세션 id를 발급하며 발급된 id를 주로 브라우저의 쿠키에 저장하며 사용자가 요청을 보낼때 마다 서버는 세션 저장소에서 세션을 조회한 후 로그인 여부를 결정하여 작업을 처리하고 응답한다. 저장소로는 주로 메모리, 디스크, 데이터베이스를 사용한다. 세션 기반 인증의 단점은 서버를 확장하기가 번거로워질 수 있다는 점이다. 만약 서버의 인스턴스가 여러개라면 모든 서버끼리 같은 세션을 공유해한다. 토큰 기반 인증 : 토큰은 로그인 이후 서버가 만들어주는 문자열이며 해당 문자열안에는 사용자의 로그인 정보가 들어있고, 해당 정보가 서버에서 발.. 2019. 12. 2.
MongoDB 관계형 데이터 베이스의 한계 데이터 스키마가 고정적 확장성(처리해야할 데이터의 양이 늘어나면 분산 시키는 것이 아니라 성능을 업그레이드 해줘야했다) MongoDB는 문서지향적 NoSQL 데이터 베이스이다. 유동적으로 스키마를 지닐수 있으며 종류가 같은 데이터라 하더라도 새로 등록할 때 기존 데이터까지 수정할 필요는 없다. ACID특성 : 원자성 일관성 고립성 지속성을 가리키며 트랜잭션이 안전하게 처리되는 것을 보장하는 성질이다. 이 특성을 지키는 경우 RDBMS가 유리하다. 문서 : 문서의 데이터구조는 한개 이상의 키-값으로 구성되어있다. MongoDB에서는 BSON(바이너리 형태의 JSON)형태로 저장된다. 새로운 문서 작성시 _id라는 고유값을 자동으로 생성하며 이 값은 시간, 머신 아이디, 프로세스.. 2019. 11. 28.
이펙티브 자바 4장 - 1 클래스와 멤버의 접근 권한을 최소화 하라 컴포넌트에서 클래스 내부테이터와 내부 구현정보를 외부 컴포넌트로부터 잘 숨기는 것은 매우 중요하다. 변경과 관련이 있기 때문이다. 내부에서만 : 유효성 검사 X 코드 간결해짐 외부 유출 : 유효성 검사 중요 정보 은닉의 장점 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 빨리 파악하여 디버깅할수 있으며 다른 컴포넌트로의 변경 부담도 적다. 정보 은닉이 성능을 높여주진 않지만 성능 최적화에 도움을 준다. 소프트웨어 재사용성을 높인다. 큰 시스템 제작 난이도를 낮춘다. 모든 클래스와 멤버의 접근성을 가능한 좁히는 것이 원칙이다. 한 클래스에서만 사용하는 package-private 톱레벨 클래스나 인터.. 2019. 11. 27.