CS 45

[Web] 쿠키(Cookie) & 세션(Session)

쿠키와 세션을 사용하는 이유? HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용된다. 기본적으로 HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야 한다. 이 특성을 보완하기 위해서 쿠키와 세션을 사용하게 된다. connectionless 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징 HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다. 헤더에 keep-alive라는 값을 줘서 커넥션을 재활용하는데 HTTP1.1에서는 이것이 디폴트다. HTTP가 tcp위에서 구현되었기 때문에 (tcp는 연결지향..

CS/Web 2023.01.01

[Web] 브라우저 동작 방법

주소창에 https://www.naver.com 혹은 https://www.youtube.com 등 다양한 URL을 검색하여 해당 웹 페이지에 접속한 경험이 있을 겁니다. 이 url이 입력되었을 때 어떤 과정을 거쳐서 출력되는걸까? 브라우저 주요 기능 사용자가 자원을 서버에 요청하고 요청한 자원(웹 페이지)을 브라우저에 표시하는 것 웹 브라우저가 웹서버에 웹 페이지를 달라고 하는것 : 요청(request) 요청한 웹 페이지를 웹 브라우저에 제공하는 것 : 응답(response) 보통 자원은 HTML 문서지만 PDF, 이미지 등 다양한 형태일 수 있다. 자원의 주소는 URI에 의해 정해진다. 웹 브라우저의 종류는 다양하다. 크롬, 네이버 웨일, 파이어폭스, 사파리 등이 대표적인 예이다. 웹 브라우저의 주요..

CS/Web 2023.01.01

[Java] 자바 스트림(JAVA Stream)

※ Java 8버전 이상부터 Stream API 지원 스트림 Streams이란? 람다를 활용할 수 있는 기술 중 하나. ※ Java 8 이전 배열 또는 컬렉션 인스턴스를 다루는 방법 : for 또는 foreach 문을 돌면서 요소 하나씩을 꺼내서 다루는 방법 문제는? → 간단한 경우라면 상관없지만, 로직이 복잡해질수록 코드의 양이 많아져 여러 로직이 섞이게 되고, 메소드를 나눌 경우 루프를 여러 번 도는 경우가 발생 반면, 스트림은 '데이터의 흐름’이다. → 컬렉션에 저장되어 있는 엘리먼트들을 하나씩 순회하면서 처리할 수 있는 코드 패턴. → 람다식과 함께 사용되어 컬렉션에 들어있는 데이터에 대한 처리를 매우 간결한 표현으로 작성 가능. → 내부 반복자를 사용하기 때문에 병렬처리가 쉽다. ※ 병렬처리 :..

CS/Java (CS) 2022.12.27

[Java] 직렬화(Serialization)

직렬화(Serialization)란? 자바 시스템 내부에서 사용되는 객체(Object) 또는 데이터(Data)를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술 ※ 쉬운 설명 ● 데이터 직렬화 → 메모리를 디스크에 저장하거나, 네트워크 통신에 사용하기 위한 형식으로 변환하는 것 (자바의 객체를 바이트의 배열(byte[])로 변환) ● 데이터 역직렬화 → 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환하는 것 (저장된 것을 다시 객체(Object)로 변화) 직렬화를 하는 이유? → 직렬화가 된 데이터는 언어에 따라서 텍스트 또는 바이너리 등의 형태가 되는데, 이는 파일 저장이나 네트워크 전송 시 파싱이 가능한 유의미한 ..

CS/Java (CS) 2022.12.24

[Java] Thread 활용

이전 주제들 클린코드 & 리팩토링 & 시큐어코딩 객체지향 프로그래밍 (OOP) 테스트 주도 개발 (TDD) String, StringBuffer, StringBuilder 타입변환 Casting (업캐스팅 & 다운캐스팅) 오토 박싱 & 오토 언박싱 설명이 잘 되어있는 블로그! https://connie.tistory.com/12 Thread (스레드)란? 운영체제나 JVM에서 태스크(작업)을 실행하는 단위 → 하나의 스레드는 하나의 작업밖에 수행할 수 없다. ※ Java에서 스레드(Thread)란 무엇인가? → 스레드를 사용하기 전 기존 자바에서는 car.open(); car.entrance(); 이렇게 코드 두 줄이 있다고 하면 car.open()을 수행한 후에 car.entrance();를 수행하게 ..

CS/Java (CS) 2022.12.21