전체 글 80

스레드 생성과 실행 - 스레드 종류

1. 자바 메모리메서드 영역프로그램을 실행하는데 필요한 공통 데이터를 관리클래스 정보static 영역런타임 상수 풀 스택 영역자바 실행 시, 하나의 실행 스택이 생성스택 프레임 : 메서드를 호출할 때 마다 하나의 스택프레임이 쌓이고, 메서드가 종료되면 해당 스택 프레임이 제거스레드 별로 하나의 실행 스택이 생성된다. 따라서 스레드 수 만큼 스택이 생성지역 변수, 중간 연산 결과, 메서드 호출 정보 힙 영역객체(인스턴스)와 배열이 생성, GC가 이루어지는 영역2. 멀티 스레드public class HelloThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getN..

JAVA 2024.10.23

두 서블릿 간 속성/속성값 공유

1. 포워딩 : setAttribute / getAttribute이는 "같은 요청 내에서만 가능" HttpServletRequest 객체가 같아야 하므로, 서블릿을 두 JAVA 클래스로 따로 만들고, doGet / doPost 등을 각각 오버라이딩 했을때, 사용하기 어려움 1개의 서블릿 내 하나의 메서드 안에서 파라미터를 공유할경우 사용// A 서블릿String value = "someValue";request.setAttribute("key", value);request.getRequestDispatcher("/BServlet").forward(request, response);// B 서블릿String value = (String) request.getAttribute("key"); 2. 쿼리 파라미..

JSP_Servlet 2024.10.23

[oracle sql] 의사 컬럼, 분석 함수, 계층 쿼리

1. 의사컬럼 물리적 테이블에는 존재하지 않지만, select 결과셋(select절에서 추가됨)에는 존재하는 컬럼 rowid : 자바의 hashcode같은 메모리 주소, 각 행들의 키값, Index로 사용rownum : 결과셋의 번호를 순서대로 붙인 것select rowid, rownum, empno, ename from emp;  의사컬럼이 추가되는 시점은 select절이다. order by 전에 추가된다.select rowid, rownum, empno, ename from emp order by sal desc; 2. 분석 함수일반테이블의 결과셋과 group by 의 결과셋을 같이 출력할때 사용 □ 윈도우 함수(오버 함수)를 사용하는 경우 (내부적으로 join 등이 실행된다)형태 : 함수이름(매개값..

SQL 2024.10.22

Context switching와 스레드작업 종류(CPU-bound tasks, I/O-bound tasks)

Context switching정의 : CPU에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것  위원회 준비를 하다가, 다른부서에 시스템 사용문의 요청이 들어왔으면 위원회 준비를 어디까지 헀는지 적어놨다가 멈추고 나중에 메모를 보면서 머리속에 진행흐름(문맥)을 기억해내고 진행을 해야한다 운영체제의 멀티테스킹도 과정이 같은데, 잠깐 중단하는 스레드 진행 위치와 계산하던 변수의 값(문맥)을 메모리에 저장해놨다가 다시 진행할때 이 값들은 CPU에 불러와야한다. 이런과정을 컨텍스트 스위칭이라고 한다. 컨텍스트 스위치 과정에서 이전에 실행 중인 값을 메모리에 잠깐 저장하고, 이후에 다시 실행하는 시점에 저장한 문맥을 CPU에 다시 불러와야 해서 약간의 비용이 발생한다.  그러므로 멀티스레드는..

JAVA 2024.10.21

(스레드) Thread와 Scheduling

"운영체제가 스케줄링을 수행하고CPU를 최대한 사용하면서 작업이 골고루 수행될 수 있게 최적화 한다." 1. 멀티태스킹에서의 Scheduling 과정 한 CPU 코어가 프로세스A - 잠깐 중단 하고 프로세스B - 잠깐 중단...(반복)  □ 단일 코어 스케쥴링 (CPU 코어1개)대기스케쥴링 큐 스레드A1, 스레드B2, 스레드B1CPU 코어-  프로세스A 스케쥴링 큐  스레드B2, 스레드B1CPU 코어스레드A1  - 잠깐 중단 하고 프로세스B 스케쥴링 큐  스레드A1, 스레드B1CPU 코어스레드B2 - 잠깐 중단..  프로세스B 스케쥴링 큐  스레드A1 , 스레드B2CPU 코어 스레드B1 □ 멀티 코어 스케쥴링 (CPU 코어 2개 이상)대기스케쥴링 큐 스레드A1, 스레드B2, 스레드B1CPU 코어-    ..

JAVA 2024.10.21

프로세스와 스레드

"운영체제 안에 프로세스가 있고, 프로세스 안에 스레드가 있다."프로그램 : 컴퓨터에서 어떤 작업을 실행할 수 있는 코드 덩어리프로세스 : 운영체제 안에서 실행중인 프로그램스레드 : 프로세스 내에서 실행되는 작업의 단위, 하나의 프로세스는 하나 이상의 스레드를 가지고 있다 1. Program컴퓨터에서 어떤 작업을 위해 실핼할 수 있는 '정적인 상태'의 파일 (ex. exe 파일)사용자가 원하는 일을 처리할 수 있도록 프로그래밍 언어를 사용하여 올바른 수행절차를 표현해 놓은 명령어의 집합(=  어떤 작업을 하기 위해 해야할 일들을 순서대로 나열 = 코드 덩어리)이에 필요한 데이터를 묶어 놓은 파일로 보조 기억장치에 저장되어있다.2. Process (작업의 단위)자바 언어로 비유하면 클래스는 프로그램, 인스..

JAVA 2024.10.21

(스레드) Multi-Tasking과 Multi-Process

"멀티 태스킹은 소프트웨어 기반, 멀티 프로세스는 하드웨어 기반 개념이다" 1. Multi Tasking프로그램의 실행은 프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)한다. CPU 코어는 하나로 가정하고, 한 번에 하나의 프로그램 코드만 실행한다.Ex - CPU연산이 느리다면, 음악 프로그램을 모두 실행한 다음에 워드 프로그램을 실행할 수 있다.이를 개선하기 위해 멀티 태스킹을 사용,하나의 CPU 코어로 여러 프로그램을 동시에 실행할 수 있는 기술.CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행하여, 사용자가 동시에 실행되는 것 처럼 느끼게 해준다.각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할 기법이라고 한다.하나의 컴퓨터가 동시에 여러 작업을 ..

