본문 바로가기

전체 글

(68)
추상 클래스의 용도? 클래스라 함은 인스턴스를 생성해주는 템플릿 같은 개념이다. 그리고 이러한 인스턴스 객체 자료형을 사용하여 우리는 보다 구조적으로 프로그램을 설계할 수 있다. 이것이 객체 지향적 프로그래밍이라고 불리는 이유이다. 즉, 추상 클래스는 추상화를 접목 시켜 보다 구조적이게 객체를 설게하고, 프로그램의 유지보수성을 올려주며, 만일 프로그램에 어떠한 기능을 업그레이드한다고 하면 수정/ 추가에 대해 유연적이게 해주어, 퀄리티 높은 프로그램과 솔루션을 개발할 수 있게 해준다. 실제로 추상 클래스는 개별 프로젝트 보다는 범용 라이브러리나 프레임워크 시스템을 설계하는데 유용하게 사용된다. 추상 클래스는 많은 프레임워크에서 지금도 사용되고 있는 구현방식이다. 예를 들어 안드로이드 스튜디오 SDK에서 앱을 만들 때 안드로이드..
Arrays 클래스 Arrays 클래스는 프로그램을 개발하는데 사용할 수 있는 유용한 유틸리티 클래스가 다수 포함되어 있는 java.util 패키지에 속해 있으며, 배열을 다루기 위한 다양한 메소드가 포함되어 있다. Arrays 클래스의 모든 메소드는 static 메소드이므로 따로 객체를 생성하지 않고도 바로 사용할 수 있는 특징이 있다. 다만 Arrays 클래스의 메소드를 사용하고 싶다면 상단에 반드시 import 문으로 java.util 패키지를 불러와야 한다. import java.util.Arrays; // Arrays.toString()을 사용하기 위한 import class Test{ public static void main(String[] args) { int[] iArr = {100, 95, 80, 70, ..
힙과 스택 메모리의 차이점 1.힙 메모리는 애플리케이션의 모든 부분에서 사용되며, 반면에 스택 메모리는 하나의 스레드가 실행될 때 사용. 그래서 힙과 메서드 공간에 저장된 객체는 어디서든지 접근이 가능하지만, 스택 메모리는 다른 스레드가 접근할 수 없다. 2.언제든지 객체가 생성되면 항상 힙 공간에 저장되며, 스택 메모리는 힙 공간에 있는 객체를 참조만 한다. 즉, 스택 메모리는 primitive 타입의 지역변수와 힙 공간에 있는 객체 참조 변수만 갖고 있다. 3.스택메모리의 생명주기는 매우 짧으며, 힙 메모리는 애플리케이션의 시작부터 끝까지 살아남는다. 4.자바 코드를 실행할 때 따로 -Xms과 -Xms 옵션을 사용하면 힙 메모리의 초기 사이즈와 최대 사이즈를 조정할 수 있다. 5.스택 메모리가 가득차면 자바에서는 java.la..
스택 프레임(stack frame) 하나의 메서드에 필요한 메모리 덩어리를 묶어서 스택 프레임(Stack Frame)이라고 한다. 하나의 메서드당 하나의 스택 프레임이 필요하며, 메서드를 호출하기 직전 스택프레임을 자바 Stack에 생성한 후 메서드를 호출하게 된다. 스택 프레임에 쌓이는 데이터는 메서드의 매개변수, 지역변수, 리턴값 등이 있다. 만일 메서드 호출 범위가 종료되면 스택에서 제거된다.
Full Scan *Multiblock I/O 단위가 16이라고 가정하겠습니다. 1. Full Scan(Full Table Scan, Index Fast Full Scan)할 때는 익스텐트 맵에 등록된 순서대로 한 블록씩 버퍼캐시에서 읽습니다. 2. 버퍼캐시에서 블록을 못 찾으면 바로 I/O Call 하지 않고 '디스크에서 읽어야 할 블록 목록'에 기록해 둡니다. 3. 목록에 16개 블록이 쌓이면, 16개 블록을 통째로 I/O Call 합니다. 4. 목록이 16개가 되기 전에 캐싱된 블록을 만나면, 그때까지 기록한 블록을 통째로 I/O Call 합니다. 5. 한 익스텐트 마지막 블록에 도달했는데 목록이 16개 미만이며, 다음 익스텐트로 건너가지 않고, 그때까지 기록한 블록들에 대해서만 I/O Call 합니다. * 4번과 ..
Vue 인스턴스(2.x) Vue 인스턴스 만들기 모든 Vue 앱은 Vue 함수로 새Vue 인스턴스를 만드는 것 부터 시작합니다. var vm = new Vue({ // 옵션 }) 엄격히 MVVM패턴과 관련이 없지만 Vue의 디자인은 부분적으로 그것에 영감을 받았습니다. 관례적으로 Vue 인스턴스를 참조하기 위해 종종 변수 vm(ViewModel의 약자)을 사용합니다. Vue 인스턴스를 생성할 때는 options 객체를 전달해야 합니다. 이 가이드는 대부분 원하는 생성을 구현할 때 이런 옵션들을 사용하여 원하는 동작을 구현하는 방법에 대해 다룹니다. 전체 옵션 목록은 API reference에서 확인할 수 있습니다. Vue 앱은 new Vue를 통해 만들어진 루트 Vue 인스턴스로 구성되며 선택적으로 중첩이 가능하고 재사용 가능한..
템플릿 문법(2.x) 템플릿 문법 Vue.js는 렌더링 된 DOM을 기본 Vue 인스턴스의 데이터에 선언적으로 바인딩 할 수 있는 HTML 기반 템플릿 구문을 사용합니다. 모든 Vue.js 템플릿은 스펙을 호환하는 브라우저 및 HTML 파서로 구문을 분석할 수 있는 유효한 HTML입니다. ※렌더링: HTML로 입력받아 해석하고 화면에 표시해주는 것. Vue.js의 핵심은 간단한 템플릿 구문을 사용해 선언적으로 DOM에 데이터를 렌더링하는 것입니다. 내부적으로 Vue는 템플릿을 가상 DOM 렌더링 함수로 컴파일 합니다. 반응형 시스템과 결합된 Vue는 앱 상태가 변경 될 때 최소한으로 DOM을 조작하고 다시 적용할 수 있는 최소한의 컴포넌트를 지능적으로 파악할 수 있습니다. 가상 DOM 개념에 익숙하고 JavaScript의 기..
HashMap에 대하여 개요 Java의 HashMap 에 대한 공부. 자주 쓰지만, 실제로 어떻게 동작하는지에 대한 이해각 필요하고 Java에서 뿐만 아니라 NoSQL등의 경우에도 사용되는 Hash의 개념과 Map의 개념에 대해 알아보자. Hash Hash는 특정 input 값이 주어졌을 때 항상 동일 값을 보장해주는 값이다. 주로 SHA256, MD5 등과 같은 해시 알고리즘에 의해 많이 알려져 있다. 차이점이라고 하면 Hash를 할 때 충돌(collision)이 발생하게 되는데, 그런 충돌을 얼마나 더 효율적으로 방지할 것인가에 대해 정도가 되겠다. Java에서 사용하는 String 클래스의 해시 함수를 살펴보자. Hash != HashCode Hash: 해시함수 HashCode: 해시 해서 나온 값을 정수화 시킨 것 pu..