728x90

가이드출신개발자 18

[Server] Cache(캐시) 란?

1. 캐시(Cache)란? Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킴. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공. Cache는 아래와 같은 경우에 사용을 고려하면 좋다. 접근 시간에 비히 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터) 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등) Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의..

함수형 프로그래밍의 목적

프로그래밍 패러다임(Programming Paradigm) 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 최근의 프로그래밍 패러다임은 크게 아래와 같이 구분할 수 있다. 명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현 (C++, Java, C#) 선언형 프로그래밍: 어떻게 할건..

[Java] 함수형 인터페이스란?

함수형 인터페이스(Functional Interface) 란? 자바에서는 람다식을 통해 순수함수를 선언 할 수 있게 되었지만, 자바는 기본적으로 객체지향 언이이기 때문에 순수함수와 일반함수를 다르게 취급하고 있다. 이를 구분하기위해서 자바에서는 함수형 인터페이스라는것이 나오게 되었다. 함수형 인터페이스란 함수를 1급 객체처럼 다룰 수 있게 해주는 어노테이션으로, 인터페이스에 선언하여 단 하나의 추상 메소드만을 갖도록 제한하는 역할을 한다. 함수형 인터페이스를 사용하는 이유는 Java의 람다식이 함수형 인터페이스를 반환하기 때문이다. 예를 들어 우리가 두 값 중 큰 값을 구하는 익명 함수를 개발하였다고 하자. 그러면 우리는 지금까지 다음과 같이 개발을 하였을 것이다. public class Lambda {..

JAVA 2022.04.09

[Java]람다(Lambda)를 사용하는 이유

람다를 사용하는 이유는 무엇일까? 먼저 이 Lambda라는 녀석을 한번 알아보자. 람다식(Lambda Expression)이란 무엇인가? Stream 연산들은 매개변수로 함수형 인터페이스(Functional Interface)를 받도록 되어있다. 그리고 람다식은 반환값으로 함수형 인터페이스를 반환하고 있다. 그렇기 때문에 우리는 Stream API를 정확히 이해하기 위해 람다식과 함수형 인터페이스에 대해 알고 있는것이 좋다. 람다식(Lambda Expression)이란 함수를 하나의 식(expression)으로 표현한 것이다. 함수를 람다식으로 표현하면 메소드의 이름이 필요 없기 때문에, 람다식은 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다. 익명함수(Anonymous Fun..

JAVA 2022.04.08

[회고] 이탈리아 가이드 출신 개발자의 2022년 3월 월간회고

기록을 통해 3월 한달을 정리해보고 반성과 앞으로 어떠한 방향으로 나아가야할지 살펴보는 내 자신을 뒤돌아보는 개발자 로춘남의 회고 기록. Tech Blog Fact 사실 : 무슨 일이 있었나?(사실) 리플렉션이란? GC종류별 차이 static이란? 인터페이스란? 동기와 비동기, 블로킹과 논블로킹 직렬화란? 동시성 문제 error 그리고 exception 이란? 알고리즘 1문제 GC동작원리와 동작시점 DTO, DAO, Entity 그리고 Repository란? Java와 관련된 글들을 작성. 알고리즘의 경우 하루 시작을 작은 루틴으로 해결하기 위해 쉬운문제로 풀다보니 크게 작성할만한 부분을 찾지 못했다. Felling : 무슨 느낌이 들었나?(느낌) 요즘 내 자신의 위치에 대해서 고민이 많았던 시기인데, ..

생각정리 2022.04.01

[Java] DTO, DAO, Entity 그리고 Repository 란?

DAO(Data Access Object)란? repository package 실제로 DB에 접근하는 객체. Persistence Layer(DB에 data를 CRUD하는 계층) 이다. Service와 DB를 연결하는 고리의 역할을 한다. SQL을 사용하여 DB에 접근한 후 적절한 CRUD API를 제공한다. JPA 대부분은 기본적인 CRUD method를 제공하고 있다. extends JpaRepository DTO(Data Transfer Object)란? dto package 계층간 데이터 교환을 위한 객체(Java Beans)이다. DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다. 즉, DB의 데이터가 Presentation Logic Tier로..

JAVA 2022.03.29

[Java] 가비지 컬렉션 GC(Garbage Collection)의 동작원리와 동작하는 시점

Garbage Collection(가비지 컬렉션)이란? 메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능. 즉, 동적 할당된 메모리 영역 가운데 어떤 변수도 가리키지 않는 메모리 영역을 탐지하여 자동으로 해제를 하는 기법이다. 장점 : GC를 이용하게 되면 개발자가 동적으로 할당한 메모리 영역 전체를 완벽하게 관리하지 않아도 된다. GC를 통해 유효하지 않은 포인터 접근이나 메모리 누수 같은 버그를 줄이거나 막을 수 있다. 유효하지 않은 포인터 접근 : 이미 동적 할당한 메모리를 해제한 영역에 접근하게 되는 버그 이중 해제 : 이미 해제된 메모리를 또 다시 해제하는 오류를 줄일 수 있음. 메모리 누수 : 더 이상 사용하지 않는 메모리 영역을 해..

JAVA 2022.03.29

[Java] 리플렉션(Reflection)이란?

Reflection(리플렉션)이란? 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API이다. 런타임에 지금 실행되고 있는 클래스를 가져와서 실행해야하는 경우. 동적으로 객체를 생성하고 메서드를 호출하는 방법으로 Java의 리플렉션은 클래스, 인터페이스, 메소드들을 찾을 수 있고, 객체를 생성하거나 변수를 변경하거나 메소드를 호출할 수 있다. Reflection을 사용하는 경우는 코드를 작성할 시점에 어떤 타입의 클래스를 사용할지는 모르지만, 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실랭해야하는 경우 프레임워크나 IDE에서 이런 동적인 바인딩을 이용한 기능을 제공한다. 흔히 IDE의 종류중에 하나인 인텔리제이의 자동완성 기능. 그리고 스..

JAVA 2022.03.01
728x90