전체 글 40

람다(Lambda),스트림(Stream)이란?

람다(Lambda) 자바8부터 '람다식(Lambda Expression)이 지원되면서 자바는 완전히 새로운 언어처럼 보이기 시작했다. 제네릭이 자바를 크게 변화시킨 것처럼 람다 또한 자바를 어마어마하게 변화시켰다. 람다의 등장으로 자바는 객체지향 언어의 특징과 함께 함수형 언어의 특성을 갖추게 되었다. 람다식을 이용하면 코드가 간결해지고, 지연 연산 등을 통해서 성능 향상을 도모할 수 있지만, 반면 모든 요소들을 순회하는 경우에는 성능이 떨어질 수도 있고, 코드를 분석하기 어려워진다는 단점도 있다. 람다 이전의 코드 //MaxNumber Interface public interface MaxNumber { int getMaxNumber(int x, int y); } //MaxNumber Interface..

Java 2023.03.20

DAO,DTO,VO 란? + DTO와 VO의 차이점, 다루는 이유

서론 사이드 프로젝트를 하던 중, DTO를 왜쓰게 되나? 가 궁금해져서 이를 알아보게 되었다. 결론부터 말하면 DTO를 쓰는 이유는 직접적인 DB와 연계가 되는 Entity를 최대한 노출을 안시키기 위해서 이다. 지금부터 DAO, DTO, VO에 대해 알아보려한다. DAO(Data Access Object) DAO는 실제로 데이터베이스(DB)의 data에 접근하기 위한 객체이다. Database 접근을 위한 로직과 비지니스 로직을 분리하기 위해 사용한다. DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행한다. Service와 DB를 연결하는 연결고리 역할을 한다. Repository package가 DAO이다. 예제 1. Sping Data JPA public interfac..

Spring 2023.03.13

RDBMS, NoSQL + RDBMS와 NoSQL의 차이, 장단점

RDBMS(Relational Database Management System) RDMS 즉 관계형 데이터베이스 관리 시스템은 데이터베이스의 한 종류로 가장 많이 사용된다. 이는 데이터베이스에 데이터를 열(Column)과 행(Row)의 테이블 형태로 저장하고, 테이블 형태의 스키마를 지켜야 한다. 가장 대표적인 RDBMS는 Oracle, MySQL 등이 있다. 그리고 이 관계형 데이터베이스를 다루기 위한 언어를 SQL이라고 한다. 관계형 데이터베이스(RDBMS)는 다른 테이블과 관계를 맺고 모여있는 집합체로 이해할 수 있다. 이러한 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용해 테이블 간 Join이 가능하다는 게 RDBMS의 가장 큰 특징이다. NoSQL(Not Only SQL) ..

DataBase(MySQL) 2023.03.08

HTTP 상태코드란 + RGB, redirect

인터넷을 통해 검색을 하면 위와 같은 페이지를 한번쯤은 본적이 있을 것이다. 저 404가 의미하는 것이 무엇인지 지금부터 알아보려 한다. HTTP 상태코드 HTTP 상태코드란 클라이언트가 보낸 요청의 처리상태를 응답에서 알려주는 기능이다. 상태 코드에 따라 요청의 성공/실패 여부를 판단한다. 상태 코드 분류 상태 코드는 5가지로 분류한다. 1xx (Informational) : 요청이 수신되어 처리중이란 뜻 // 거의 사용하지 않음 2xx (Successful) : 클라이언트의 요청을 성공적으로 처리 3xx (Redirection) : 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요 4xx (Client Error) : 클라이언트 오류 5xx (Server Error) : 서버 오류 상세 내용 1x..

Network 2023.03.01

[Java] final 키워드란? + static과의 궁합

Final Java에서는 불변성을 확보할 수 있도록 final 키워드를 제공하고 있다. 클래스나 변수에 final을 붙이면 처음 정의된 상태가 변하지 않는 것을 보장한다는 의미이다. Java에서 변수들은 기본적으로 가변적인데, 변수에 final 키워드를 붙여 참조값을 변경 못하도록 해 불변성을 확보할 수 있다. Final 사용법 final 필드 final int YD = 1; //final 타입 필드 [= 초기값]; final 필드는 위와 같이 선언하며 final 필드의 초기값을 줄 수 있는 방법은 딱 두가지 방법밖에 없습니다. 첫번째는 필드 선언시에 주는 방법이 있고, 두번째는 생성자를 통해서 주는 방법이 있습니다. 단순 값이라면 필드 선언시에 주는 것이 가장 간단하지만 복잡한 코드가 필요하거나 객체 ..