JAVA 2024.10.21

Group by 확장기능

union all =(축약)=> grouping sets =(축약)=> rollup / cube 1. group by grouping sets(); emp 테이블의 gender 을 그룹핑 + emp 테이블의 ()을 그룹핑 = 두개의 group by 결과물은 union all로 한 것과 같다.// grouping set을 사용하는 경우select gender, count(*) from emp group by grouping set (gender, ());// union all을 사용하는 경우select gender, count(*) from emp group by genderunion all select '전체', count(*) from emp; group by 절 내 실행 순서는 (1)group by ..

SQL 2024.10.21

[Web] Forward와 Redirect 차이

1. Forward 방식Forward는 Web Container 차원에서 페이지 이동만 존재, 웹 브라우저에는 최초에 호출한 URL이 표시되고, 이동한 페이지의 URL 정보는 확인할 수 없다. 또한 현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request 객체와 response 객체를 공유한다.  위와 같이 Foward는 다음으로 이동 할 URL로 요청정보를 그대로 전달합니다. 그렇기 때문에 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효합니다. 예를 들어 게시판을 작성하는 과정이라고 할 때, 사용자가 보낸 요청 정보를 이용하여 글쓰기 기능을 수행한다고 할 때, forward를 사용하여 응답 페이지를 부르면 다음과 같은 문제가 발생하게 됩니다. 만약 사용자가 실수 혹은 고의로 ..

JSP_Servlet 2024.10.20

Servlet(서블릿)

1. 서블릿이란? 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해 줘야하는데 이러한 역할을 자바 프로그램 Servlet의 특징client의 요청에 대해 동적으로 작동하는 web application component HTML을 사용하여 요청에 응답한다.JAVA Thread를 이용하여 동작한다.MVC 패턴에서 Controller 역할을 한다.javax.servlet.httpServlet 클래스를 상속받는다.Servlet의 동작 방식Client가 URL 입력 : HTTP Request가 Sevlet Container로 전송한다 ( HTTP Request )Sevlet Container은 HttpServletRequest, HttpServletResponse 객체를 생성한다.web.xml을 기반..

JSP_Servlet 2024.10.20