의문점 공부하기/📌 Java 54

📌 세션 과정 알아보기

클라이언트의 요청 수신: 사용자가 브라우저를 통해 웹 애플리케이션에 접속하면, 클라이언트의 요청이 서버로 전송 세션 생성 및 세션 ID 생성: 서버는 클라이언트의 요청을 받으면 세션을 생성하고 고유한 세션 ID를 생성. 세션 ID는 클라이언트와 서버 간의 상태를 유지하는 데 사용 세션 ID를 쿠키로 전송: 서버는 생성된 세션 ID를 HTTP 응답 헤더에 포함하여 클라이언트에게 전송 일반적으로 이 세션 ID는 쿠키를 통해 클라이언트에게 저장되고 이 쿠키는 클라이언트 측에서 세션을 식별하는 데 사용된다 클라이언트의 세션 ID 전송: 클라이언트는 이후 요청 시 쿠키에 저장된 세션 ID를 요청 헤더에 포함하여 서버로 전송 세션 식별 및 상태 유지: 서버는 받은 세션 ID를 사용하여 해당 클라이언트의 세션을 식별..

📌 세션과 쿠키의 차이는 ????

세션(Session): 세션은 서버 측에 정보를 저장하는 방식 클라이언트가 웹 서버에 접속한 후 로그인하면 서버는 클라이언트에게 고유한 세션 ID를 부여, 이 세션 ID는 서버 측에서 유지되며, 클라이언트는 이 세션 ID를 사용하여 서버와의 상호작용. 세션은 클라이언트의 브라우저를 종료하거나 세션의 유효기간이 만료될 때까지 유지 세션은 보안 면에서 쿠키보다 안전하며, 서버 측에서 상태를 관리할 수 있다. 쿠키(Cookie): 쿠키는 클라이언트 측에 정보를 저장하는 방식 서버는 클라이언트에게 쿠키를 전송하여 클라이언트의 브라우저에 저장, 클라이언트는 이 쿠키를 웹 서버에 다시 전송하여 상호작용 쿠키는 클라이언트의 하드 디스크에 저장되므로, 클라이언트가 브라우저를 종료해도 유지 쿠키는 클라이언트 측에서 상태..

📌 jsp를 기본 제공하는 객체는 ???

JSP는 웹 개발을 위한 여러 기본 제공 객체를 가진다. 이러한 객체들을 내장 객체(Implicit Objects)라고 부르며, 개발자가 따로 객체를 생성하거나 선언하지 않아도 바로 사용할 수 있는 사전 정의된 java 객체들 request: 클라이언트의 요청 정보를 담고 있는 HttpServletRequest 객체,요청 매개변수, 헤더, 쿠키 등의 정보포함 response: 클라이언트에게 응답을 보내는데 사용되는 HttpServletResponse 객체,헤더 설정, 응답의 내용 pageContext: 현재 페이지에 관련된 컨텍스트 정보를 제공하는 PageContext 객체,다른 JSP 내장 객체들에 대한 참조를 포함 session: 클라이언트의 세션 정보를 관리하는 HttpSession 객체,세션을 생..

📌 JSP와 Servlet의 차이점은 !!!?

JSP(JavaServer Pages)와 Servlet은 모두 Java를 기반으로 하는 웹 애플리케이션 개발을 위한 기술 -역할 및 목적 JSP(Java Server Pages): JSP는 HTML 내에 Java 코드를 포함하여 동적인 웹 페이지를 생성하는 데 사용 주로 클라이언트가 볼 웹 페이지의 모습을 구성하고, 서버 측 로직을 포함하여 동적인 콘텐츠를 생성하는 데 사용 HTML 내부에 Java 코드를 삽입하여 동적 웹 페이지를 생성, JSP는 Servlet으로 변환되어 실행되며, JSP 파일의 내용이 변경되면 다시 변환 과정을 거친다 -directive element -> scriptlet : 표현식 -> expression element : 필드 및 메서드 선언 ->declaration eleme..

📌 스레드 풀에서 submit()과 execute()의 차이는 ?!?!?

우선 submit()과 execute() 메서드는 스레드 풀에서 작업을 처리하는데 사용되는 메서드 작업 처리 결과 반환: submit() 메서드는 작업 처리 결과를 받을 수 있도록 Future 객체를 반환 submit()을 사용하면 작업의 결과를 추출하거나 작업이 완료되었는지 확인할 수 있다. 예를 들어, 작업이 어떤 값을 계산하고 그 값을 반환한다면, submit() 메서드는 그 값을 Future 객체로 받을 수 있다. 반면, execute() 메서드는 작업 처리 결과를 반환하지 않는다! 예외 처리: execute() 메서드는 작업 처리 중에 예외가 발생하면 해당 스레드가 종료되고 스레드 풀에서 제거된 후, 새로운 스레드가 생성되어 다른 작업을 처리한다. 이로 인해 execute() 메서드는 예외가 발..

