스터디
-
불변 객체와 가비지 컬렉션의 관계스터디/JAVA 2024. 8. 22. 19:35
불변 객체는 여러 가지 장점을 가지고 있습니다. 특히 Thread Safe하여 병렬 프로그래밍에서 유용하며, 동기화를 고려하지 않아도 안전하다는 사실은 널리 알려져 있습니다. 하지만 불변 객체에 대해 공부하면서 두 가지 의문이 들었습니다. 불변 객체가 가비지 컬렉션(GC)의 성능을 높일 수 있다는 점이 잘 이해되지 않았습니다. 일반적으로 불변 객체는 한 번 생성된 후 수정이 불가능하기 때문에 GC와 어떤 관계가 있을지 궁금했습니다.불변 객체의 상태를 변경할 때마다 새로운 객체를 생성해야 한다는 점에서, 성능 저하에 대한 우려가 있었습니다. 객체를 자주 생성하는 것이 과연 효율적인지에 대해 의문이 들었습니다.의문을 해결하기 위해서 먼저, 가비지 컬렉션의 대상이 뭔지 알아야합니다. 가비지 컬렉션의 대상 가비..
-
DNS(Domain Name System)스터디/Web 2024. 1. 21. 20:08
DNS란?? DNS는 Domain Name System의 약자로, IP 주소와 도메인 주소를 연결해주는 시스템이다. 예를 들어, IP 주소가 44.342.03.244이고, 도메인 주소가 www.eatceed.com 이라고 하자. 해당 IP 주소와 도메인 주소가 관계가 있다는 것을 알려주는 시스템이 있어야한다. 사용자는 IP 주소가 무엇인지 일일이 외울 수 없다. 따라서, 도메인 주소를 검색하면 DNS에 해당 도메인 주소와 IP 주소가 매핑되어 있기 때문에 사용자가 IP 주소를 몰라도 도메인 주소를 통해 해당 IP에 접근할 수 있는 것이다. 예시를 그림으로 나타내면 아래와 같다. 먼저, 사용자가 www.exceed.com 으로 요청을 하면, DNS에서 도메인 주소와 매칭되는 IP 주소를 반환한다. 웹은 해..
-
Spring에서 Execption을 핸들링하는 방법스터디/Spring 2024. 1. 15. 21:07
서비스를 만들면서 예외 처리는 정말 중요합니다. 이번 포스팅에서는 Spring Boot에서 예외를 어떻게 핸들링할 수 있지에 대해서 알아보겠습니다.예외를 처리하는 방법은 @ExceptionHandler 사용, HandlerExceptionResolver를 사용, @ControllerAdvice 사용 이렇게 3가지가 있습니다.Controller - level : @ExceptionHandler Spring Boot에서 예외를 처리하는 방법 중 하나는 Controller의 메서드 위에 바로 @ExceptionHandler를 사용하는 것입니다.public class FooController{ //... @ExceptionHandler({ CustomException1.class, Custo..
-
S3 퍼블릭 엑세스 차단을 활성화하면서 객체에 접근하는 방법, Pre-Signed-URL스터디/인프라 2023. 12. 3. 20:51
문제 상황 위처럼 퍼블릭 엑세스 차단을 활성화하면, 객체를 안전하게 보호할 수는 있지만, 외부에서 접근할 수가 없다. 하지만, 객체에 접근을 해야하긴한다. 당연하게도, S3에서는 외부에서 해당 객체를 접근할 수 있는 방법을 제공하는 데 이것이 Pre-Signed-URL이다. 💡 Pre-Signed-URL을 사용하는 또 다른 이유는 뭐가 있을까?? 업로드하는 방식은 크게 2가지로 분류가 가능하다. 첫 번째는 클라이언트에서 서버를 거치지 않고 S3에 바로 업로드하는 방법이다. 이때, 클라이언트에서 key값을 가지고 있어야하기때문에 보안상 문제가 있다. 두 번째는 클라이언트에 서버로 객체를 넘겨 서버에서 S3로 업로드하는 것이다. 이 방법은 key가 서버에 있기때문에 상대적으로 안전하지만 서버의 부하가 심해질..
-
네트워크 기본 학습 - IP, NAT, 포트 포워딩스터디/인프라 2023. 11. 26. 23:43
IP란 무엇일까? IP는 Internet Protocol의 약자로 인터넷에 연결되어 있는 모든 장치들을 식별할 수 있도록 하는 각각의 장비에 부여하는 고유 주소이다. 이러한 IP들은 공인 IP와 사설 IP로 분류할 수 있다. 공인 IP 공인 IP는 인터넷 업체가 사용자에게 할당하는 주소이며, 고유한 외부 IP주소이다. 이는 사용자의 전체 네트워크에 적용되기 때문에 공용 IP 주소라고도 불린다. 사설 IP 사설 IP 주소란 어떤 네트워크 안에서만 사용되는 내부적인 주소이다. 예를 들어, 특정 공유기는 공인 IP를 가지고 있지만, 해당 공유기에 연결되어 있는 가정이나 회사의 각 네트워크 기기는 사설 IP를 가지고 있다. 사설 IP는 특정 네트워크 안에서만 사용되기 때문에 네트워크 내에서 중복되지 않아야한다...
-
ThreadLocalRandom을 왜 사용해야할까?스터디/JAVA 2023. 11. 1. 23:51
Random 클래스가 난수를 생성하는 방법Random 클래스는 시드를 기반으로 난수를 생성합니다. 즉, 동일한 시드를 사용하면 동일한 난수를 반환합니다.하지만 난수라는 개념 자체가 예측할 수 없는 값을 의미하므로, 동일한 시드에서 동일한 난수를 반환하는 것은 진정한 난수 생성과는 다소 거리가 있습니다. 이를 해결하기 위해, Random 클래스는 한 번 사용한 시드를 바탕으로 새로운 시드(newSeed)를 생성하여 다음 난수의 기반이 되도록 합니다.protected int next(int bits) { AtomicLong seed = this.seed; long oldseed; long nextseed; do { oldseed = seed.get(); next..
-
CPU의 성능에 영향을 끼치는 것들스터디/컴퓨터구조와 운영체제 2023. 9. 19. 11:08
CPU는 컴퓨터 부품중 제일 중요한 부품입니다. 따라서, CPU의 성능을 아는 것이 중요합니다! 이번 포스팅에서는 CPU의 성능에 대해서 알아보겠습니다. CPU의 성능에 영향을 미치는 것에는 크게 3가지가 있습니다. 1. 클럭 2. 코어 3. 스레드 클럭수를 빠르게! CPU의 속도를 빠르게 만들어보자! 컴퓨터에선 클럭 신호(Clock Signal)를 통해서 시간을 구분할 수 있는데, 컴퓨터 부품들은 이 클럭 신호에 맞춰 움직인다. 따라서, 클럭 신호를 빠르게 만들어 버리면 연산 속도가 빨라지게된다. 하지만, 연산 장치가 너무나도 빨라져버리면 컴퓨터에서 수행하는 작업들은 꼬이게 되고, 발열 문제도 발생할 수 있다. 즉, 적당히 빠른 클럭 신호면 CPU가 빨라진다. 클럭 속도 클럭 속도 : 헤르츠(Hz) 단..
-
인터럽트가 발생한다면, CPU는 어떻게 처리할까??스터디/컴퓨터구조와 운영체제 2023. 9. 14. 20:24
아마 이 포스팅의 제목을 보고 "인터럽트가 발생한다"라는 문장에서 아래와 같은 점들이 궁금했을 것이다. 첫째로, 인터럽트란 무엇인가? 둘째로, 인터럽트는 어디에서 발생하는 것인가? 인터럽트가 뭐야? 인터럽트란 컴퓨터가 작업을 수행하던 도중 예기치 못한 특수한 상황이 발생하여 작업을 중단하고, 특수한 상황을 먼저 처리한 후 원래의 작업으로 되돌아가 나머지 작업을 계속 수행하게 되는 일련의 과정이다. 필자는 인터럽트의 개념에서 3가지가 궁금했다. 첫째로, 특수한 상황은 무엇일까?? 둘째로, 원래의 작업으로는 어떻게 되돌아가는 것일까?? 마지막으로, 인터럽트가 발생하고 처리하는 일련의 과정의 순서는 어떻게 되는 거야?? 특수한 상황 "특수한 상황은 무엇일까??" 이 질문은 필자가 처음에 궁금해했던 인터럽트는 ..