반응형

분류 전체보기 88

[JavaScript] var, let, const의 차이점 / 스코프 / 변수 호이스팅

var, let, const의 차이를 알기 전에.. 먼저 var, let, const 차이를 알기 전에 스코프에 대해서 알아야 합니다. 스코프란 간단하게 변수를 사용할 수 있는 위치를 의미합니다. 스코프란?? JavaScript에서는 전역 스코프(Global Scope)와 지역 스코프(Local Scope) 두 가지 유형의 스코프가 있습니다. 전역 스코프는 코드의 어느 곳에서나 접근할 수 있는 변수를 말합니다. 전역 스코프에서 선언된 변수는 어디서든 참조할 수 있습니다. 지역 스코프는 함수 내에서 선언된 변수를 말합니다. 함수 내에서 선언된 변수는 함수 외부에서는 접근할 수 없습니다. 또한, 함수 내부에서는 외부 스코프에서 선언된 변수를 참조할 수 있습니다. var, let, const의 차이 자바스크립..

[Spring] Lombok이란? / Lombok의 사용 이유 / Lombok의 단점 / Lombok 사용법

Lombok이란?? 반복되는 메서드를 Annotation을 사용하여 자동으로 작성해주는 라이브러리입니다 일반적으로 DTO, VO, Model, Entity 등의 데이터 클래스에서 많이 사용됩니다. 대표적으로 많이 사용되는 Annotation @Getter @Setter @NoArgConstructor @AllArgConstructor @Data @ToString @Builder Lombok의 사용이유 Annotation 기반의 코드 자동생성으로 인한 생산성이 증가합니다. 반복코드를 줄일 수 있어 유지보수와 가독성을 향상시킬 수 있습니다. Getter / Setter 외 Builder 패턴이나 Log 생성 등의 다양한 방면으로 활용이 가능합니다. Lombok의 단점 Lombok을 지원하는 IDE는 Inte..

[Spring] AOP란?? / AOP를 사용하는 이유

AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming) → 여러 오브젝트에 나타나는 공통적인 부가 기능을 모듈화하여 재사용하는 기법 또한 관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리하므로 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬수 있도록 도와주는 개념입니다 → OOP를 보완한다 AOP를 사용하는 이유 공통 관심 사항을 핵심 관심사항으로부터 분리 그에 따라 코드의 가독성, 유지보수성 및 생산성 증가 각 모듈에 수정이 필요하면 다른 모듈의 수정 없이 해당 로직만 변경 공통 로직을 적용할 대상을 선택 가능 부가기능(인프라 로직) 부가기능을 Aspect 또는 advice로 정의함 중복코드를 만들어낼 가능성 때문..

[Spring boot] 스프링 부트란???

Spring boot 1. Spring boot란? Spring을 더 쉽게 이용하기 위한 도구입니다. Spring은 다양한 기능을 제공하고 있지만, 그 기능을 사용하기 위한 설정에 많은 시간이 걸립니다. ex) Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory 등 → Spring boot는 기존의 Spring의 오래 걸렸던 설정을 편리하게 도와주기 위해 나온 도구입니다. 2. Spring boot의 특징 Spring Boot는 자동설정(AutoConfiguration)을 이용합니다. 어플리케이션 개발에 필요한 모든 Dependency를 Framework에서 관리 jar 파일이 클래스 패스에 있는 경우 스프링 부트는 Dis..

[Spring] DI / IOC란? / 의존성을 주입하는 방법

DI / IOC 컨테이너란? IoC와 DI를 이해하기 전에 먼저 이해해야 할 개념이 있습니다. 그것은 바로 '컨테이너'입니다. 컨테이너란, 우리 대신 객체의 생성과 소멸 같은 부분을 전담해주는 역할을 합니다. IoC란(Inversion of Control)? 그대로 해석을 돌리면 제어의 역전이라고 합니다. 제어는 무언가를 조종하고 다루는 것, 역전은 바뀌는 것 입니다. 즉, 무언가를 조종하고 다루는 존재가 바뀌는 것을 IoC라고 합니다. 우리는 프로그램을 다룰 때, 우리가 직접 제어를 합니다. (예를 들어 객체의 생성을 직접 한다거나) 그러나 스프링에서는 우리가 아닌 다른 존재(컨테이너)가 제어를 합니다. 결과적으로, 스프링의 객체들을 생성하고, 제어하고, 소멸하는 존재는 컨테이너라고 볼 수 있습니다. ..