📌 스레드 풀을 생성할 수 있는 여러가지 방법은 뭐가 있을까??????

우선 스레드 풀은 미리 생성된 스레드의 집합 !! ExecutorService 사용하기: Java에서는 ExecutorService 인터페이스를 사용하여 스레드풀을 생성하고 관리할 수 있다. ExecutorService를 사용하면 스레드풀의 크기, 작업 큐의 크기 등을 설정할 수 있다. ExecutorService executorService = Executors.newFixedThreadPool(10); ThreadPoolExecutor 클래스 사용하기: ThreadPoolExecutor 클래스를 직접 사용하여 스레드풀을 생성할 수도 있다. 이는 ExecutorService 인터페이스의 구현체인데, 세밀한 설정이 가능 ThreadPoolExecutor의 생성자를 사용하여 스레드풀의 크기, 작업 큐의 크..

📌 thread run()과 thread start()의 차이가 뭘까?

thread run()과 thread start()는 둘 다 스레드(Thread)를 실행하는 메서드..! 그러나 차이점은 존재! thread run() : 스레드를 직접 실행하는 메서드 이 메서드를 호출하면 현재 스레드에서 run() 메서드가 실행된다 스레드가 별도의 실행 흐름을 가지지 않고 현재 스레드에서 실행 thread start(): 스레드를 시작하는 메서드 이 메서드를 호출하면 새로운 스레드가 생성되고, 해당 스레드에서 run() 메서드가 실행 스레드가 별도의 실행 흐름을 가지며, 동시에 여러 스레드가 실행될 수 있다. thread run()은 스레드를 직접 실행하는 반면, thread start()는 새로운 스레드를 생성하여 실행하는 차이가 존재!!!

📌 notify()와 notifyAll()의 차이는 뭘까?!

- notify()와 notifyAll()은 자바에서 스레드 간의 통신을 위해 사용되는 메서드 notify(): notify() 메서드는 현재 객체의 모니터를 소유하고 있는 스레드 중 하나를 깨워서 실행을 재개 notify() 메서드를 호출하면 대기 중인 스레드 중 한 개의 스레드만 실행을 재개하고, 나머지 스레드들은 여전히 대기 상태...! 선택적으로 특정 스레드를 깨울 수 있다 호출한 스레드와 동일한 모니터를 소유하고 있는 스레드 중 하나가 깨어난다 notify() 메서드를 호출한 스레드와 동일한 모니터를 소유하고있는 스레드가 없다면, notify() 호출은 아무런 효과가 없다 notifyAll(): notifyAll() 메서드는 현재 객체의 모니터를 소유하고 있는 모든 스레드를 깨워서 실행을 재개 ..

📌 sleep()과 wait()의 차이는?!?!?

sleep(): sleep()은 Thread 클래스에 정의된 메서드 이 메서드는 스레드의 실행을 특정 시간 동안 일시적으로 중지시킨다 sleep()을 호출한 스레드는 CPU를 양보하고, 슬립하는 동안 시스템 리소스를 소비하지 않는다 지정된 시간이 경과하면 스레드는 실행을 재개한다 sleep()은 프로그램에서 지연을 도입하거나 시간 기반 작업을 생성하는 데 유용..! try { // 5초 동안 실행 일시 중지 Thread.sleep(5000); } catch (InterruptedException e) { // 예외 처리 } wait(): wait()은 Object 클래스에 정의된 메서드 이 메서드는 스레드가 보유한 객체의 잠금을 일시적으로 해제한다 wait()을 호출한 스레드는 다른 스레드가 재개하도록 ..

📌 스레드에 여러가지 상태가 있다???

스레드: 프로그래밍에서 동시에 실행되는 일련의 작업 단위 -New (생성됨): 스레드가 생성되고 아직 실행되기 전의 상태 이 상태에서는 아직 스레드가 실행되지 않았으므로, 아래와 같은 코드로 스레드를 생성할 수 있다 Thread thread = new Thread(); -Runnable (실행 가능): 스레드가 실행을 기다리는 상태 스레드가 실행을 시작하려면 CPU 시간 할당을 받아야한다 만약 여러 개의 스레드가 실행 가능한 경우, 스케줄러에 의해 스레드가 선택되고 실행될 수 있다 thread.start(); -Running (실행 중): 스레드가 CPU 시간을 할당받고 실제로 실행 중인 상태 스레드는 Run 메소드 내에서 실행되는 작업을 수행하며, 실행이 완료되기 전에는 Running 상태를 유지한다 ..