목록자바 (13)
잡동사니
안녕하세요. yeTi입니다.오늘은 클라우드 네이티브 애플리케이션에서 스레드 풀과 버추얼 스레드의 비교를 해보려고 합니다.서론소프트웨어 개발 분야에서 동시성과 병렬성 관리는 효율적이고 반응성 높은 애플리케이션을 구축하는 데 필수적입니다. 특히 클라우드 네이티브 애플리케이션에서는 확장성과 자원 최적화가 중요한데, 이러한 요구사항을 만족시키기 위해 적절한 동시성 모델의 선택이 매우 중요합니다.본 글에서는 자바에서 제공하는 두 가지 주요 동시성 모델인 스레드 풀(Thread Pool)과 버추얼 스레드(Virtual Thread)를 비교 분석합니다. 각 모델의 특징, 장단점, 그리고 클라우드 네이티브 애플리케이션에서의 적용 가능성을 살펴봄으로써 개발자들이 적절한 동시성 모델을 선택하는 데 필요한 인사이트를 제공하..
안녕하세요. yeTi입니다.오늘은 클라우드 네이티브 애플리케이션에서 버추얼 스레드의 역할과 이점을 알아보고자 합니다.버추얼 스레드는 전통적인 스레드 모델의 한계를 극복하고, 더 높은 동시성을 제공하기 위해 고안된 경량 스레드 모델입니다. 본 포스팅은 버추얼 스레드의 개념부터 시작하여, 클라우드 네이티브 애플리케이션에서의 실제 적용 사례와 함께 그 이점 및 한계까지 종합적으로 분석할 것입니다.클라우드 네이티브 애플리케이션의 특성먼저 클라우드 네이티브 애플리케이션이 가지는 특성을 정리하여 큰 맥락에서 바라볼 수 있도록 하겠습니다. 클라우드 네이티브 애플리케이션은 처리량, 병렬성, 동시성, 효율성의 관점에서 다뤄볼 수 있습니다.처리량(Throughput)처리량은 애플리케이션이 단위 시간당 처리할 수 있는 작업..
안녕하세요. yeTi입니다. ChatGPT의 활용법 (feat. 정보수집 방식의 전환) 에서 ChatGPT의 쓰임새를 인식하고 ChatGPT를 활용하여 궁금증을 해소한 예시를 공유하고자 합니다. 문답 코틀린의 가치는 뭐라고 생각해? Kotlin의 value 나 worth는 몇 가지 방식으로 해석할 수 있습니다: 시장 가치: Kotlin은 Android 앱 개발에 널리 사용되는 프로그래밍 언어이며 업계에서 널리 사용되고 있습니다. Kotlin에 능숙한 개발자는 종종 좋은 직업 전망을 가지고 있으며 경쟁력 있는 급여를 받을 수 있습니다. 오픈 소스 커뮤니티: Kotlin은 오픈 소스이며, 그 가치는 커뮤니티의 힘으로 측정할 수 있습니다. 커뮤니티가 활발하다는 것은 개발자를 위한 지속적인 개발, 지원 및 풍부..
안녕하세요. yeTi입니다. 오늘은 백기선님의 유튜브 강좌 중 하나인 이팩티브 자바 의 완주 후기를 공유하려고 합니다. 강의 수강 계기 지난 후기 이후로 요즘 너무 기초 강좌만 보고 있나 라는 생각이 들면서, 좀 더 발전적인 다른 무언가를 해야겠다는 생각을 막연하게 가지고 있었습니다. 그러던 차에 백기선님의 지금까지 만들었던 강의들은 결국 이 강의를 만들기 위한 준비 작업이었습니다. 라는 영상이 이목을 끌었고, 궁극의 강의의 주제는 무엇일까? 라는 궁금증으로 바로 영상을 보게 되었네요. 영상에서 이펙티브 자바 Effective Java 3/E - YES24 는 모든 자바개발자에게 권장하는 필독서중 하나 이지만 모든 개발자가 소화하기는 힘든 어려운 책 이라고 하는데요. 그래서 이펙티브 자바를 주제로 강의를..
안녕하세요. yeTi입니다. 오늘은 java에서 볼 수 있는 NullPointerExceptions을 예방하는 방법에 대해 알아보고자 합니다. 개요 Java를 개발하다보면 NullPointerExceptions을 어렵지 않게 만날 수 있는데요. 어떤 스타일로 개발을 하면 NullPointerExceptions을 피해갈 수 있을지에 대해 고민해보고 내용을 공유하고자 합니다. 문제인식 Java에서 Null을 언제쓰는지 생각을 해보면 클래스가 초기화되지 않았거나, 인스턴스가 존재하지 않는다는 의미를 표현하고 싶을 때 사용합니다. 간단한 해결법은 클래스를 원하는 시점에 초기화하고 인스턴스가 없다는것을 인지하고 로직을 구현하면 되는데요. 여기서 사용하기 곤란한 코드가 발생합니다. 바로 다음과 같은 코드입니다. S..
안녕하세요. yeTi입니다. 오늘은 자바에서 사용하는 Stream의 근간이 되는 Aggregate Operations에 대해 알아보겠습니다. 개요 Collection은 주로 데이터를 검색할 때 사용합니다. 이 때, 자바에서는 aggregate operations 을 지원하여 보다 간결하게 코드를 작성할 수 있도록 해주는데요. 흔히 collection에서 stream()을 사용하여 데이터를 검색하는 것이 aggregate operations 을 사용하는 것으로 보면됩니다. Pipelines and Streams Aggregate operations 에서 수행 순서를 정의하는 것을 pipeline이라고 하는데요. pipeline은 source와 intermediate operations, terminal o..
안녕하세요. yeTi입니다. 오늘은 자바에서 람다식을 사용하는 방법에 대해 공유하고자 합니다. 제가 처음 Oracle Java Documentation내 Lambda Expressions을 읽은 이유는 단순히 자바에서 사용하는 람다의 표현식에 대해서 알고자 함이었습니다. 하지만 documentation 에서 제공하는 시나리오를 읽으면서 단순히 function 을 파라메터로 전달하는 형식에 그치는 것이 아니라 function 을 파라메터로 전달하는 형식에 의해 얻을 수 있는 인터페이스의 변화나 확장성에 대해 인지할 수 있는 시간이었기 때문에 해당 내용을 공유하게 됐습니다. 개요 자바에서는 interface (하나의 추상 함수를 가지는)와 anonymous classes (익명 클래스)를 활용하여 로직을 함..
안녕하세요. yeTi입니다. 오늘은 Java를 공부하는 범위에 대해 알아보려고 합니다. 개요 자바를 공부하는 방법에는 다양한 방법이 있고, 공부하는 방법에 따라 강조하는 부분이 다를 수 있습니다. 따라서 어느정도 공부를 해야 자바를 잘 안다고 할 수 있을지에 대한 개인적인 생각을 공유하고자 합니다. 우리가 접하는 대부분의 제품에는 설명서가 있습니다. 마찬가지로, 프로그래밍 언어나 오픈소스에도 Document라는 형태로 개념이나 spec에 대해 설명을 하고 있습니다. 따라서 자바를 공부함에 있어서 해당 진영에서 제공하는 document를 기반으로 지식을 얻는다는 것은 의미가 있다고 생각합니다. 이에 오라클에서 제공하는 학습 가이드를 기반으로 Java를 공부하는 범위를 보고자 합니다. Guide for be..
안녕하세요. yeTi입니다. 오늘은 Java에서 사용하는 키워드의 일부를 살펴보려고 합니다. Final 한번 정의된 값을 수정할 수 없도록 제한한다. Final Class : 상속 방지 Final Method : Override 방지 Final Variable : 값의 변경 금지 final keyword in java - GeeksForGeeks, final, finally and finalize in Java - GeeksForGeeks에 추가적인 내용이 있습니다. Static 객체의 정의없이 항상 메모리에 올려두고 모든 객체와 공유한다. Static Block : Static Variable을 초기화 Static Variable : 공유 변수 static keyword in java - GeeksFo..
인프런의 더 자바, 코드를 조작하는 다양한 방법 - 백기선을 수강하면서 내용을 정리하고 간단한 후기를 남깁니다. JVM 이해하기 JVM, JRE, JDK 그리고 자바 JVM은 자바 가상 머신(Java Virtual Machine)의 약자로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다. 때문에 특정 플랫폼에 종속적이다. JVM자체는 바이트 코드를 실행하는 표준이자 특정 벤더가 구현한 구현체(JVM 벤더 : 오라클, 아마존, Azul 등)이다. JRE는 자바 실행 환경(Java Runtime Environment)의 약자로 자바 어플리케이션을 실행할 수 있도록 구성된 배포판이다. JVM과 핵심 라이브러리 및 프로퍼티, 리소스를 가지고 있다. (..