HashMap과 HashSet은 모두 Collection Framework에 속한다.기본적으로 Collection Framework는 Set, List, Queue 인터페이스로 나뉘어진다.Set : 객체를 받지만, 중복되는 값은 허용하지 않는다.(순서가 없다.)List
가장 큰 차이점은 데이터가 저장되는 메모리 상의 위치이다.편의상 값 타입은 원시 타입(Primitive Type)이라고 부르겠다. 참조 타입(Reference Type)원시 타입 : 크기가 작고 고정적이기 때문에 스택 영역에 저장된다.참조 타입 : 크기가 크고 가변적이
기본적인 개념이지만, 간단하고 쉽게 이해할 수 있도록 정리하려 한다.클래스어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메소드로 정의한 것이다.인스턴스클래스에서 정의한 것을 토대로 실제 메모리 상에 할당된 것으로 실제
인터페이스클래스가 아니며, 클래스와 관련이 없다.추상 메소드와 상수만을 멤버로 가진다.한 개의 클래스가 여러 인터페이스를 구현할 수 있다. (다중 구현 가능.)Java 8부터 default 메소드가 추가되었다. default 키워드가 붙은 메소드는 구현할 수 있으며(일
추상 클래스는 미완성된 클래스이다.미완성된 클래스는 미완성된 메소드인 추상 메소드를 포함하고 있다.추상 클래스는 혼자로는 클래스의 역할을 다 못하지만, 새로운 클래스를 작성하는 데 있어 그 바탕이 되는 부모 클래스로서의 중요한 의미를 갖는다. 왜냐하면 클래스를 작성함에
자바에서 직렬화라는 기술이 있다. 이는 안드로이드에서도 종종 사용되는 기술인데, 이에 대해 알아보려 한다.메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해서 byte 코드 형태로 나열하는 것을 말한다. 이는 간단한 설명이다. 좀 더 자세히 알아보자. 자바
자바에서 기본적인 부분이지만, 실제로 사용할 때 의미를 파악하지 않고 남발하는 경우가 많아 정리하려 한다.public : public으로 선언된 멤버는 어떤 클래스에서라도 접근이 가능하다. public 메소드는 private 멤버와 프로그램 사이의 인터페이스 역할을 수
인터페이스는 인터페이스를 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제한다.인터페이스의 목적은 구현 객체가 같은 동작을 한다는 것을 보장하는 것이다.일종의 추상 클래스다. 하지만 추상 클래스보다 추상화 정도가 높아서 추상 메소드 이외의 일반 메소드
오버라이딩 vs 오버로딩오버라이딩과 오버로딩은 자주 나오면서도 중요한 개념이다. 하지만, 그만큼 잘 까먹기 때문에 정리하고 넘어가려 한다.오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의해서 사용하는 것을 의미한다.상속 시, 상위 클래스의 pri
메소드 영역클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역. (즉, Static 변수가 저장되는 영역)JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(\*.class)을 읽어들여, 클래스에 대한 정보를
자바에서는 Primitive Type과 Reference Type이 있다. 이는 기본형과 참조형이라고 하며, 서로 조금은 다른 특징을 가지고 있다.기본형(Primitive Type)변수에 값 자체를 저장하며, stack 영역에 생성된다.사용하기 전에 반드시 선언되어야
객체 지향 프로그래밍은 OOP(Object Oriented Programming)이라고도 한다.프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.장점코드의 재사용성이
non-static 멤버공간적 특성 : 해당 멤버는 객체마다 별도로 존재한다.인스턴스 멤버라고 부른다.시간적 특성 : 객체 생성 시에 멤버가 생성된다.객체가 생성될 때, 멤버가 생성되므로 객체 생성 후에 멤버 사용이 가능.객체가 사라지면 해당 멤버도 사라진다.공유의 특
두 가지 모두 정수형 타입이다. 그렇다면 어떤 차이가 있는지 알아보자.char, short 형 : 이와 같은 정수 자료형 타입으로 표현하면 메모리 공간을 효율적으로 사용할수는 있으나 연산의 효율성은 떨어진다. size : 2byte(16bits)int 형 : int형보
간단한 내용이지만, final 키워드가 클래스, 메소드, 변수 앞에 붙었을 때 각각의 의미에 대해서 정확히 정리하려 한다.final class다른 클래스가 상속받지 못한다.final method자식 클래스에서 상위 클래스의 final method를 오버라이드 하지 못한
equals()비교를 위한 메소드이다. Java에서는 대상의 내용 자체를 비교한다. 그렇다면 두 문자열을 비교할 때, 어떤 원리로 비교할까?Ex) a = "Victory", b = "Victory"먼저, 같은 객체인지 비교한다. 같은 객체라면 같은 값을 가지고 있기 때
기본 자료형을 객체 타입의 자료형으로 변환이 필요할 때 주로 사용한다. 사용 용도객체로 저장해야 할 경우매개변수로 객체가 요구될 경우(ex. 제네릭, Collection의 타입)객체 간의 비교가 필요할 경우제네릭이나 컬렉션에서 사용할 경우, 기본형을 쓸 수 없기 때문에
HTTP는 헤더에서 사용자가 어떤 작업을 요청하길 원하는지 명시하는 데 이때 METHOD를 통해 나타낼 수 있다.GET은 사용자가 특정 데이터를 얻고자 할때, 사용하는 메소드이다. 특징으로는 해당 요청은 캐싱될 수 있다는 것이 있다.POST는 사용자가 특정 데이터를 생
100번대 : 요청을 받았으며, 프로세스가 계속 진행함을 의미한다.200번대 : 요청이 성공적으로 처리됨을 의미한다.300번대 : 요청 처리를 위해 추가적인 작업(리다이렉션)해야 함을 의미한다.400번대 : 클라이언트단에서의 요청에 문제가 있음을 의미한다.500번대 :
프로세스는 자원을 할당받는 단위를 의미하고, 쓰레드는 실제 작업을 수행하는 단위이다. 프로세스보다 작은 개념으로 쓰레드 간에는 프로세스가 할당받은 자원을 공유할 수 있다는 특징이 있다.
DB의 인덱스를 잘 사용하는 것은 데이터를 검색하는 시점에 성능 차이에 큰 영향을 미칩니다. 대용량 데이터를 담고 있는 DB 테이블에서 필요한 데이터를 빨리 찾기 위해 인덱스가 필요합니다. 인덱스가 없거나 적절한 인덱스를 찾지 못할 경우 데이터가 담겨있는 테이블 전체를
자바에서의 자료형은 기본 자료형과 참조 자료형이 있는데, 스택 메모리만을 사용하는 기본 자료형은 작업이 모두 끝난 후, 스코프가 끝날때 함께 소멸되지만, 힙 메모리에 실제 값이 저장된 참조 자료형의 경우, 소멸 작업이 추가적으로 필요하다.이때 힙 메모리에서 사용하지 않
(1) TCP 통신과 UDP 통신의 차이점:TCP는 UDP에 비해 신뢰성이 높다, TCP는 서버소켓과 연결을 하는데 UDP는 IP기반으로 데이터를 전송한다.TCP는 서버와 클라이언트가 1:1로 연결되는데, UDP는 1:N, N대M, 1:1등 다양하게 연결한다.(2) T
Stack은 입구가 하나 인 상자라고 생각하면된다.입구가 하나이기에LIFO(Last In First Out)구조를 가진다."나중에 들어간 요소가 가장 먼저 나온다"라는 말이다.stack에 요소를 추가한다.stack에서 요소를 빼낸다.stack의 입구와 가장 가까운 요
Stack에 이어서 Queue를 알아보자 Queue 앞서 말한 Stack은 입구가 하나인 상자라고 말했는데 Queue는 입구와 출구가 다른 상자라고 생각하면 된다. Stack과 달리 FIFO(Frist In First Out) 방식을 가지고 있다. > 즉, "처
앞서 Stack, Queue의 방식을 살펴봤다.Stack은 LIFO 방식을 가진다.Queue는 FIFO 방식을 가진다.즉, Stack에 있는 요소들을 꺼낼 때는 들어간 역순으로 요소들이 나오게 되고, Queue는 들어간 순서대로 요소들이 나온다.Stack을 가지고 Qu
URL : Uniform Resource Locator로 인터넷 상 자원의 위치를 의미한다.URI : Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성을 의미한다.URI는 URL을 포함한다.
프레임워크는 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 기술이다."소프트웨어에서 프레임워크는 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합" 이라고 할 수 있다.라이브러리는 자주 사용되는 로직들의 모음 혹은 묶음이라로 할 수 있다. 자
Immutable하기 때문에 + 등 concat 연산 시 원본을 변경하지 않고 새로운 String 객체를 생성한다. 이로 인해 메모리 공간의 낭비가 발생하고 성능이 떨어진다.JDK 1.5 이후부터는 컴파일 타임에 StringBuilder로 변경한다고 한다.불변 객체이기
자바에서 이미 로딩이 완료된 클래스에서 또는 다른 클래스를 동적으로 로딩하여 구체적인 타입을 알지 못하더라도 생성자, 멤버 필드, 그리고 멤버 메소드를 사용할 수 있는 기법이다.객체를 통해서 클래스의 패키지 정보, 접근 지정자, 부모 클래스, 어노테이션 등을 얻을 수
Java에서 String은 굉장히 자주 사용되며, 두 가지 생성 방식이 있다.new 연산자를 이용한 방식리터럴을 이용한 방식이 두 가지 방식에는 큰 차이점이 존재한다.new를 통해 String 객체를 생성하면 Heap 영역에 존재하게 된다.리터럴을 이용할 경우, Str
먼저, 멀티 태스킹이 무엇인지 알 필요가 있다. 최근의 OS는 멀티 태스킹을 지원하지 않는게 없다. 멀티 태스킹은 두 가지 이상의 작업을 동시에 하는 것을 말한다. 예를 들어, 컴퓨터로 음악을 들으며, 웹서핑을 하는 것이다. 실제로 동시에 처리될 수 있는 프로세
스택 기반의 가상 머신.JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행하는 것이다.Java와 OS 사이에서 중개자 역할을 수행하여 Java가 OS에 구애받지 않고 재사용 가능하게 해준다.메모리 관리, Garbage Collect
간단하면서도 헷갈리는 개념 중 하나이다.결론 : 자바는 Call by Value이다.Primitive Type(원시 자료형)의 경우 Call by Valueint, short, long, float, double, char, booleanReference Type(참조
Primitive 자료형산술 연산이 가능하며, null 값을 가질 수 없다.Wrapper 클래스(객체)Unboxing을 하지 않으면 산술 연산이 불가능하지만, null 값을 가질 수 있다.Collection, null 값이 필요한 경우 사용한다.Integer 및 int
REST API 에서 REST는 Representational State Transfer 의 약자로 소프트웨어 프로그램 아키텍처의 한 형식 입니다.즉, 자원을 이름 (자원의 표현) 으로 구분하여 해당 자원의 상태 (정보)를 주고 받는 모든 것을 의미한다.월드 와이드 웹
세션은 서버측에서 사용자의 정보를 저장하는 방법이다.브라우저가 연결되면 클라이언트에 대한 세션을 확보하고, 연결이 종료되면 세션을 닫는다.로그인 요청로그인 처리 (세션에 사용자 정보 저장)로그아웃 (세션에 사용자 정보 재거)세션은 사용자의 정보가 서버에서 보관되는 방식
웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠이다.이때 웹 서버가 정적 컨텐츠가 아닌 동적
클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트html을 사용하여 요청에 응답한다.Java Thread를 이용하여 동작한다.MVC 패
트랜잭션이란 DB의 상태를 변경하기 위해 수행하는 작업 단위를 뜻한다.DB의 상태를 변경시킨다는 것은 DML(SELECT, UPDATE, INSERT, DELETE)와 같은 쿼리를 날려 연산하는 것을 말한다.만약 트랜잭션이 없다면?A와B가 있다고 가정해보자A와 B는 각
FROM 테이블 확인ON 조인 조건 확인JOIN 테이블 조인WHERE 데이터 조회 조건 확인GROUP BY 특정 컬럼으로 데이터 그룹화HAVING 그룹화 이후 데이터 조건 확인SELECT 데이터 조회DISTINCT 중복 제거ORDER BY 데이터 정렬