본문 바로가기

전체 글408

[Java] 가변성 (feat. Generic) 🙋 들어가며 제네릭에 대해서 자세하게 공부를 하다가 가변성(variance)에 대해서 알게 되었습니다. 어떤 종류가 존재하는지 알아보고, 왜 이런 개념이 있는지 알아보겠습니다. 제네릭을 위해서 다루는 내용이므로 이해가 어렵다면 해당 글에서 예시를 통해 다뤄보도록 하겠습니다. 🔄 가변성이란? 이름에서 예상할 수 있듯이 가변성이란, 특정 타입의 객체를 다른 타입의 객체로 변환할 수 있음을 말합니다. 반대의 개념은 불변성으로, 무공변(Invariance)으로도 부릅니다. 여기서 가변성은 공변과 반공변 두가지가 존재합니다. 어떤 객체 a와 b에 대해서, a가 b로 변환할 수 있다고 가정하겠습니다. 그러면 다음과 같이 총 3가지로 가변성과 불변성을 구분할 수 있습니다. 공변(covariant) : Box를 B.. 2023. 7. 5.
Http&Network Basic : HTTP에 기능을 추가한 프로토콜 (9장) 📞 HTTP에 기능을 추가한 프로토콜 9.1 HTTP를 기본으로 하는 프로토콜 최초에는 단순히 문서를 전송하는 프로토콜로 생각했었다, 너무 널리 HTTP가 퍼졌기 때문에 새로운 프로토콜을 만들기는 어렵다. 따라서, 기능을 추가하는 형태로 다양한 요구사항을 만족하고 있다. 9.2 HTTP의 병목 현상을 해소하는 SPDY Google이 발표한 프로토콜이다. 웹 페이지 로딩을 50% 단축하게 목표이다. 병목 현상을 해결하는 좋은 기술이지만 웹의 문제는 그 외에서도 발생한다. 9.2.1 HTTP의 병목 현상 SNS와 같이 큰 트래픽에 대해서 HTTP는 잘 처리할 수 없다. 다음 HTTP의 사양이 병목 현상의 원인이다. 1개의 커넥션에는 1개의 리퀘스트. 리퀘스트는 클라이언트에서만 시작할 수 있다. (리스폰스만 .. 2023. 7. 4.
Http&Network Basic : 누가 엑세스하고 있는지를 확인하는 인증 (8장) 🤷‍♂️ 누가 액세스하고 있는지를 확인하는 인증 8.1 인증이란? 실제로 누가 접근하려고 하는건지 알 수가 없다. 따라서, 등록한 본인만 아는 정보, 등록한 본인만 가진 정보로 확인해야 한다. 이런 정보는 보통 비밀번호, 일회성 토큰, 전자 증명서, 바이오 매트릭스, IC 카드를 사용한다. 앞으로 설명할 인증 방법 외에도 Windows 인증 등도 존재한다. 8.2 BASIC 인증 HTTP/1.0에서 구현된 인증 방식이다. 웹 서버와 대응하는 클라이언트 사이에서 이루어지는 인증 방식이다. Base64라는 인코딩을 사용하지만 암호화 자체는 아니기에 보안성이 떨어진다. 8.2.1 인증 절차 요청에 인증이 필요하면 서버는 401 상태코드로 응답한다. 클라이언트는 아이디:패스워드를 Base64로 인코딩하고 Aut.. 2023. 7. 4.
Http&Network Basic : 웹을 안전하게 지켜주는 HTTPS (7장) 🌐 웹을 안전하게 지켜주는 HTTPS 7.1 HTTP의 약점 7.1.1 평문이기 때문에 도청 가능 HTTP는 암호화하는 기능이 없다. TCP/IP는 통신 경로 상 모든 기기를 소유할 수 없기 때문에 도청이 가능하다. 패킷을 수집함으로 도청을 할 수 있다. 이때, 패킷 캡처나 스니퍼라는 툴을 사용한다. 암호화를 통해서 도청을 방지한다. 통신 암호화 : SSL, TLS이라는 다른 프로토콜을 조합해 안전한 통신로를 확보하고 통신한다. 콘텐츠 암호화 : 콘텐츠 자체를 암호화한다. 주로 웹 서비스에서 이용되는 방법이다. 7.1.2 통신 상대를 확인하지 않기 때문에 위장 가능 HTTP 통신은 상대를 확인하지 않는다. 누구나 요청할 수 있기 때문에 서버는 모두 응답한다. SSL은 암호화도 지원하지만 상대를 확인하는 .. 2023. 6. 27.
[Java] Optional 바르게 사용하기 🙋 들어가며 자바 기반의 백엔드 개발자가 Optional을 제대로 접하는 순간은 JPA의 query method를 사용할 때라고 생각합니다. Optional이 사용하기 편한 객체이지만 사용할 때 주의점을 요합니다. 이 글에서는 Optional에 대한 저의 고찰과 올바르게 사용하는 방법에 대해 이야기해 보겠습니다. 🧐 Optional의 목적 모든 사물들은 각자에게 주어진 알맞은 쓰임이 존재합니다. 예를 들어서, 책은 읽기 위해서 존재합니다. 라면 받침으로 쓰는 것은 본디 목적을 잃는 것입니다. (물론 라면 받침으로 씁니다) 그렇다면 Optional의 쓰임은 무엇일까요? 자바 설계자가 언급한 의도를 가져왔습니다. Our intention was to provide a limited mechanism for .. 2023. 6. 22.
TIL : import문이 빨갛게 되고 import가 안되는 문제 고치기 (IntelliJ) (23) 🏛️ IntelliJ 가끔 인텔리제이를 사용하다가 import문이 고장 나는 경우가 있습니다. 다음과 같이 말이죠 🥹🥹 어김없이 구글링을 통해서 해결하려고 신나게 찾아다녔습니다. 다행히도 결과는 많았습니다. 캐시도 비워보고, JDK도 확인해보고 프로젝트도 리빌드를 해보았지만 어떤 방법도 통하지 않았습니다. 🥹🥹 한참을 뻘짓하다가 기능을 하나 찾았습니다! 다행히도 IDE 자체에서 고장을 고치는 기능이 있었습니다. File > Repair IDE 탭에서 찾을 수 있는 기능입니다. 😎😎 저같은 문제를 겪으신 분이 있다면 이 기능을 한번 꼭 써보시기 바랍니다 ㅎㅎ😋😋 😋 지극히 개인적인 블로그지만 훈수와 조언은 제 성장에 도움이 됩니다 😋 2023. 6. 21.