본문 바로가기

Back-end

(90)
[Java] String = " " VS new String(" ") new 연산자 생성 Heap 영역 존재 String hobi = new String("hobi"); 문자열 리터럴 생성 string constant pool 영역 존재 String hobi = "hobi"; 참고: https://haenny.tistory.com/18 참고: https://ict-nroo.tistory.com/18
[TDD] Junit5 TDD https://subji.github.io/posts/2020/06/23/tdd-java-2 TDD(Test Driven Development) - JUnit 5 (2) 아래 내용은 ‘테스트 주도 개발: TDD 실천법과 도구’(https://repo.yona.io/doortts/blog/issue/1)를 보고 주요 내용을 개인적으로 정리하여 작성했습니다. subji.github.io
[Java] Wrapper class 기본 자료형을 객체 타입의 자료형으로 변환이 필요할 때 주로 사용한다. 사용 이유 객체로 저장해야할 경우 매개변수로 객체가 요구될 경우 (ex. 제네릭, collection의 타입) 제네릭이나 컬렉션에서 사용할 경우, 기본형을 쓸 수 없기 때문에 이를 Wrapping한 형태를 사용해야함 특징 산술 연산을 위한 클래스가 아니기 때문에 Immutable 함 (불변) 값에 대한 변경은 불가하고 새로운 값(객체)의 할당이나 참조만 가능 Boxing : 기본 자료형 -> Wrapper Class UnBoxing : Wrapper Class -> 기본 자료형 기본 타입(primitive type) -> 래퍼 클래스(Wrapper Class) byte -> Byte short -> Short int -> Intege..
TCP 3, 4-way handshake TCP 3-way handshake는 TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정 클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정입니다. SYN, ACK 패킷을 주고 받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에는 1을 더한 값을 전송합니다. 정확한 순서는 SYN(n) -> ACK(n+1) , SYN(m) -> ACK(m+1) 순으로 일어납니다. 왜 임의의 난수를 지정하는지는, 기존 요청과 구분하기 위해서 입니다. TCP 4-way handshake는 TCP 연결을 해제(Connection Termination)하는 단계입니다. FIN(finish): 세..
[AWS] SNS Amazon SNS 발행자에게서 구독자 (혹은 생산자에게서 소비자 라고도 함) 에게 메시지 전달 기능을 제공하는 관리 서비스입니다. 발행자는 비동기적으로 '토픽'에 메시지를 전송하는 방법으로 구독자와 통신합니다. 이 토픽은 논리적인 액세스 포인트와 소통 채널을 의미합니다. 고객은 특정 SNS 토픽에 구독하고 발행된 메시지를 지원되는 프로토콜을 통해 받을 수 있다. 이 프로토콜은 Amazon Kinesis Data Firehose, Amazon SQS, AWS Lamdba, HTTP, email, 모바일 푸시알람, 모바일 메시지(SMS) 등이 있습니다. 관련 서비스들 Amazon SQS 전달되지 못한 메시지에 대해 dead letter queue 를 제공합니다. SNS 토픽에 SQS queue를 구독할 수..
[Java] Checked Exception 과Unchecked Exception 둘의 차이는 RuntimeException을 상속하는가 여부에 따라 다릅니다. RuntimeException을 상속하면 UncheckedException이 됩니다. 스프링 트랜잭션 추상화(@Transactional)에서 rollback 대상은 바로 UncheckedException 입니다. 예외(Exception) java.lang.Exception 클래스의 서브 클래스들은 Error와 달리 애플리케이션 코드에서 예외가 발생하였을 경우에 사용된다. 그리고 Exception은 다시 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception)로 구분된다 체크 예외(Check Exceptioin) 체크 예외는 RuntimeException 클래스를 상속하지 않은 Except..
[Java] equals() 와 hashCode() equals() equals() 는 보통 동일한 객체인지 확인할 때 사용한다. 항상 그런 것은 아니고 String 의 경우 문자열이 동일한 지 확인할 때 사용함 // Object의 기본 equals 메서드 public boolean equals(Object obj) { return (this == obj); } hashCode() int hashCode()로 정의된 hashCode 메소드는 실행 중에 (Runtime) 객체의 유일한 integer 값을 반환한다. Object 클래스에서는 heap에 저장된 객체의 메모리 주소를 반환하도록 되어있다. (항상 그런 것은 아니다.) native 언어로 작성된 메소드로 구체적인 내부 구현부는 확인하기 어렵지만, 객체의 해시 값을 반환한다고 주석에 명시 되어 있음 ..
SEDA(Staged Event-Driven Architecture) SEDA(Staged Event-Driven Architecture)란? 단계별 이벤트 드리븐 아키텍처 큐로 연결된 스테이지에서 복잡한 이벤트 드리븐 어플리케이션을 작은 부분으로 나누는 것 스레드 기반 동시 운영 모델과 연관돼 발생할 수 있는 높은 오버헤드를 피할 수 있음 각각의 이벤트 큐로 실행함으로써, 서비스는 좋은 컨디션으로 유지가 가능함 서비스의 능력에 비해 리소스들이 과도하게 커밋되는 것을 막아주는 역할을 함 막대한 서버 접속 수요를 지원하며, 서비스 구축을 보다 간편하게 만들어 줌 SEDA에서의 최소 단위는 Queue 서버 이슈 동시에 많은 사용자에게 서비스를 제공 - 스레드 기반 모델: 개발이 용이하지만, 오버헤드가 큼 - 이벤트 기반 모델: 성능이 뛰어나지만, 프로그램의 복잡성이 높음 순간..