전체 글(548)
-
CORS : Non-Simple Request / Simple Request
📌 CORS: Simple Request와 Non-Simple Request의 차이점1. CORS란? 🛡️CORS(Cross-Origin Resource Sharing)는 웹 애플리케이션이 다른 출처(origin)에서 리소스를 요청할 수 있도록 허용하는 보안 메커니즘입니다. 보안 정책의 일환으로, 브라우저는 동일 출처 정책(Same-Origin Policy)을 디폴트로 적용하지만, 특정 조건을 충족하면 교차 출처 요청을 허용할 수 있습니다.CORS는 서버가 특정 출처에서 오는 요청을 허용할지 결정하는데, 이때 Simple Request(단순 요청)과 Non-Simple Request(비단순 요청)을 구분하여 다르게 처리합니다. 🚀 2. Simple Request(단순 요청) 🟢✅ Simple Re..
2023.06.20 -
ours merge strategy
🔀 Git의 ours merge 전략Git은 복잡한 브랜치 전략을 유연하게 관리할 수 있는 강력한 도구입니다. 그중 ours 병합 전략은 일반적인 병합과는 다른 의도적인 무시 전략을 사용합니다. 이 글에서는 ours 전략의 철학, 내부 동작 방식, 실전 예제, 오용 방지 팁까지 상세하게 다룹니다. 🧠 1. ours 전략이란?✔ 정의:ours 병합 전략은 충돌이 발생하더라도 "현재 브랜치의 내용만 유지하고 상대 브랜치의 변경 사항은 무시"하는 전략입니다.즉, 병합 대상 브랜치에서 어떤 내용이 변경되었든 간에, 현재 체크아웃된 브랜치의 변경 내용만을 정답으로 간주합니다. 🧪 2. 내부 동작 방식병합 기본 구조:병합(Merge)은 Git이 아래 3개의 커밋을 기준으로 3-way merge를 수행하는 과정..
2023.06.20 -
Lesson: Generics[Type Erasure]
Type Erasure제네릭은 컴파일 타임에 더 엄격한 타입 체크를 제공하고 제네릭 프로그래밍을 지원하기 위해 Java 언어에 도입되었습니다. 제네릭을 구현하기 위해 Java 컴파일러는 타입 소거(Type Erasure)를 다음에 적용합니다:제네릭 타입에 제한[bounds] 있다면 제한 타입으로, 만약 타입 파라미터가 제한이 없다면 Object로 대체합니다. 따라서 생성된 바이트코드는 일반 클래스, 인터페이스, 메서드만을 포함합니다.타입 안전을 유지하기 위해 필요한 경우 타입 캐스트를 삽입하십시오.확장된 제네릭 타입에서 다형성을 유지하기 위해 브리지 메서드를 생성합니다.타입 소거는 파라미터화된 타입에 대해 새 클래스가 생성되지 않도록 합니다. 결과적으로 제네릭은 런타임 오버헤드를 발생시키지 않습니다.파라..
2023.06.18 -
Lesson: Generics[Wildcards, Wildcard Capture]
Wildcards일반 코드에서 와일드카드라고 하는 물음표(?)는 알 수 없는 타입을 나타냅니다. 와일드카드는 다양한 상황에서 사용할 수 있습니다. 때로는 리턴 타입으로 사용됩니다(좀 더 구체적으로 프로그래밍하는 것이 더 나은 방법이긴 하지만). 와일드카드는 제네릭 메서드 호출, 제네릭 클래스 인스턴스 생성 또는 상위 타입에 대한 타입 아규먼트로 사용되지 않습니다. 다음 섹션에서는 상한 와일드카드(Upper Bounded Wildcards)하한 와일드카드(Lower Bounded Wildcards)와일드카드 캡처(Wildcards Capture)를 포함하여 와일드카드에 대해 자세히 설명합니다.※ "와일드카드 ?는 타입 아규먼트로 사용되며, → 그 목적은 파라미터화된 타입의 타입 아규먼트에 대한 제약(bou..
2023.06.17 -
Lesson: Generics[Type Inference, Target Types]
Type Inference타입 유추는 메서드 호출에 적용할 수 있는 타입 아규먼트(또는 아규먼트)를 결정하기 위해 해당 메소드 호출 및 해당 메서드 선언을 살펴보는 Java 컴파일러의 기능입니다. 추론 알고리즘은 타입 아규먼트의 타입과 (가능한 경우)리턴되는 타입을 결정합니다. 마지막으로 추론 알고리즘은 모든 아규먼트와 함께 작동하는 특정 타입을 찾으려고 시도합니다. 이 마지막 요점을 설명하기 위해 다음 예제에서 타입 추론은 pick 메서드에 전달되는 두 번째 아규먼트가 Serializable 유형임을 확인합니다.static T pick(T a1, T a2) { return a2; }Serializable s = pick("d", new ArrayList()); Type Inference and Gen..
2023.06.17 -
Lesson: Generics
Why Use Generics?간단히 말해서, 제네릭은 클래스, 인터페이스 및 메서드를 정의할 때 타입(클래스 및 인터페이스)을 파라미터로 사용할 수 있습니다. 메서드 선언에 사용되는 더 친숙한 formal 파라미터와 마찬가지로, 타입 파라미터는 다른 입력으로 동일한 코드를 재사용할 수 있는 방법을 제공합니다. 차이점은 formal 파라미터에 대한 입력은 값인 반면, 타입 파라미터에 대한 입력은 타입이라는 것입니다. 제네릭을 사용하는 코드는 제네릭이 아닌 코드에 비해 많은 이점이 있습니다:컴파일 시간에 더 강력한 타입 검사. 자바 컴파일러는 제너릭 코드에 강력한 타입 검사를 적용하고 코드가 타입 안전을 위반하는 경우 오류를 발행합니다. 컴파일 타임 오류를 수정하는 것은 찾기 어려울 수 있는 런타임 오류를..
2023.06.17