Java
-
인터페이스를 사용하는 이유는 다양하다. 그치만 내가 어떻게 답변할 수 있을 것인가 Intro 다른 언어에서도 인터페이스를 사용해본 경험이 있지만Java 를 공부하는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각이 들었다. 하나하나 알아보자. 🟢 인터페이스(interface)자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것이다. 하지만 클래스를 이용하여 다중 상속을 할 경우, 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이..
[Java] Java 에서 인터페이스는 왜 쓰는 것일까인터페이스를 사용하는 이유는 다양하다. 그치만 내가 어떻게 답변할 수 있을 것인가 Intro 다른 언어에서도 인터페이스를 사용해본 경험이 있지만Java 를 공부하는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각이 들었다. 하나하나 알아보자. 🟢 인터페이스(interface)자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것이다. 하지만 클래스를 이용하여 다중 상속을 할 경우, 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이..
2024.04.25 -
Java 의 실행방식과 동작원리, 그에 기반이 되는 JVM 에 대해 파헤쳐보자. Intro Java 를 사용는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각으로 이 글을 작성한다. JVM, Java Virtual Machine jvm 을 탐구하기 이전에 가상화에 대해 먼저 알아두면 좋을 것 같아서 정리했다. 가상화 (Virtualization) 란 컴퓨터 리소스의 추상화, 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호작용 하는 방식으로 감추는 기술이다. 💡가상머신, 하이퍼바이저, 컨테이너 가상머신(가상화 라는 용어 사용) - 단일 하드웨어에 여러 컴퓨팅 환경을 만..
[Java] JVM 이란Java 의 실행방식과 동작원리, 그에 기반이 되는 JVM 에 대해 파헤쳐보자. Intro Java 를 사용는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각으로 이 글을 작성한다. JVM, Java Virtual Machine jvm 을 탐구하기 이전에 가상화에 대해 먼저 알아두면 좋을 것 같아서 정리했다. 가상화 (Virtualization) 란 컴퓨터 리소스의 추상화, 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호작용 하는 방식으로 감추는 기술이다. 💡가상머신, 하이퍼바이저, 컨테이너 가상머신(가상화 라는 용어 사용) - 단일 하드웨어에 여러 컴퓨팅 환경을 만..
2024.04.23 -
제목 그대로 Spring Boot 에서 Redis 를 사용하여 성능을 개선해본다. 성능을 개선하기 위해 redis 를 선택한 이유와 주의할 점, spring boot에서 사용하는 방법에 초점을 두며 ⛅️ Intro간단한 구글링만 해봐도 'Redis로 캐싱, 성능 개선' 과 같은 글을 많이 볼 수 있다. 이번 시간을 통해 redis 를 사용하는 이유, 주의할 점, redis 의 특징과 다양한 활용법에 대해 정리하고자 한다. 그 전에 Redis 에 대해 정리한 글이 있으니 참고하면 좋을 것 같다. Redis란 ?Redis란 ? 선착순 이벤트를 진행하는데 선착순의 기준을 무엇으로 잡을 것이냐 라는 질문을 받았다. 이러한 이벤트를 진행할 때 당연히 의도한 무언가가 생성된 시간을 기준으로 하면 되지 않냐seun..
[Spring] Redis 로 성능개선 with Spring Boot제목 그대로 Spring Boot 에서 Redis 를 사용하여 성능을 개선해본다. 성능을 개선하기 위해 redis 를 선택한 이유와 주의할 점, spring boot에서 사용하는 방법에 초점을 두며 ⛅️ Intro간단한 구글링만 해봐도 'Redis로 캐싱, 성능 개선' 과 같은 글을 많이 볼 수 있다. 이번 시간을 통해 redis 를 사용하는 이유, 주의할 점, redis 의 특징과 다양한 활용법에 대해 정리하고자 한다. 그 전에 Redis 에 대해 정리한 글이 있으니 참고하면 좋을 것 같다. Redis란 ?Redis란 ? 선착순 이벤트를 진행하는데 선착순의 기준을 무엇으로 잡을 것이냐 라는 질문을 받았다. 이러한 이벤트를 진행할 때 당연히 의도한 무언가가 생성된 시간을 기준으로 하면 되지 않냐seun..
2024.02.25 -
Spring Boot Slice Test ⛅️ Intro Spring Boot 를 공부하다 보니 여러가지 테스트를 진행하는 과정에서 통합테스트 나 단위테스트 와 같은 단어들이 등장했다. 테스트의 중요성을 느끼고 기능이 완성될 때마다 충분한 테스트를 거치자고 다짐하기도 했고, 의미를 정확히 모르고 사용하는 것은 무의미하다 생각하여 이번 기회를 통해 정리해보고자 한다! 통합 테스트 (Integration Test) 란 ? 한마디로 여러 컴포넌트 간의 상호 작용을 통합적으로 테스트한다는 의미이다. 주로 Spring 의 @SpringBootTest 어노테이션을 사용하여 애플리케이션 컨텍스트를 로드하고, 실제 Bean 들과 상호작용하면서 애플리케이션의 통합을 확인한다. 애플리케이션의 설정과 모든 Bean을 로드하..
[spring] 스프링부트에서 테스트!Spring Boot Slice Test ⛅️ Intro Spring Boot 를 공부하다 보니 여러가지 테스트를 진행하는 과정에서 통합테스트 나 단위테스트 와 같은 단어들이 등장했다. 테스트의 중요성을 느끼고 기능이 완성될 때마다 충분한 테스트를 거치자고 다짐하기도 했고, 의미를 정확히 모르고 사용하는 것은 무의미하다 생각하여 이번 기회를 통해 정리해보고자 한다! 통합 테스트 (Integration Test) 란 ? 한마디로 여러 컴포넌트 간의 상호 작용을 통합적으로 테스트한다는 의미이다. 주로 Spring 의 @SpringBootTest 어노테이션을 사용하여 애플리케이션 컨텍스트를 로드하고, 실제 Bean 들과 상호작용하면서 애플리케이션의 통합을 확인한다. 애플리케이션의 설정과 모든 Bean을 로드하..
2024.02.25 -
Spring Retry 에 대해 학습하고, 이를 적용한 코드를 통한 깊이 더하기 ⛅ Intro최근 각광받는 MSA 구조, 분산 시스템 구조에서 서버간 네트워크 통신은 매우 중요하다. 특히 네트워크를 통한 API 호출은 언제 어떻게 실패할지 예측하기 어렵기 때문에 이를 감시할 수 있는 모니터링 기술도 매우 중요하게 평가받고 있다. Datadog 같은 기업의 클라우드 환경 솔루션도 이런 분산 시스템 모니터링과 실시간 오류, 성능 분석을 위한 사용자의 니즈를 기반으로 급속하게 성장하고 있는 중이다. 이런 분산 시스템에서 서버와 서버간 API 호출 실패에 대한 재시도는 매우 중요한 행위이다. 1번의 네트워크 호출 실패로 서비스의 비지니스 로직을 모두 실패처리하거나 fallback 처리하는 것은 몇 번 다시 ..
[Java] Spring RetrySpring Retry 에 대해 학습하고, 이를 적용한 코드를 통한 깊이 더하기 ⛅ Intro최근 각광받는 MSA 구조, 분산 시스템 구조에서 서버간 네트워크 통신은 매우 중요하다. 특히 네트워크를 통한 API 호출은 언제 어떻게 실패할지 예측하기 어렵기 때문에 이를 감시할 수 있는 모니터링 기술도 매우 중요하게 평가받고 있다. Datadog 같은 기업의 클라우드 환경 솔루션도 이런 분산 시스템 모니터링과 실시간 오류, 성능 분석을 위한 사용자의 니즈를 기반으로 급속하게 성장하고 있는 중이다. 이런 분산 시스템에서 서버와 서버간 API 호출 실패에 대한 재시도는 매우 중요한 행위이다. 1번의 네트워크 호출 실패로 서비스의 비지니스 로직을 모두 실패처리하거나 fallback 처리하는 것은 몇 번 다시 ..
2024.02.21 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⛅️ Intro 프로그래머스에 비트 연산을 사용해야 하는 알고리즘 문제를 경험했다. 평소에 진수 변환만 사용하다가 더 다양한 풀이에 접목시키고자 학습한 내용을 정리하고 공유한다! Java 에서의 진수 변환 비트 연산에 대해 설명하기 이전에 진수를 변환하는 방법에 대해 먼저 공유한다. 1. Integer.toString(i, radix) Integer.toString(7, 2); [Result] : 111 Integer.toString() 메서드의 첫번째 파라미터인 i에 진수변환할 수를 입력하고, 두번째 파라미..
[Java] 비트 연산프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⛅️ Intro 프로그래머스에 비트 연산을 사용해야 하는 알고리즘 문제를 경험했다. 평소에 진수 변환만 사용하다가 더 다양한 풀이에 접목시키고자 학습한 내용을 정리하고 공유한다! Java 에서의 진수 변환 비트 연산에 대해 설명하기 이전에 진수를 변환하는 방법에 대해 먼저 공유한다. 1. Integer.toString(i, radix) Integer.toString(7, 2); [Result] : 111 Integer.toString() 메서드의 첫번째 파라미터인 i에 진수변환할 수를 입력하고, 두번째 파라미..
2024.02.20 -
Spock으로 테스트코드를 작성하며 경험한 것들을 기록한다.📖 ⛅️ Intro TDD 가 중요 역량이 되는만큼 테스트 코드 작성은 매우 중요하다. 그렇기에 테스트 코드를 생활하는 습관을 들이는 도중, 주변에서 "JUnit 말고 Spock 도 사용해보세요 !! "라는 말과 권유는 많이 들었지만 할게 너무 나도 많아서 미뤄왔다. 그런데 막상 테스트를 작성하다 보니 생각보다 간단했고 아직 Spock을 잘 모르시는 분과 함께 경험을 나누면 좋겠다고 생각해서 이 글을 정리한다. 이제 막 시작하는 단계이다 보니 부족한 점이 많지만.. Spring Boot 에서 Spock 로 테스트 Spring Boot 에서 Spock 를 사용하는 방법에 대해 설명하기 전에 Spock가 뭔지, 사용법은 무엇인지에 대해 알아보자. S..
[Spring] Spock으로 테스트 코드를!Spock으로 테스트코드를 작성하며 경험한 것들을 기록한다.📖 ⛅️ Intro TDD 가 중요 역량이 되는만큼 테스트 코드 작성은 매우 중요하다. 그렇기에 테스트 코드를 생활하는 습관을 들이는 도중, 주변에서 "JUnit 말고 Spock 도 사용해보세요 !! "라는 말과 권유는 많이 들었지만 할게 너무 나도 많아서 미뤄왔다. 그런데 막상 테스트를 작성하다 보니 생각보다 간단했고 아직 Spock을 잘 모르시는 분과 함께 경험을 나누면 좋겠다고 생각해서 이 글을 정리한다. 이제 막 시작하는 단계이다 보니 부족한 점이 많지만.. Spring Boot 에서 Spock 로 테스트 Spring Boot 에서 Spock 를 사용하는 방법에 대해 설명하기 전에 Spock가 뭔지, 사용법은 무엇인지에 대해 알아보자. S..
2024.02.18 -
평소에 자주쓰는 어노테이션, 헷갈리는 개념들 여기서 정리하고 넘어간다. ⛅️ Intro개발을 진행하며 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor 이 세개의 어노테이션을 종종 사용했다. 비슷한 맥락의 코드에 주로 사용하긴 했지만 가끔 헷갈리는 경우가 발생한다. 이게 뭐지 .. 이게 뭐였지 하며 매번 구글링을 하는 나를 위해 정리하고 넘어간다. @NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor 먼저 설명하자면 Spring과 Lombok을 사용한다면 꼭 알고 있어야 하는 생성자 관련 어노테이션들이다. 일단 3형제 뒤에 붙은 Constructor라는 단어로부터 유추할 수 있듯..
[Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor 이것들이 뭔데평소에 자주쓰는 어노테이션, 헷갈리는 개념들 여기서 정리하고 넘어간다. ⛅️ Intro개발을 진행하며 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor 이 세개의 어노테이션을 종종 사용했다. 비슷한 맥락의 코드에 주로 사용하긴 했지만 가끔 헷갈리는 경우가 발생한다. 이게 뭐지 .. 이게 뭐였지 하며 매번 구글링을 하는 나를 위해 정리하고 넘어간다. @NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor 먼저 설명하자면 Spring과 Lombok을 사용한다면 꼭 알고 있어야 하는 생성자 관련 어노테이션들이다. 일단 3형제 뒤에 붙은 Constructor라는 단어로부터 유추할 수 있듯..
2024.02.18