본문 바로가기

CS Study

(9)
동일성과 동등성의 차이 1. 동일성 객체 지향 프로그래밍에서 동일성은 두 개의 객체가 완전이 동일한 경우를 의미합니다. 두 객체가 사실상 하나 이거나 주소 값이 같아 두 변수가 같은 객체를 가르키는 경우 입니다. 즉 동일성을 비교하는 것은 객체가 메모리 상에서 차지하는 주소가 동일한 지의 여부를 판단하는 것 입니다. 동일성을 판단하기 위해 == 연산자를 사용할 수 있습니다. 2. 동등성 객체 지향 프로그래밍에서 동등성은 두 개의 객체가 같은 정보를 갖고 있는 경우를 의미합니다. 변수가 참조하고 있는 객체의 주소가 서로 다르더라도 내용만 같으면 두 변수는 동등하다고 볼 수 있습니다. 즉 동등성은 동일성과는 다르게 주소 값이 아닌 객체의 내부 값이 같은 지를 판단하는 것 입니다. 자바에서는 두 객체가 동등할 경우 equals 연산..
자바란(JAVA)? / 자바의 특징 1. Java란? 자바는 객체 지향으로 개발된 프로그래밍 언어입니다. 처음에는 가전 제품 내에 탑재해 동작하는 프로그램을 위해 개발되었지만 현재는 웹 애플리케이션과 모바일 앱 개발에 가장 많이 사용하는 언어가 되었습니다. 2. Java의 특징 2-1. 운영체제에 독립적 자바는 JVM 이라 불리는 Java Virtual Machine 위에서 돌아가기 때문에 운영체제에 독립적으로 동작할 수 있습니다. 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있습니다. 때문에 실행 환경이 설치 되어 있는 모든 운영체제에서 실행이 가능하여 이식성이 높다고 볼 수 있습니다. 반면, 자바를 실행시키기 위해선 JVM을 필수적으로 거쳐야 하기 때문에 다른 언어에 비해서 실행 속도가 느린 편 입니다. 2-2. 객체 지향..
객체지향 프로그래밍(OOP)란? 1. 객체 지향 프로그래밍이란? (Obeject-Oriented-Programming) 객체지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 여기서 말하는 객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장 할 변수와 작업을 수행할 메소드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 할 수 있습니다. 현실에 존재하는 책, 자동차, 나무 혹은 추상적인 개념인 날짜, 회사 들과 같은 자신의 속성과 동작을 가지는 모든 것이 객체로 표현될 수 있습니다. 객체 지향 프로그래밍에서는 이렇게 표현된 객체를 각각의..
서버리스 아키텍처 1. 서버리스 아키텍처란? 특정 작업을 수행하기 위해서 컴퓨터 혹은 가상머신 서버를 설정하고, 이를 통하여 처리하는 것이 아닌 구조를 의미합니다. 사실 상 작업을 처리하는 서버는 존재하지만 서버가 어떤 구성으로 실행되고 있는 지 등을 설정하지 않는다는 특징을 가지고 있습니다. 서버리스 아키텍처의 처리 방식에는 BaaS와 FaaS가 있습니다. 2. BaaS란? BaaS는 (Backend as a Service) 서버 개발 시 필요한 데이터 베이스, 소셜 서비스 연동, 파일 시스템 등을 API로 제공해 줌으로서, 필요한 기능만을 쉽고 빠르게 구현할 수 있게 해주고, 비용은 사용한 만큼 부가됩니다. 서버 이용량이 급증하게 되더라도 자동으로 확장되기 때문에 서버 확장 작업이 필요하지 않습니다. BaaS를 제공하..
Map과 List의 차이 1. Map이란? map은 키(Key)와 값(Value)이 한 쌍으로 저장되는 데이터의 집합입니다. 키(Key)에 대한 데이터는 중복된 데이터를 가질 수 없으며 순서를 보장하지 않는다는 특징이 있습니다. 검색 속도가 뛰어나다는 장점을 가지고 있지만 이는 키(Key)의 검색 속도에 따라 달라질 수 있습니다. 인덱스가 따로 존재하지 않습니다. 2. Map의 종류 Hash Map : Map을 구현한 대표적인 자료구조 입니다. Map을 기반으로 하고 있기 때문에 키(Key)에 대한 중복된 데이터를 가질 수 없으며 순서를 보장하지 않습니다. 키(Key)와 값(Value)에대한 Null 값을 허용합니다. 동기화가 보장되지 않으며, 많은 양의 데이터 검색 시 뛰어난 성능을 보여줍니다. Hash Table : 해시 함..
JDK란? 1. JDK(Java Development Kit)란? JDK는 Java Development Kit의 약자로 자바 개발 시 여러 기능을 제공하는 키트입니다. 자바를 실행할 수 있는 JRE, JVM과 같은 도구와 자바 개발 시 사용할 수 있는 컴파일러등의 도구를 가지고 있습니다. 2. JDK의 구성 JDK는 자바의 소스코드 파일을 바이트코드로 변환하는 Javac와 javac가 만든 클래스 파일을 해석 및 실행하는 java, 자바 디버깅 툴인 jdb, jre, jvm 등으로 구성되어 있습니다. 즉 JDK는 JRE를 포함하고 있고, JRE는 JVM을 포함하고 있습니다. javac : 자바 소스파일을 바이트코드로 변환 (컴파일러) java : javac가 만든 클래스 파일을 해석 및 실행 jar : 서로 관련..
JAVA의 메모리 구조 1. JAVA의 메모리 구조 자바 프로그램이 실행되면 JVM은 운영체제로부터 해당 프로그램을 수행할 수 있도록 필요한 메모리를 할당 받습니다. JVM은 이 메모리를 메소드 영역, 힙 영역, 스택 영역으로 구분하여 관리합니다. 이를 런타임 데이터 영역이라고 하며 자바 애플리케이션 실행 시 데이터를 적재하는 영역입니다. 런타임 데이터 영역은 메소드 영역, 스택 영역, 힙 영역, 네이티브 메서드 스택 영역, Pc Register로 구성됩니다. 메소드 영역: 자바 프로그램에서 사용되는 클래스에 대한 정보와 함께 클래스 변수가 저장되는 영역입니다. JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일로 읽어 들여, 해당 클래스에 대한 정보를 메소드 영역에 저장합니다. JVM이 동작하고 클래..
ORM이란? 1. ORM(Object Relational Mapping)이란? ORM은 Object Relational Mapping의 약자로 객체와 데이터 베이스의 관계를 자동으로 매핑해주는 도구입니다. ORM을 사용하여 객체지향 프로그래밍에서의 클래스와 관계형 데이터 베이스의 테이블 사이의 불일치를 해결할 수 있습니다. ORM을 이용하면 SQL QUERY가 아닌 메서드로 데이터를 조작할 수 있습니다. 각 객체에 대한 코드를 별도로 작성하기 때문에 코드 가독성을 높일 수 있고, SQL의 절차적인 접근이 아닌 객체 지향적으로 접근 할 수 있어 생산성이 증가합니다. 2. 장단점 장점 객체 지향적인 코드로 작성할 수 있습니다. ORM을 활용하여 관계형 데이터 베이스의 절차적인 접근이 아닌 객체지향적 접근을 할 수 있어 ..