본문 바로가기

분류 전체보기

(465)
[JAVA] Java 21 Virtual Thread와 Kotlin Coroutine 비교해보기 구분Java 21 가상 스레드Kotlin 코루틴동시성 모델JVM이 관리하는 가벼운 스레드로, 자바의 스레드 모델에 직접 매핑되어 자원 사용과 컨텍스트 전환 비용을 줄임.구조적 동시성으로, Kotlin 런타임에서 관리하는 가벼운 스레드. 작업을 차단하지 않고 중단 및 재개 가능.통합기존 Java 코드 및 라이브러리와 원활하게 통합.Kotlin 언어 기능 및 특정 라이브러리 필요 (예: kotlinx.coroutines).성능메모리 오버헤드가 적고 JVM의 네이티브 지원으로 수백만 개의 스레드 처리 가능.수천 개의 코루틴을 효율적으로 관리하지만 중단 지점과 코루틴 전용 구조 필요.Code로 비교해보기Kotlin 코루틴import kotlinx.coroutines.*fun main() = runBlocking..
[JAVA] Java 21 새로운 기능 - Virtual Thread란 무엇인가? Java 21에서는 Virtual Threads라는 중요한 기능이 도입되었습니다. 이 기능은 특히 동시성 프로그래밍을 단순화하고 성능을 크게 향상시킬 수 있습니다. 아래에 Virtual Threads를 사용하는 예시와 함께 이 기능의 개념과 장점을 설명하겠습니다.Virtual Threads 개념Virtual Threads는 Java의 기존 쓰레드 모델을 확장하여, 운영체제의 물리적 쓰레드와는 별개로 JVM 레벨에서 관리되는 경량 쓰레드입니다. 이는 수천에서 수백만 개의 쓰레드를 효율적으로 생성하고 관리할 수 있게 합니다.주요 기능:메모리 사용량 감소: 가상 스레드는 약 10KB의 메모리를 사용하며, 기존 스레드는 2MB를 사용합니다.컨텍스트 스위칭 비용 감소: 가상 스레드는 컨텍스트 스위칭 비용이 적어 ..
[Spring Boot] DI(Dependency Injection: 의존성 주입) 란 무엇인가? DI의 주요 개념IoC (Inversion of Control):전통적인 방식에서는 객체가 직접 자신의 의존성을 생성하거나 관리합니다. IoC는 이러한 제어의 흐름을 개발자가 아닌 컨테이너(Sprint Container)에게 맡기는 개념입니다.빈(Bean):Spring 컨테이너가 관리하는 객체를 빈이라고 합니다. 빈은 Spring 애플리케이션 컨텍스트에 의해 생성되고 관리됩니다.컨테이너(Container):Spring에서는 ApplicationContext가 컨테이너 역할을 하며, 애플리케이션의 빈을 생성, 설정, 관리합니다.DI 유형필드 주입(Field Injection):필드에 직접 주입하는 방식입니다.생성자 주입(Constructor Injection):생성자를 통해 의존성을 주입받는 방식입니다.세..
[삼천동 카페] 삼천동 (안국) 커피 명품! 버터 크림 라떼 추천! 가을만 되면 찾는 삼천동입니다.경복궁 돌담길을 따라 걷는 단풍길은 낮이든 저녁이든 시간을 가리지 않고 좋습니다.골목골목 볼거리도 많고 먹거리도 많아서 눈도 입도 쉴틈이 없는 곳이죠.매번 삼천동을 가면 블루보틀 커피를 마셨었습니다.비싸도 사치 치고는 저렴하다고 합리화하였거든요.그리고 블루보틀이 주는 커피의 산뜻함이 하루를 밝힐 수 있다면 되려 가격이 저렴하다고 생각하였습니다.그런데 오늘따라 익숙한 맛보다 색다른 맛이 궁금해졌습니다. 왜 그런 날이 있잖아요. 항상 가던 길로 안 가고 돌아가도 다른 길을 간다던지, 항상 타던 지하철을 외면하고 버스를 타고 싶은 그러 날.저에게 오늘은 그런 날이었습니다.삼천동의 맛집은 경복궁 돌담길을 따라 삼청 공원으로 가는 길인 삼청로에도 많지만 안국역에서 내려 북촌 한옥 마..
[Spring Boot] Spring Boot에서 JWT 토큰 발급 및 인증 해보기!! Spring Boot에서 JWT 토큰을 발급하고 검증하는 방법을 설명드리겠습니다. JWT를 사용한 인증을 구현하기 위해 Spring Security와 함께 JWT 라이브러리를 사용합니다. 여기서는 기본적인 설정과 함께 JWT 토큰을 발급하고 검증하는 예제를 소개 하겠습니다.  프로젝트 설정먼저, 필요한 의존성을 build.gradle (또는 pom.xml에 추가해야 합니다.)Gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'io.j..
[API Auth] JWT란 무엇인가?! (구성 요소 및 예시) JWT (JSON Web Token)는 주로 인증 및 권한 부여를 위해 사용되는 압축된 JSON 객체입니다. JWT는 세 가지 주요 부분으로 구성되어 있으며, 각 부분은 점(.)으로 구분됩니다. 이 세 부분은 헤더(Header), 페이로드(Payload), 서명(Signature)입니다. 이제 각 부분을 자세히 살펴보겠습니다.JWT의 구성 요소헤더 (Header) 헤더는 두 가지 정보를 포함합니다:알고리즘(alg): 서명을 생성하는 데 사용된 해싱 알고리즘 (예: HS256, RS256).타입(typ): 토큰의 타입, JWT로 설정합니다.{ "alg": "HS256", "typ": "JWT"}페이로드 (Payload) 페이로드는 JWT의 본문 부분으로, 클레임(Claim)이라고 불리는 일련의 정보가 ..
[금융 상식] 투자와 투기, 그 한 끗 차이! 투자와 투기는 모두 돈을 불리기 위한 활동이지만, 접근 방식과 목적에 차이가 있습니다.1. 투자 (Investment)투자는 자산의 장기적인 성장을 목표로 하는 활동입니다. 투자자는 자산의 기본적인 가치를 분석하고, 시간이 지남에 따라 자산의 가치가 상승할 것이라고 믿기 때문에 투자합니다.목적: 장기적인 성장과 안정적인 수익분석: 철저한 분석과 연구를 기반으로 함 (재무제표, 시장 동향 등)기간: 중장기 (몇 년에서 몇 십 년)리스크 관리: 분산 투자 등을 통해 리스크를 최소화하려 함예를 들어, 우량한 기업의 주식을 사서 오랫동안 보유하며, 회사의 성장과 함께 주가가 오르기를 기대하는 것이 투자입니다.투자의 예시 구분 내용 예시 1: 주식 투자 투자자: 존 투자 시나리오: 존은 기업 A를 조사한 후 그 ..
[Spring Boot] AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)란 무엇인가? Spring Boot에서 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 코드의 중복을 줄이고, 모듈성을 향상시키기 위한 강력한 도구입니다. AOP는 주로 애플리케이션의 로깅, 트랜잭션 관리, 보안, 예외 처리 등 횡단 관심사(Cross-Cutting Concerns)를 처리하는 데 사용됩니다.AOP의 기본 개념Aspect(애스펙트): 횡단 관심사를 모듈화한 것입니다. 예를 들어, 로깅이나 트랜잭션 관리 기능이 하나의 Aspect가 될 수 있습니다.Join Point(조인 포인트): 애플리케이션 실행 중 특정 지점입니다. 메서드 호출이나 예외 처리 등 여러 종류의 Join Point가 있습니다.Advice(어드바이스): 특정 Join Point에서 실행될 코드를 정의합..