백엔드 개발자라면 대답해야 할 100가지 질문22 22. 세션의 동작 과정 21. 세션과 쿠키의 차이점을 알아봤다. HTTP가 기본적으로 stateless하니 클라이언트의 정보를 저장하기 위해서 두 가지 전략이 생겨났고 클라이언트에 클라이언트의 상태를 저장하는 것을 쿠키, 서버가 클라이언트의 상태를 저장하는 것을 세션이라고 불렀다. 이번엔 세션의 동작 과정을 알아보자. 세션 생성사용자가 웹사이트를 방문하여 아이디, 비밀번호 등의 인증정보를 통해 사용자 정보를 확인받으면 서버는 그 사용자를 위한 새로운 세션을 생성한다. 이 때, 서버는 고유한 세션 ID를 생성하여 클라이언트에게 전달한다. 세션 ID는 일반적으로 쿠키를 통해 클라이언트에게 저장된다.세션 저장서버는 세션 ID를 키로 사용하여 세션 데이터를 서버 측 저장소에 저장한다. 세션 데이터에는 사용자의 로그인 상태, 장바구니 .. 백엔드 개발자라면 대답해야 할 100가지 질문 2024. 6. 27. 21. 세션과 쿠키의 차이점 Web 생태계에서 HTTP 프로토콜은 상태를 유지하지 않는다는 특성 때문에 사용자의 상태를 유지하기 위한 수단으로 오랜 기간 사용되었던 것은 세션과 쿠키이다. 사용자는 웹 애플리케이션을 사용하는 동안 정보를 계속 유지하거나 전달할 수 있다. 유사한 목적을 가지고 사용되는 세션과 쿠키가 어떤 차이점을 가지는 지 알아보자. 1. 저장 위치 세션은 서버 측에 데이터를 저장하는 기술이며, 주로 사용자의 상태를 유지하기 위해 세션 변수를 저장하는 데 활용된다. 사용자가 웹 페이지에 접속하면 서버는 해당 사용자에 대한 고유한 세션을 생성하고, 세션 변수에 정보를 저장하여 상태를 유지한다. 반면 쿠키는 클라이언트 측에 데이터를 저장하는 작은 텍스트 파일로, 사용자의 브라우저에 저장됩니다. 쿠키는 주로 사용자가 웹 사.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 12. 14. 20. JSP 기본 객체 JSP는 9개의 내장 객체를 기본으로 가지고 있다. 아래는 그 종류와 설명에 대한 나열이다. 기본 객체 실제 타입 설명 기본 객체 실제 타입 설명 request javax(jakarta).servlet.http.HttpServletRequest 클라이언트의 요청정보 저장 response javax.servlet.http.HttpServletResponse 응답정보 저장 pageContext javax.servlet.jsp.PageContext JSP 페이지의 정보 저장 session javax.servlet.http.HttpSession HTTP 세션 정보 저장 application javax.servlet.ServletContext 웹 애플리케이션 정보 저장 out javax.servlet.jspJsp.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 11. 19. Servlet과 JSP의 차이점 Servlet 서버에서 웹페이지를 동적으로 생성하거나 데이터 처리 수행을 위한 자바로 작성된 프로그램이다. servlet은 java 코드 안에 HTML 태그가 삽입된 자바 언어로 되어있다. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public ThreeParams extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); printWriter out = response... 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 10. 18. Deep Copy vs Shallow Copy 알고리즘을 공부하며 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy), 이 둘의 차이점을 뼈저리게 느낀 JAVA 사용자가 꽤 많을 것이라 생각한다. 따라서 백 마디 말보다 코드 몇 줄이 더 효과적일 것이라는 생각으로 아래와 같은 코드를 작성하였다. List list = new ArrayList(); list.add(1); List copyList = list; copyList.add(2); System.out.println(list); System.out.println(copyList); /** * list : [1, 2] * copyList : [1, 2] */ 위와 같이 주소 값을 복사하는 의미로 Shallow Copy, 실제 값을 복사하는 의미로 Deep Copy를 구분하여 사용한.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 5. 17. 자바 리플렉션(reflection)이란 무엇인가? 자바 가상 머신(JVM)은 클래스 정보를 클래스 로더를 통해 읽어와 해당 정보를 JVM 메모리에 올린다. 해당 클래스의 정보를 담은 Class 타입의 객체를 생성하여 메모리의 Heap 영역에 저장해 두게 된다. ava에서는 이렇게 만들어진 Class 타입의 객체를 통해 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 하는 자바 API를 제공하게 된다. 저장된 클래스 정보는 마치 클래스를 거울 앞에 데려가 그 모습을 보여주는 것과 닮아, Reflection이라는 이름을 가지게 되었다. 한가지 특이한 점은 리플렉션은 접근 제어자와는 무관하게 클래스의 필드나 메서드를 호출할 수도 있다. 자바에 그런 것도 있었나? 사실 알게 모르게 우리는 Reflection을 사용하고.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 9. 26. 16.데몬 스레드는 무엇인가요? 멀티태스킹 운영체제에서 Daemon이란 “사용자가 직접 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 수행하는 프로그램”을 의미한다. 일반적으로 윈도우의 서비스나 네트워크 서비스 등을 처리하는 프로그램으로 이해할 수 있다. 🤔여담으로 Daemon의 유래는 과거 MAC 개발자들이 맥스웰의 도깨비 사고 실험(보이지 않는 곳에서 스스로 분자를 골라내는 일을 하는 도깨비)에서 영감을 얻어 도깨비, 악마라는 뜻의 Daemon을 사용했고, 유닉스 시스템이 이 용어를 채용하면서 굳어졌다 한다. 자바의 데몬 스레드 자바의 데몬 스레드도 위 설명과 유사하게 제어 없이도 백그라운드에서 동작하며 애플리케이션(Normal Thread)을 보조하는 역할을 수행하는 스레드이다. JVM이 가질 수 있는 쓰레드의 종류는 크게 N.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 9. 1. 15. 스레드와 프로세스 프로세스 일반적으로 디스크에 존재하는 “프로그램”을 실행시켜서 동작하게 만들면 하나의 “프로세스”가 프로그램의 인스턴스로 메모리에 올라간다. 이때 여러 프로그램을 실행시키는 것은 멀티 프로세스라고 한다. 우리가 컴퓨터를 하는데 보통 워드, 크롬, 웹엑스 등 여러 프로그램을 동시에 실행하는 것이 바로 멀티 프로세스이다. 하나의 프로세스는 내부에 논리적인 저장 공간으로 Code, Data, Stack, Heap 등의 자원과 여러 개의 스레드로 구성될 수 있다. 스레드는 프로세스의 자원을 이용해서 실제로 작업을 수행하는 역할을 한다. 따라서 모든 프로세스에는 최소한 하나의 스레드가 존재한다. 자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 진행하기 위.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 31. 14. JAVA 병렬과 동시성 자바의 멀티스레드 환경과 동시성 이슈를 알아보기 위하여 몇 가지 개념을 정리해보고자 한다. 동시성 이슈 어떤 두 사건이 같은 시간에 일어날 때 동일한 데이터를 조작하기 때문에 예상했던 결과가 달라질 수 있는 상황이다. 개발에서 주의해야 흔하게 발생할 수 있는 이슈 중 하나가 바로 동시성 이슈다. 동시성(Cocurrency) 여러 작업이 동시에 발생하는 것처럼 보이기 위해 번갈아 가면서(Context Switching) 작업을 수행하는 것이 동시성이다. 겉에서 보기엔 여러 작업이 동시에 실행되고 있는 것처럼 보이지만 실제로는 빠른 시간에 하나씩 번갈아가면서 처리하고 있다. 따라서 동시성은 구현도, 디버깅도 어렵다. 동시성의 목적은 자원의 유휴 시간을 최소화하는 것이다. 컴퓨터가 작동 가능한 상황에서도 아무.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 30. 13. Iterator의 자매품? Enumeration, ListIterator 자바 진영에서는 Collection Framework에 규정된 컬렉션에 저장된 원소 하나하나를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있다. 컬렉션 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메서드를 정의하고 있어 이를 통해 각각의 요소로 접근할 수 있다. 따라서 Collection 인터페이스를 상속받는 List, Set 인터페이스에서도 iterator() 메서드를 사용할 수 있다. Iterator란 무엇인가? 에서 다루었듯이 Iterator는 총 네가지 메서드(hasNext(), next(), remove(), forEachReaminaing())로 컬렉션을 모두 순회한다. 순회는 무조건 단방향으로만 반복가능하고 값을 변경하거나 .. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 10. 12. Iterator란 무엇인가? List list = new LinkedList(); Iterator iterList = list.iterator(); 자바에서 Iterator는 Collection Framework의 값을 조회, 삭제할 때 사용한다. 위와 같은 방식으로 Iterator 참조변수 = 컬렉션.iterator();로 선언하여 사용한다. Iterator Interface public interface Iterator { boolean hasNext(); E next(); default void remove() { throw new UnsupportedOperationException("remove"); } default void forEachRemaining(Consumer 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 8. 11. Queue에서 Poll()과 remove()의 차이점은 무엇인가요? Queue에서는 Enqueue, Dequeue와 같은 기본적인 같은 동작을 하는 메서드가 여러 개 있다. 그 대표적인 경우가 Poll()과 remove()이다. Poll vs Remove /** * Retrieves and removes the head of this queue. This method differs * from {@link #poll poll} only in that it throws an exception if this * queue is empty. * * @return the head of this queue * @throws NoSuchElementException if this queue is empty */ E remove(); /** * Retrieves and removes.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 7. 이전 1 2 다음