프로그래밍 언어
-
메서드 시그니처프로그래밍 언어/Java 2024. 8. 25. 16:29
Java에서는 메서드 이름과 매개변수 타입, 매개변수 수, 매개변수 순서로 메서드의 동작이 달라집니다. 이 구분점을 메서드 시그니처라고 합니다. 이 개념은 메서드 오버로딩시 반드시 필요합니다. public int calculate(int x, int y){ return x + y;}public double calculate(double x, double y) { return x + y;}위의 예제는 메서드의 이름이 같습니다. 그렇다면, 컴파일러는 이 두 메서드가 어느 때 쓰여야할지 구분할 수 있을까요?정답은 구분할 수 있습니다. 매개변수의 타입이 다르기 때문입니다. public int calculate1(int x, int y){ return x + y;}public double calculate2(in..
-
인메모리 저장소와 Redis에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 8. 19:04
이 글은 인메모리 저장소와 Redis에 대한 공부를 제가 이해할 수 있는 내용으로 정리한 글입니다. 부정확한 서술이나 기술에 대한 정보가 틀릴 가능성이 있습니다. 인메모리 저장소의 필요성우리는 지금까지 Spring boot를 활용하면서 데이터를 쉽게 저장할 수 있도록 관계형 데이터베이스(RDBMS)를 사용해왔습니다. 이 데이터베이스를 사용했던 가장 큰 목적은 서비스가 종료돼도 데이터를 영속적으로 남기기 위해서입니다. 하지만, 서비스를 운용하다보면 데이터베이스에 저장하는 것보다 임시 저장해야하는 상황들이 있습니다.예를 들어, 우리가 쇼핑몰을 이용할 때 이용하는 장바구니 기능은 확정되지 않은 데이터로써 상품들을 쉽게쉽게 바뀌고 삭제됩니다. 이런 상황에서 관계형 데이터베이스에 계속해서 SQL문을 날려 저장하..
-
분산 추적에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 7. 19:38
이 글은 필자가 공부한 내용을 정리한 것에 불과하며 틀린 정보가 있을 수 있으니 주의가 필요합니다. 오늘은 분산 추적에 대해 알아보겠습니다. 주제에 들어가기 앞서, Spring Cloud(MSA를 구현하기 위해 Spring에서 지원하는 프레임워크의 확장)는 분산 추적과 로깅을 설정할 수 있도록 설계되었습니다. 그만큼 MSA 구현에 있어 분산 추적과 로깅이 중요한 위치에 있다는 뜻인데, 이는 왜 중요한 걸까요? 일단, 분산추적의 정의와 기능에 대해 알아봅시다. 분산추적이란,분산 추적은 분산 시스템에서 서비스간의 요청 흐름을 추적하고 모니터링하는 방법입니다.이는 각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 돕습니다.분산 추적이 MSA 설계에 필요한 이유는,마이크로 서비스 아키..
-
API 게이트 웨이에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 6. 23:00
이 글은 API 게이트웨이에 대한 공부를 제가 이해할 수 있는 내용으로 정리한 글입니다. 부정확한 서술이나 기술에 대한 정보가 틀릴 가능성이 있습니다. API 게이트웨이 개요API 게이트웨이는 MSA를 구현하는데 필요한 Spring Cloud에서 지원하는 확장 기능 중 하나이다. API 게이트웨이가 하는 일을 간략적으로 보자면클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가기능을 제공하는 중간 서버의 역할을 한다.클라이언트와 서비스간의 단일 진입점 역할을 한다.위의 역할을 수행하기 위해 API 게이트웨이는 아래와 같은 핵심 기능들을 가지고 있다.라우팅 정책 : 클라이언트 요청을 적절한 서비스로 전달 (예: 라우팅, 속도 제한, 요청/응답 조작 등등)보안 정책 : 인증, 권한 부여, 엑세스..
-
변수 개념과 활용 방법에 대해 알아보자프로그래밍 언어/Java 2024. 2. 28. 11:02
자바를 활용하기 앞서, 자바를 사용하기 위해 알아야할 기본적인 개념에 대해 알아보자. 가장 기초적으로 알아야할 부분은 바로 변수에 대한 개념이다. 변수란 값이 변할 수 있는 저장공간이다. 변수 선언은 아래와 같이 사용할 수 있다. int number = 10; //1. 초기화 int a; //2. 선언 후 덮어쓰기 a = 1; 상수란 값이 변하지 않는 저장공간이다. 상수 선언은 아래와 같이 사용할 수 있다. fianl int PI = 3.141592; //상수 선언 PI = 4; //새로운 값으로 대입시 에러 발생 위에서는 설명 없이 int라는 기본형 변수를 사용했지만, 변수들은 그냥 단독으로 사용할 수 없다. 모든 변수의 이름 앞에는 변수의 타입이 선언되어야한다. a = 10; // 변수의 타입이 없어..
-
JVM? JDK? JRE? 개념을 정확히 알아보자프로그래밍 언어/Java 2024. 2. 27. 10:05
JVM(Java Virtual Machine)이란? 자바 가상 기계라는 뜻을 가지고 있다. 자바 파일을 실행시키기 위해 필요한 것으로써, 어떤 운영체제에 구애 받지 않고 자바 파일을 실행가능하도록 만든다. .java 파일이 작동하기까지 흐름? .java파일을 컴파일러를 통해 .class파일로 변환 Java Virtual Machine에서 구동 JVM의 구성? JVM은 대표적으로 아래의 기능들로 구성되어 있다. 바이트코드 :: java compiler를 통해 .java파일을 변환한 .class파일 인터프리터 :: .class파일을 기계가 이해할 수 있는 기계어로 변환하는 기능 **JIT 컴파일러 :: 빠른 Java .class 코드 해석기...라고 하는데 이부분은 아직 이해가 되지 않았다. 가비지 컬렉터 ..
-
Java 언어에 대한 이해프로그래밍 언어/Java 2024. 2. 26. 22:16
백엔드 개발자를 지향한다면 내가 쓰는 언어에 대한 이해는 필수라고 생각한다. 그렇다면, Java의 개념과 배우려는 이유를 명확히 해야한다. 이번 포스팅에서 Java를 배우는 목적과 Java언어의 특징에 대해 적어볼 생각이다. 1. Java의 핵심 기능 Java는 C언어의 기능, 공통 실행환경, 클래스 그리고 객체를 지원하는 프로그래밍 언어이다. C언어의 기능으로는, 입/출력, 문맥 기계식 데이터 타입 연산 기능 메서드 자료형 데이터 타입 자료구조 이 있다. 이는 A언어, B언어로부터 계승된 기능을 포함한다. 2. Java를 배우는 목적 대한민국에서 가장 많이 사용되는 언어이다. 객체 지향 언어이다. 보안성이 높다. API를 통한 대규모 어플리케이션 개발이 가능하다. 다양한 개발도구와 라이브러리를 지원한다..
-
객체지향 프로그래밍 파헤치기) 캡슐화를 알아보자!프로그래밍 언어/Java 2023. 12. 15. 18:06
객체지향 프로그래밍을 사용하는 Java는 4가지 큰 특징이 있습니다. 캡슐화 상속 다형성 추상화 위의 4가지는 Java 프로그래밍 개념의 가장 밑단에 있으며 이를 제대로 이해하지 못한다면 Java를 제대로 사용한다고 말할 수 없습니다. 저도 이 개념들을 확실히 이해하고자 이렇게 정리한 내용을 포스팅하려합니다. 이번 포스팅의 주제는 캡슐화입니다. 캡슐화라고 하면 무엇을 상상하시나요? 저는 영양제나 알약 겉부분의 원통형 모양이 가장 먼저 떠오릅니다. 이 캡슐의 용도는 안에 있는 영양제나 약의 성분을 온전히 원하는 곳에 전달하기위해 바깥의 간섭을 막아주는 역할을 합니다. Java의 캡슐화는 어떨까요? Java에서 캡슐화란 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에..