[Spring] POJO란? / POJO vs Java Beans

POJO란? Plain Old Java Object, 오래된 방식의 단순한 자바 오브젝트 즉, 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 지칭합니다. 토비의 스프링에서는 특정 기술규약과 환경에 종속되지 않는다고 해서 모두 POJO라고 지칭할 순 없다고 합니다. 진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 POJO 라고 설명하기도 했습니다. POJO가 주목 받은 배경 EJB(Enterprise JavaBeans) 기업의 IT 시스템의 요구사항이 늘어나고 기초적인 JDK로는 한계가 있어서 EJB 기술이 등장하였습니다. EJB의 경우에 아래의 문..

[디자인 패턴] Builder 패턴

Builder 패턴이란? 빌더 패턴은 생성자에 들어갈 매개 변수가 많든 적든 차례차례 매개 변수를 받아들이고 모든 매개 변수를 받은 뒤에 이 변수들을 통합해서 한 번에 사용을 합니다. Builder 패턴의 장점 필요한 데이터만 설정 유연성 확보 가독성을 높임 불변성 확보 Builder 패턴을 쓰는 이유 /** * 제약사항 : 이 객체는 한번 생성되면 읽기(Read)만 가능해야 합니다. */ public class PersonInfo { private String name; private Integer age; private String favoriteColor; private String favoriteAnimal; private Integer favoriteNumber; public PersonInfo..

[디자인 패턴] 싱글톤 패턴이란?

싱글톤 패턴이란? 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미합니다. 아래의 코드는 싱글톤패턴의 간단한 코드입니다. public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public void say() { System.out.println("hi, there"); } } 싱글톤 패턴의 장점 메모리 낭비를 방지할 수 있습니다. 최초의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 추후 ..

[Database] DBMS에서 쿼리를 처리하는 단계(쿼리 파싱 순서)

DBMS에서 쿼리를 처리하는 5단계 구문 분석 (Parsing) 요청하는 쿼리가 잘못됐는지 확인하는 과정 구문 오류 및 맞춤법 오류는 이 단계에서 검색할 수 있습니다 유효성 검사 테이블이 데이터베이스에 있는지, 모든 열이 존재하고 열 이름이 모호하지 않은지, 사용자에게 쿼리문을 실행하는데 필요한 권한이 있는지 등 이 단계에서 특정 의미 체계 오류를 검색할 수 있습니다. 액세스 계획 생성 최적화 액세스 계획을 수행하는 다양한 방법을 살펴봅니다. 여러 대안을 탐색한 후 DBMS는 그 중 하나를 선택합니다. 실행 DBMS는 액세스 계획을 실행하여 쿼리문을 실행합니다. SQL 파싱 순서 Syntax 에러(문법, 구문 오류) 체크 Semantic(권한, 존재 여부) 체크 Library Cache 영역으로 가서 저..

[JAVA]람다식이란? / 람다식의 특징 / Lambda Expression

1. Lambda 식이란? Java 8부터 지원되는 함수지향형 코드입니다. 람다식이란 함수명을 선언하고 사용하는 것이 아닌 식별자 없이 실행가능한 함수입니다. 절차형 프로그래밍, 객체지향 프로그래밍과는 다르게 함수의 구현과 호출만으로 프로그램을 만드는 방식인 함수형 프로그래밍에서 자주 사용됩니다. Lambda식은 함수형 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다 함수(Method)를 간단한 ‘식(Expression)’으로 표현하는 방법위 메서드를 아래의 Lambda식으로 바꿀 수 있습니다 (a,b) -> a > b ? a : b int max(int a, int b){ return a > b ? a : b; } 익명 함수(이름이 없는 함수,..

반응형