[Java] 람다 표현식, 함수형 인터페이스, Stream API
·
Programming/Java
우아한테크코스 레벨 1 자료를 참고하여 학습한 내용을 정리한 글입니다. 💭 들어가며일반 for 문과 향상된 for 문에 익숙해져 있어 Lambda와 Stream API를 사용하지 않았다. 우아한테크코스 미션에서 Lambda와 Stream API를 활용하는 데 미숙한 나를 보며 계기로 학습의 필요성을 느꼈지만, 왜 for 문 대신 Stream API를 사용해야 하는지 잘 와닿지 않았다. 기존의 for 문도 충분히 가독성이 있다고 생각했기 때문이다. 따라서 이번 글에서는 람다 표현식(Lambda Expression), 함수형 인터페이스와 Stream API를 왜 사용하는지, 그리고 어떻게 활용하는지를 정리했다.  ✅ 람다 표현식(Lambda Expression)▶ 사용하는 이유Java 8 이전에는 익명 클..
[Java] 테스트 코드, JUnit & AssertJ
·
Programming/Java
우아한테크코스 레벨 1 자료를 참고하여 학습한 내용을 정리한 글입니다. 💭 들어가며테스트 코드를 작성하는 것은 개발자에게 매우 중요한 일이다. 경험이 쌓이고 연차가 늘어날수록 코드의 안정성을 더욱 중요하게 고려해야 한다. 테스트 코드를 작성할 때 일반적으로 org.junit.jupiter.api.Assertions(JUnit) 또는 org.assertj.core.api.Assertions(AssertJ)를 사용하며, 대부분 후자인 AssertJ를 선호하는 경우가 많다. 그 이유는 아래에 살펴보자.  ✅ Test AnnotationAnnotation설명@Test단위 테스트를 정의@DisplayName테스트 이름을 지정@Nested내부 클래스를 이용한 그룹화 테스트@Disabled테스트를 비활성화@Para..
[CS] 프로그래밍 에러 종류
·
Programming/CS
✅ 컴파일 에러 (Compile-Time Error)🔽 특징코드 작성 후 컴파일 과정에서 발생하는 에러로, 코드가 실행되기 전에 발견된다.주로 구문 에러(Syntax Error)나 타입 에러(Type Error)가 포함된다.🔽 예시int number = "Hello"; // 타입 불일치🔽 해결 방법컴파일러가 제공하는 에러 메시지를 읽는다.코딩 시, IDE의 실시간 문법 검사 기능을 활용한다. (예: IntelliJ, Eclipse)  ✅ 런타임 에러 (Runtime Error)🔽 특징코드가 컴파일에는 성공했지만 실행 중에 발생하는 에러이다.주로 NullPointerException, IndexOutOfBoundsException과 같은 예외 상황이 포함된다.🔽 예시int[] array = {1,..
[Java] Enum
·
Programming/Java
💭 들어가며프리코스 3주차 과제에서 "Java Enum을 적용하여 프로그램을 구현한다."라는 프로그래밍 요구 사항이 있었다. 이전에도 Enum을 사용해 본 적은 있지만, 이번 과제를 진행하면서 Enum을 정확히 이해하지 못한 상태로 사용해 왔다는 생각이 들었다. 단순히 요구사항 때문에 사용하기보다, 제대로 알고 활용하자는 마음으로 Enum을 다시 공부했다. Enum에 대해 잘 정리된 인파님의 글을 참고하여 과제에 적용해 보았고, 이번 글에서는 해당 부분을 정리하고 과제를 진행하면서 느낀 Enum의 장점을 정리하려고 한다. ✅ 이전의 상수 관리 방식▶ static final 상수final 키워드를 사용하여 하드 코딩된 값을 상수로 추출하는 방식이다.🔽 2주차 과제(자동차 경주): static final..
[Kubernetes] 쿠버네티스
·
Programming/Kubernetes
들어가기 앞서, 이 글은 도커(Docker) 및 컨테이너 배포에 대한 기본적인 이해를 전제로 작성되었습니다. 도커와 관련된 자세한 설명은 여기에 모두 정리해 두었으니, 참고해 주시면 좋겠습니다.  ✅ 쿠버네티스 (Kubernetes, k8s)쿠버네티스는 컨테이너화된 애플리케이션을 배포하고 관리하기 위한 오픈 소스 플랫폼이다. 컨테이너 오케스트레이션 도구로서, 애플리케이션의 확장, 배포, 운영을 자동화한다.오케스트레이션: 여러 개의 컨테이너 또는 서버를 효율적으로 관리하고 작업을 의미한다. 주요 역할은 애플리케이션이 여러 컨테이너로 구성되어 있을 때, 각각의 컨테이너를 배포, 스케일링, 업데이트, 복구하는 것을 자동화한다. ▶ 쿠버네티스의 등장 배경도커의 등장으로 컨테이너 기반 배포 방식이 보편화되었고, ..
[Docker] 도커
·
Programming/Docker
✅ 배포 방식의 변화 과정▶ 전통적 배포 (Traditional Depolyment)구성: 하드웨어 -> 운영체제 -> 애플리케이션설명: 물리적인 컴퓨터 한 대에 하나의 OS를 설치하고, 애플리케이션이 해당 운영 체제에서 직접 실행되는 방식이다.문제점자원 공유 문제: 애플리케이션들이 동일한 OS를 공유하므로, 같은 리소스(라이브러리, 네트워크, CPU)를 사용하게 된다. 이로 인해 성능 문제가 발생하게 된다.확장성 부족: 새로운 애플리케이션을 설치하거나 추가하려면 운영 체제 및 하드웨어의 환경에 맞게 설치하고 설정해야 한다.배포 방식하나의 물리적 서버가 있다.물리적 서버 위에 운영 체제를 설치한다.동일한 운영 체제에서 여러 프로덕트를 실행한다. 발생하는 문제들을 피하려면 물리적 서버를 추가로 구매해야 한..
[Network] XSS, CSRF
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ XSS에 대해서 설명해 주세요.XSS(Cross-Site Scripting): 웹 애플리케이션의 취약점을 이용해, 악성 스크립트를 삽입하여 사용자에게 실행하게 만드는 공격 기법이다. ▶ XSS의 종류Reflected XSS: 악성 스크립트가 서버에 저장되지 않고, URL 등의 입력 데이터에 포함되어 전달되는 유형이다. 사용자가 악성 링크를 클릭하면, 그 즉시 스크립트가 실행된다.Stored XSS: 악성 스크립트가 데이터베이스에 저장되어 여러 사용자에게 지속적으로 전달되는 유형이다. 해당 글을 열람하는 모든 사용자가 스크립트의 영향을 받게 된다.DOM-based XSS: 악성 스크립트가 클라이언트 측에서 DOM(Docu..
[Network] 멀티플렉싱, 디멀티플렉싱
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ 멀티플렉싱과 디멀티플렉싱에 대해 설명해 주세요. ▶ 멀티플렉싱(Multiplexing)멀티플렉싱: 여러 개의 데이터 스트림을 하나의 물리적 통신 채널을 통해 동시에 전송할 수 있도록 하는 기술이다. 네트워크에서 이 과정은 전송 계층(Transport Layer)에서 주로 이루어진다.🔽 예시웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램 등 여러 애플리케이션이 동시에 작동하며 각각의 데이터를 전송하는 경우, 이 데이터들이 모두 하나의 네트워크 연결을 공유한다. ▶ 디멀티플렉싱(Demultiplexing)디멀티플렉싱: 멀티플렉싱된 데이터를 수신 측에서 다시 개별 데이터 스트림으로 분리하는 과정이다. 수신된 데이터는 ..
soeun2537