본문 바로가기

전체 글218

Forward Proxy VS Reverse Proxy 프록시프록시 서버는 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템(응용 프로그램)이다.  Proxy = 대리> 서버와 서버 사이의 중계기 역할  프록시: 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것프록시 서버: 중계 기능을 하게 하는 것  프록시 사용 이유보안상의 이유로 직접 통신할 수 없을 때 대리로 통신을 수행하여 보안, 성능 및 안정성을 향상 시키기 위함이다. 1) 익명으로 컴퓨터 네트워크 이용프록시 서버를 이용하면 프록시 서버가 대신 리소스를 요청하기 때문에 익명으로 네트워크를 이용할 수 있다.> 클라이언트의 IP가 아닌 프록시 서버의 IP 주소로 요청되기 때문이다. 2) 네트워크 서비스 제공을 제한 또는 관제하기 위함게이트웨이에.. 2025. 2. 26.
[이펙티브 코틀린] 아이템46: 함수 타입 파라미터를 갖는 함수에 inline 한정자를 붙여라 1. 고차 함수다른 함수를 인자로 받거나 함수를 반환하는 함수코틀린에서 람다나 함수 참조를 사용해 함수를 값으로 표현할 수 있음 2. 고차 함수와 inline 의 필요성코틀린에서는 람다 표현식이 객체로 변환되므로 성능 및 메모리 측면에서 오버헤드 발생할 수 있음이를 최적화하기 위해 inline 키워드를 사용하면 성능이 향상 3. 인라인 함수 (inline)컴파일 시점에 함수의 호출 코드가 해당 위치로 직접 복사되는 함수이를 통해 함수 호출 오버헤드를 줄이고, 람다 객체 생성을 방지하여 성능을 최적화 할 수 있음 noInlineTest는 객체를 생성inlineTest는 객체를 생성하지 않고 코드가 직접 삽입되어 실행 속도가 훨씬 빠름 4. reified 키워드기본적으로 JVM의 제네릭은 타입 소거(Type.. 2025. 2. 20.
[이펙티브 코틀린] 아이템43: API의 필수적이지 않는 부분을 확장 함수로 추출하라 클래스의 메서드를 정의 할 때, 메서드를 아래 중 어떤 것으로 정의할 것인지 결정해야 한다.멤버로 정의할 것인가?확장 함수로 정의할 것인가? 1) 멤버 함수 (Member Function)클래스 내부에서 직접 정의된 메서드해당 클래스에 종속됨클래스 인스턴스를 통해 호출됨class Workshop(/*...*/) { // ... fun makeEvent(data: DateTime): Event = // ... val permalink get() = "/workshop/$name"} 2) 확장 함수 (Extension Function)기존 클래스의 기능을 확장하는 함수클래스 외부에서 정의됨클래스 내부 멤버처럼 사용할 수 있지만, 실제로는 첫 번째 매개변수로 리시버 객체를 받는.. 2025. 2. 18.
[이펙티브 코틀린] 아이템40: equals의 규약을 지켜라 코틀린의 Any에는 다음과 같이 잘 설정된 규약들을 가진 메서드들이 있다.equalshashCodetoString'아이템 32: 추상화 규약을 지켜라' 에서 자깐 hashCode와 equals가 언급되었다.이번엔 지난번에 언급된 equals에 대하여 더 깊이 그리고 많이 언급하고 있다. 동등성코틀린에는 두 가지 종류의 동등성이 있다. 1) 구조적 동등성equals 메서드와 이를 기반으로 만들어진 == 또는 != 연산자로 확인하는 동등성이다.a가 nullable이 아니라면 a == b a.equals(b)로 변환되고, a가 nullable이라면 a?.equals(b) ?: (b === null)로 변환된다. 2) 레퍼런스적 동등성=== 또는 !== 연산자로 확인하는 동등성이다.두 피연산자가 같은 객체를 가.. 2025. 2. 10.
[DynamoDB] 개념 및 사용 방법 아마존 DynamoDB는 key-value 및 document 자료 구조를 지원하는 NoSQL 데이터베이스이며, AWS에서 제공하고 있다.DynamoDB는 다이나모라는 스토리지 시스템의 이름에서 파생된 유사 데이터 모델을 노출하지만 기반이 되는 구현체는 다르다. 다이나모 스토리지란?더보기다이나모 스토리지: 아마존의 고가용성 키-값 저장소 시스템으로 다이나모DB의 서비스 기반특징- 높은 수준의 가용성 제공- SSD 스토리지에 저장- 지리적으로 나누어진 데이터센터에 분산저장- 대규모 성능 제공- 거의 무제한의 처리량 및 스토리지 제공 여기까지가 위키에 나와있는 내용 중 간단한 내용이며, 아래에서 몇가지 개념적인 내용을 살펴보려고 한다. 1. 소개 (Amazon DynamoDB 홈페이지 자료)작동 방식- 모든.. 2025. 2. 8.
[이펙티브 코틀린] 아이템32: 추상화 규약을 지켜라 본 챕터는 '규약은 개발자들의 단순한 합의' 라는 내용으로 시작한다.규약이란 것은 한쪽이 위반할 수도 있으며, 기술적으로는 모든 부분에서 규약 위반이 발생할 수도 있다. 규약을 위반한 코드는 시한 폭탄을 설치한 것과 같으며, 코드가 작동을 멈췄을 때 문제가 된다. 상속된 규약규약을 반드시 지켜야 하는 경우는 1) 클래스 상속, 2) 다른 라이브러리의 인터페이스 구현을 하게되는 시점이다. 예를 들어 모든 클래스는 equals, hashCode 메서드를 가진 Any 클래스를 상속 받는데, 이러한 메서드는 지켜야하는 규약을 가지고 있다.만약 hashCode가 제대로 구현되지 않으면, HashSet과 함께 사용할 때 제대로 동작하지 않는다. 아래 코드에서 보여주는 바는 equals가 제대로 구현되지 않았을 경우.. 2025. 2. 3.