본문 바로가기

분류 전체보기

(93)
Garbage Collection 메모리를 명시적으로 해제하지 않아도 메모리 할당 받은 객체를 참조하는 부분이 없는 경우 Garbage Collector를 통해 자동으로 관리 해줌 - 사용한 객체를 null로 지정하지 않아도 됨 - System.gc() 를 호출하면 문제가 커짐 (필요 없는 상황에서 Full GC가 수행 됨...)Stop-the-world : GC를 수행하기 위해 JVM이 Application을 멈추는 것 (GC를 수행하는 Thread 제외하고 모든 Thread의 작업을 멈춤) - GC 튜닝이라는 것은 결국 Stop-the-world 시간을 줄이는 것인데, 이건 Major GC(Full GC)와 관련이 있음 Heap Memory에는 Young 영역과 Old 영역이 존재함 1. Young 영역 - 새로 생긴 객체가 위치함 ..
JVM 메모리 구조 JVM (Java Virture Machine - 자바 가상 머신) - Java와 OS 사이의 중개자 역할 - Java가 OS 종류에 영향 받지 않고 동작하게 해줌 - 자동 메모리 관리 (GC) Java Source : 사용자가 작성한 자바 파일Java Compiler : Java Sourece 파일을 JVM이 해석할 수 있는 Byte Code 로 변경해 줌Java Byte Code : Java Compiler 에 의해 변경 된 결과 물Class Loader : Class 파일을 JVM으로 로드 하고 Link를 통해 적절히 배치. Runtime 시 동적으로 로드Execution Engine : Class Loader를 통해 로드 된 Byte Code를 명령어 단위로 수행Garbage Collector :..
객체지향 5대 원칙 - SOLID S. SRP ( 단일 책임 원칙 ) - 클래스는 하나의 책임만 가진다. - 어떤 변화에 의해 클래스를 변경해야 되는 이유는 하나여야 함 - 적용방법 : 리팩토링 O. OCP ( 개방 폐쇄 원칙 ) - 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. - 요구사항의 변경이나 추가가 발생해도 기존 구성요소는 수정이 일어나지 않아야 하며, 기존 구성요소를 쉽게 확장해서 사용할 수 있어야 함 - OCP를 가능하게 하는 것은 추상화와 다형성 - 적용방법 : 인터페이스 활용 (구현보다 정의된 인터페이스에 의존하도록 코드 작성) L. LSP ( 리스코프 치환 원칙 ) - 서브 클래스는 언제나 슈퍼 클래스로 교체 될 수 있어야 한다. (업캐스팅을 해도 문제가 되지 않아야 한다.) - 서브 클래스가 확장에 대한 ..
03. 저장소와 검색 OLTP - 사용자 대면이기 때문에 대량의 요청을 받을 수 있음 - 각 질의마다 작은 수의 레코드만 다룸 - 병목은 대개 디스크 탐색 - 관점 1. 로그 구조화 관점 - 파일에 추가와 오래된 파일의 삭제만 허용하고 한 번 쓰여진 파일은 절대 갱신하지 않는다. - 비트캐스크, SS 테이블, LSM 트리, 레벨 DB, 카산드라, HBase, 루씬 등 2. 제자리 갱신 관점 - 덮어쓰기 할 수 있는 고정 크기 페이지의 셋으로 디스크를 다룸 - B트리(관계형 데이터베이스, 비정형 데이터베이스) OLAP - 적은 수의 질의를 다루지만 각 질의는 다루기 어렵고 짧은 시간에 수백만개의 레코드를 스캔해야 함 - 병목은 디스크 대역폭 - 컬럼 지향 저장소는 이런 종류의 작업 부하를 처리할 때 사용 가능함(인기가 높아지고..
02. 데이터 모델과 질의 언어 계층 모델(트리 구조) : 다대다 관계를 표현하기 적절하지 않음관계형 모델 : RDBMS와 SQL은 정규화 된 구조로 데이터를 저장하고 질의함비관계형 모델(NoSQL) 1. 문서 데이터베이스 : 데이터가 문서 자체에 포함 되어 있으면서 하나의 문서와 다른 문서 간 관계가 거의 없는 사용 사례를 대상으로 함 - 대규모 데이터셋이나 매우 높은 쓰기 처리량 달성을 관계형 데이터베이스보다 쉽게 할 수 있는 뛰어난 확장성 - 오픈 소스 프레임워크 - 관계형 모델에서 지원하지 않는 특수 질의 동작 - 관계형 스키마의 제한에 대한 불만과 더욱 동적이고 표현력이 풍부한 데이터 모델에 대한 바람 2. 그래프 데이터베이스 : 모든 것이 잠재적으로 관련 있다는 사용 사례를 대상으로 함 - 소셜 그래프 : 정점은 사람, 간선..
01. 신뢰할 수 있고 확장 가능하면서 유지보수하기 쉬운 애플리케이션 애플리케이션이 유용하려면 다양한 요구사항을 충족시켜야 함 - 기능적 요구 사항 : 여러 방법으로 데이터를 저장하고 조회하고 검색하고 처리하게끔 허용하는 작업 - 비기능적 요구 사항 : 보안, 신뢰성, 법규 준수, 확장성, 호환성, 유지보수성 등 1. 신뢰성 : 결함이 발생해도 시스템이 올바르게 동작하게 만들어야 함 - 하드웨어 결함, 소프트웨어 오류, 인적 오류 2. 확장성 : 부하가 증가해도 좋은 성능을 유지하기 위한 전략 - 부하 기술하기, 성능 기술하기, 부하 대응 접근 방식 3. 유지보수성 : 시스템에서 작업하는 엔지니어와 운영진의 삶을 개선 - 추상화 : 복잡도를 줄이고 쉽게 시스템을 변경할 수 있게 하며 새로운 사용 사례에 적용하는데 도움이 됨 - 운용성 : 시스템의 건강 상태를 잘 관찰할 수..
MVC, MVP, MVVM 패턴 Model : data와 data를 조작하는 로직View : 사용자에게 제공 되는 UI MVC (Model - View - Controller) - 입력은 Controller에서 받음 - Controller에서 Model을 조작 - Controller에서 View를 결정 - View에서 Model을 이용하므로 서로간의 의존성을 피할 수 없음 MVP (Model -View - Presenter) - 입력은 View에서 받음 - Presenter는 View의 인스턴스를 가지고 있으면 View와 1대1 관계 - Presenter는 Model의 인스턴스도 가지고 있으므로 View와 Model 사이에서 다리와 같은 역할을 함 - Model과 View를 완벽히 분리해 주지만 View와의 의존성이 매우 강함 MVVM..
vueJS란? 핵심 라이브러리는 view layer에만 초점을 맞춰 다른 라이브러리나 기존 프로젝트와의 통합이 쉬움React와 많은 공통점이 있음 - 가상 DOM 활용 - 반응형, 조합 가능한 컴포넌트 제공 - 코어 라이브러리에만 집중하고, 라우팅 및 전역 상태를 관리하는 컴패니언 라이브러리가 있음 - vue: 코어 라이브러리 - vuex: Flux에서 영감을 받은 상태 관리 - vue-router: SPA를 위한 라우팅 시스템 MVVM 패턴 (Model - View - ViewModel 패턴)1. viewview는 윈도우, 페이지, 유저 컨트롤, 데이터 템플릿과 같은 비주얼 엘리먼트입니다. view는 view에 포함된 컨트롤들을 정의하고, 그것들의 비주얼 레이아웃과 스타일링을 정의합니다.view는 DataContex..