본문 바로가기

개인공부43

[Java] 올바른 Collection 선택하기 🙋 들어가며 물건을 담을 수 있는 그릇의 종류는 다양합니다. 데이터 세계에서 그릇을 자료 구조(Data Structure)라고 표현합니다. 자바에서도 다양한 자료 구조를 제공합니다. 이번 글을 통해서 상황에 맞게 사용하는 방법을 알아보겠습니다. 🗂️ Java Collection Framework 자바에서 제공하는 다양한 자료 구조들의 모음을 Collection이라고 부릅니다. 다양한 인터페이스와 클래스들의 집합이며, 자바에서는 Collection 외에도 배열이라는 구조도 제공합니다. Collection 인터페이스를 상속받는 주요 인터페이스는 다음과 같습니다. List 인터페이스 Set 인터페이스 Queue 인터페이스 Map 인터페이스는 구조상의 차이로 별도로 정의되지만 동일하게 Java Collectio.. 2023. 8. 9.
[Java] equals()와 hashCode()를 같이 재정의하자! 🙋 들어가며 오늘은 자바의 최상위 객체 Object에 equals()와 hashCode()에 대해서 이야기해 보겠습니다. 이번 글을 통해서 각 메서드를 언제, 어떻게 사용하는지 알아보고 왜 두 메서드를 같이 재정의해야 하는지 알아보겠습니다. 🟰 equals() 문자열을 비교할 때 많이 사용하는 친숙한 메서드입니다. 이 메서드를 왜 사용하는지 이해하기 위해서는 동일성과 동등성의 개념을 알아야 합니다. 간단하게 정리하면 다음과 같습니다. 그리고 이해를 위한 예시를 작성해 보겠습니다. 동일성(identity) : 같은 참조를 가진다. 동등성(equality) : 같은 값을 가진다. String str1 = new String("hejow"); String str2 = new String("hejow"); Sy.. 2023. 7. 20.
Http&Network Basic : 웹 공격 기술 (11장) 🔪 웹 공격 기술 11.1 웹 공격 기술 웹 애플리케이션 등의 리소스가 주요 타겟이다. HTTP에는 보안 기능이 없어 애플리케이션에서 모두 구현해야 한다. 변조가 가능한 요청에 공격 코드를 실어서 공격한다. 11.1.1 웹 애플리케이션에 대한 공격 패턴 공격 패턴은 능동, 수동 두 가지가 존재한다. 능동적 공격은 서버를 노리는 공격이다. 리소스에 대해 직접 실행된다. 대표적인 케이스는 SQL 인젝션과 OS 커맨드 인젝션 등이 있다. 수동적 공격은 유저를 노리는 공격이다. 함정을 이용해 유저가 공격 코드를 실행하도록 한다. 대표적인 케이스는 XSS, cross-site scripting, CSRF, Cross Site Request Forgery 등이 있다. 11.2 출력 값의 이스케이프 미비로 인한 취약.. 2023. 7. 11.
Http&Network Basic : 웹 콘텐츠에서 사용하는 기술 (10장) 😜 웹 콘텐츠에서 사용하는 기술 10.1 HTML HTML은 웹 상에서 하이퍼텍스트를 보내기 위해서 개발된 언어이다. HTML 태그로 문서를 수식한다. CSS는 보이는 외관을 변경한다. 10.2 다이나믹 HTML 정적인 HTML에서 클라이언트 사이드 스크립트를 사용해 동적으로 변경하는 기술이다. DOM을 통해서 HTML 문서를 동작시킬 수 있다. 10.3 웹 애플리케이션 웹 기능을 사용해서 제공되는 프로그램을 지칭한다. 이런 프로그램으로 생성된 콘텐츠를 동적 콘텐츠, 사전에 준비된 것은 정적 콘텐츠라고 부른다. CGI는 웹 서버가 클라이언트에서 받은 요청을 프로그램에 전달하기 위한 구조이다. 10.4 데이터 송신에 이용되는 포맷이나 언어 XML은 목적에 맞게 확장 가능한 마크업 언어로 데이터 공유에 목적.. 2023. 7. 11.
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.