Java 2023.02.24

Generic(제네릭) 이란? + 와일드카드, generic 예시

Generic List list = new ArrayList(); Map map = new HashMap(); 우리는 위의 예제와 같이 클래스 타입이 명시된 패턴을 자주 발견할 수 있다. 이걸 제네릭(Generic) 이라고 부르며, 제네릭 파라미터는 꺽쇠안에 포함하여 전달한다. JAVA에서 제네릭이란? 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룬다. 타입에 대해 유연성과 안정성을 확보한다. 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술이다. 제네릭을 왜 사용할까? 타입을 유연하게 처리하며, 잘못된 타입 사용으로 발생할 수 있는 런타임 타입 에러를 컴파일 과정에 검출한다. 제네릭을 사용하면 실수로 지정한 타입이 들어오는 경우 컴파일 시점에서 미리 예방할 수 있게 된다. 또한 클래스..

Java 2023.02.16

오버로딩(Overloading),오버라이딩(Overriding)이란? + 차이점

오버로딩 vs 오버라이딩 개념 다형성이란 하나의 메서드나 클래스가 있을 때 그것이 다양한 방법으로 동작하는 것을 말하며, 자바에서는 주로 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해서 다형성을 지원한다. 오버로딩(Overloading) : 메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것을 의미한다. - 리턴값만을 다르게 갖는 오버로딩은 작성할 수 없다. 오버라이딩 (Overriding) : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것을 의미한다. -메서드의 이름은 물론 파라미터의 개수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받는 하위 클래스에서 변경하기 위해 사용된다. 간략하게 요약하면, 오버로딩(Overloadin..

Java 2023.02.12

Java Collection(컬렉션)이란? + 종류(Set,Map,List,Queue)

Java Collection Java collection에는 List, Map, Set 인터페이스를 기준으로 여러 구현체가 존재한다. 이에 더해 Stack과 Queue 인터페이스도 존재한다. 왜 이러한 Collection을 사용할까? 그 이유는 다수의 Data를 다루는데 표준화된 클래스들을 제공해 주기 때문에 DataStructure를 직접 구현하지 않고 편하게 사용할 수 있기 때문이다. 또한 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다. 이는 프로그램의 공간적인 효율성 또한 높여준다. Java Collections Framework(JCF) Java Collections Framwork(JCF)는 이러한 데이터, 자료구조인 컬렉..

Java 2023.02.09

GC(Garbage Collection)이란? + 대상,구조,예시

Java Garbage Collection Garbage Collection이란, 스택으로부터, Heap 영역 객체 중 도달 불가능한 객체들을 자동으로 메모리에서 제거해주는 개념이다. Java는 객체지향 언어인만큼, 힙을 사용하여 객체를 생성하는 경우가 굉장히 많다. 개발자들은 이렇게 힙을 자유롭게 사용하고, 더 이상 사용되지 않는 객체들은 가비지 컬렉션 과정에서 자동으로 메모리에서 제거된다. 그렇다면 다른 언어들은 어떠할까? C언어 #include #include void main() { int* pPoint; pPoint = (int*)malloc(sizeof(int)*5); pPoint[0] = 25; pPoint[1] = 45; pPoint[2] = 50; pPoint[3] = 70; pPoint..

Java 2023.02.06

JVM의 존재 이유 & 구성 요소

JAVA Java의 가장 큰 특징 중 하나가 어느 플랫폼, 어느 하드웨어(CPU)든, 어떤 운영체제(OS)이던 상관없이 컴파일된 코드가 플랫폼 독립적인 것이다. 다시 말해 어떤 필랫폼이든 작성한 소스를 변경할 필요 없이 다 실행할 수 있다는 것이다. 이 점이 웹 어플리케이션의 특성과 맞아 떨어져 폭발적인 인기와 함께 현재 웹 어플리케이션 개발에 가장 사용이 많이 되는 언어 중 하나가 되었다. 그리고 이 특징을 구현하기 위해 필요한 것이 바로 이 JVM이다. 예를 들어 C언어로 작성된 Test.c가 있다고 하면, 이 Test.c를 윈도우 컴파일러를 사용해서 컴파일하면 Test.exe가 만들어니다. 윈도우 컴파일러로 컴파일되었기에 Test.exe는 윈도우에서만 실행되는 실행 파일이다. 리눅스 운영체제에서는 ..

Java 2023.02.02