전체 글(61)
-
Thread
1. Thread란? Thread는 프로세스와 마찬가지로 명령어가 프로세서를 이용하여 실행되어지는 객체의 기본단위이면서 명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름이다. 2. Thread의 특징? Thread는 같은 프로세스 안에서 동작하기 때문에 같은 주소 공간에 존재하게 되며 공유된 메모리를 같이 접근할수 있다. 3. Thread의 장점 1) 어플리케이션의 성능 향상 코드와 데이터를 공유하면서 서로 다른 스레드의 활동을 허용하여 성능을 향상시키고 다중 스레딩은 일부가 차단 되거나 긴 작업을 수행하는 경우에도 실행하는 프로그램을 계속 허용 할 수 있다. 2) 문맥교환 비용 감소로 경제적인 효과 프로세스를 만들기 위한 메모리와 자원할당의 비용은 증가한다. 스레드는 프로세스 자원을 공유할수 있기 ..
2023.11.24 -
Process
1. Process? 일반적으로 디스크에 저장되어있는 프로그램의 실행은 우선 프로그램 자신의 고유한 메모리 공간에 프로그램의 코드가 적재될 것이고 프로세서는 메모리에 적재된 코드 즉, 프로램의 명령어를 하나하나 읽어서 실행하게 된다. 이렇게 실행 중인 상태의 프로그램을 우리는 프로세스(Process) 또는 Task라고 부른다. 예를 들면 윈도에서 작업 관리자를 켜보면 지금 실행하고 있는 프로그램(프로세스)를 확인할 수가 있다. 2. Process Memory Structure 프로세스는 실행중인 프로그램으로서 역할을 수행하기 위해서 프로세서를 점유해야한다. 그리고 프로세스는 할당시간과 메모리, 파일, 입출력장치와 같은 자원을 필요로 한다. 그래서 이러한 자원이 할당이 되어야한다. 아래 그림은 프로세스의 ..
2023.11.24 -
서블릿 컨테이너 초기화1
WAS를 실행하는 시점에 초기화를 해야하는 작업이 있다. 스프링 부트 강의를 듣다가 서블릿 컨테이너를 초기화 할 수 있다는 것을 처음 알게 되었다. 과거에는 web.xml으로 초기화하였지만 요즘에는 자바 코드를 사용한 초기화도 지원하고 있어서 자바를 통해 알아보겠다. [초기화가 필요한 이유] 1) 서비스에 필요한 필터와 서블릿 등록 2) 스프링 사용하면 스프링컨테이너를 만들고 서블릿과 스프링을 연결하는 Dispatcher Servlet도 등록해야한다. 서블릿에는 초기화 인터페이스를 제공한다. 이름은 ServletContainerInitializer이다. https://tomcat.apache.org/tomcat-10.1-doc/servletapi/jakarta/servlet/ServletContainer..
2023.11.16 -
tomcat 설정_인텔리J 유료버전
인텔리 J유료버전에서 tomcat 설정하는 방법을 알아보겠다. 사실 스프링 부트 사용하면 tomcat이 내장되어있기 때문에 따로 설정할 필요는 없지만 혹시나 war 배포를 할 경우 아니면 따로 tomcat server를 설치할 필요가 있다면 해당 글을 보면 도움이 되었으면 좋겠다. 먼저 tomcat을 공식 홈페이지에서 다운 받자! google에서 tomcat으로 검색하면 맨 처음 사이트가 공식 사이트이다. (귀찮으신 분들을 위한 링크를 삽입!) 아래 이미지 클릭해도 사이트 이동! https://tomcat.apache.org/ 위에 tomcat 10 메뉴로 클릭 후 zip 파일로 다운 받는다. 오른쪽 위를 보면 Edit Configurations... 라는 메뉴를 클릭한다. Tomcat Server 아래..
2023.11.15 -
Builder Pattern
디자인 패턴 첫번째 포스팅이다. 내가 Builder Pattern을 처음으로 작성한 이유는 회사에서 적용한 첫 패턴이기 때문이다. [문제점] 회사에서 개발을 하다가 문득 문제점을 발견하였다. 그것은 불변객체로 만드려고 하다보니 생성자에 파라미터가 너무 많아서 순서대로 넣어야하는데 다행히 intellij는 각 필드의 값이 어떤 것을 의미하는지 보여주지만..이클립스를 커스텀한 B** 프레임워크는..그런것을 지원하지 않았다.. 그래서 테스트를 하는데 자꾸 이상한 값이 잘못 들어간 버그가 발견되었다. 예를 들면 아래와 같은 Account class가 있을때 생성자로 불변객체로 만들었다. package org.example.example; public class Account { private final Stri..
2023.10.09