목록CS (11)
꾸물꾸물 졔의 개발공부
💡 디자인 패턴이란, 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 의미. 소스나 코드로 바로 전환가능한 완성된 디자인은 아니며, 상황에 맞게 사용될 수 있는 문제 해결을 위한 템플릿. 싱글톤 패턴이란 ? 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 즉, 인스턴스가 필요할 때마다 새로운 인스턴스를 만드는 것이 아닌, 기존의 인스턴스를 활용하는 것이다. 생성자가 여러번 호출되어도, 실제로 생성되는 객체는 하나이며 최초로 생성된 이후에 호출된 생성자는 이미 생성된 객체를 반환시키도록 한다. 다음과 같은 상황에 싱글톤 패턴을 주로 사용한다. 프로그램 내에서 하나의 객체만 존재함이 보장되어야 한다. 프로그램 내..
Framework (프레임워크) 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(기반구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수가 있다. 프레임워크는 소프트웨어의 특정 문제나 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있으며, 완성된 애플리케이션이 아니기에 개발자가 완성시키는 작업을 해야 한다. 즉, 프레임워크는 개발자가 개발을 보다 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. 예를 들어 Java 개발에서 사용되는 Spring 프레임워크나 Python 개발에 사용되는 Django, 안드로이드 앱 개발에 사용되는 Android ..
🌟 요약 스택은 값 형식을 저장하고 지역변수와 매개변수를 저장합니다. 함수의 호출과 함께 자동으로 할당되며 함수의 호출이 완료되면 함께 소멸합니다. 스택은 정적할당영역으로 컴파일 타임에 크기가 결정됩니다. 힙은 전역 변수를 다루고 참조형식을 저장합니다. 자동으로 할당 및 해제가 되지않으며 사용자가 직접 관리해야 합니다. (자바의 경우 , 가비지 컬렉터) 힙은 동적할당영역으로 런타임에 크기가 결정됩니다. 스택(Stack) 함수의 호출과 관계되는 지역 변수 또는 매개변수가 저장되는 영역 함수의 호출과 함께 할당되며 , 함수의 호출이 완료되면 소멸한다. 원시타입(int, double, float, boolean 등등)의 데이터가 실제 값과 함께 할당 Heap 영역에 생성된 Object 타입의 데이터의 '참조값..
메모리의 구조 프로그램이 실행되기 위해선 먼저 프로그램이 메모리에 로드(load)되어야 한다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같다. 1. 코드(code) 영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 코드(code) 영역 메모리의 코드영역은 실행할 프로그램의 코드가 저장되는 영역이며 텍스트 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 읽어들여 처리한다. 데이터(data) 영역 메모리의 데이터영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역..
JVM(Java Virtual Machine)이란? 자바 가상 머신의 약자로 '자바를 실행하기 위한 가상 기계(컴퓨터)' 이다. Java는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 어디서나 실행되기 위해선 OS 위에서 Java를 실행시킬 무언가가 필요하다. 그게 바로 JVM이다. 즉, JVM은 OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. 우리가 작성한 Java 소스코드(.java)는 CPU가 인식하지 못하므로 기계어로 컴파일을 해주어야 한다. 하지만 Java는 JVM을 거쳐서 OS에 도달하기 때문에 기계어로 바로 컴파일 되는 것이 아니라, JVM이 인식할 수 있는 Java bytecode(.class)로 변환된다. JVM은 OS와 Ja..
이 그림을 봐서 가장 확실하게 알 수 있는건 Blocking 이라고 반드시 Sync 인게 아니며, Non-blocking 이라고 반드시 Async 인 것도 아니라는 것이다. 즉, Blocking/Non-blocking 과 Sync/Async는 별개의 개념이다. 어디에 '관점'을 두고 있느냐에 따라 나눌 수 있다. Blocking / Non-Blocking 은 호출된 함수가 자신을 호출한 함수에게 제어권을 돌려주느냐 마느냐, Sync / Async은 호출된 함수의 수행 결과와 종료를 호출한 함수가 처리하느냐, 호출된 함수가 처리하느냐의 차이이다. 🔎Blocking / Non-blocking Blocking과 Non-Blocking은 다른 주체가 작업할 때 자신의 제어권이 있는지 여부로 구분한다. 블로킹 B..
트랜잭션(Transaction) 트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산들을 의미한다. 상태를 변화시킨다 = 질의어(SQL: SELECT, INSERT, DELETE, UPDATE)를 이용하여 DB에 접근 작업 단위 = 사람이 정하는 기준에 따라 한꺼번에 모두 수행되어야 할 일련의 연산(SQL) 예를 들어, A가 B에게 오만원을 보낸다. 이때 DB에서는, 1. 사용자 A의 잔액에서 오만원을 차감한다 = UPDATE문으로 A의 잔액 변경 2. 사용자 B의 잔액에 오만원을 추가한다 = UPDATE문으로 B의 잔액 변경 작업 단위 : 차감UPDATE + 추가UPDATE > 이를 통틀어 하나의 트랜잭션이라고 한다. > 두..
JOIN 이란? 두개 이상의 테이블을 서로 연결하여 데이터를 검색하는 방법. 하나의 테이블에 원하는 데이터가 모두 있다면 좋겠지만, 두 개의 테이블에 데이터가 나뉘어져 있어 테이블을 엮어야하는 경우도 많다. 조인을 사용하면 두개의 테이블을 엮어서 마치 하나의 테이블인 것처럼 보여주고, 그 중 원하는 결과를 얻을 수 있다. 두 테이블의 조인을 위해서는 기본키와 외래키 관계로 맺어야 하고, 이를 일대 다 관계라고 한다. 조인의 종류에는 INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN 이 있다. 🔎JOIN 의 종류 INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인) : 두 테이블을 ..