Programming🧑💻
-
JPA에서 엔티티 식별자를 사용하는 이유Programming🧑💻/JPA 2023. 8. 19. 01:23
일반적으로 서비스 이용자와 서비스 제공자 간의 요청과 응답의 흐름은 다음과 같다. 이용자가 서비스에 글 보기, 댓글 조회하기와 같은 서비스를 이용하기 위하여 요청을 보내면 제공자는 이용자의 요청을 식별하고 이에 해당하는 응답을 제공하기 위해 필요한 데이터(글, 댓글)를 데이터베이스로부터 조회한다. 조회한 데이터를 서비스의 특성에 맞게 가공하여(몇 개까지 보여줄 건지, 어떻게 보여줄 건지) 사용자에게 전달한다. 또한 이용자가 글이나 댓글을 작성하기와 같은 요청을 보내면 제공자는 이용자에게 전달받은 데이터를 사전에 설계한 데이터베이스 설계에 맞게 저장하고 이에 대한 결과를 사용자에게 전달한다. 즉 서비스 이용자와 제공자 간의 요청, 응답 흐름에서 서비스와 데이터베이스 간의 통신이 필요하다. 서비스와 데이터베..
-
[Spring] 스프링 필터와 필터 체인Programming🧑💻/Spring 2023. 3. 27. 14:42
스프링 어플리케이션 요청과 응답 흐름 웹 어플리케이션의 구성 웹 어플리케이션을 개발한다는 것은 클라이언트의 요청을 받아 서버에서 여러 동작을 통해 동적으로 만들어낸 응답을 내준다. 여기서 응답을 처리하고 정해진 동작을 하는 요소들을 웹 컴포넌트라고 한다. 웹 컴포넌트들은 독립적으로 있지 않고 컨테이너 안에서 관리된다. 컨테이너는 클라이언트의 요청을 받으면 해당 요청을 처리할 웹 컴포넌트를 지정해 주는 역할을 하며, 웹컴포넌트들의 전반적인 생명주기(초기화 - 동작 - 제거)를 관리한다. 자바에서의 웹 어플리케이션 자바에서는 웹 컴포넌트를 서블릿이라고 하며, 서블릿을 관리하는 컨테이너를 서블릿 컨테이너라고 한다. Tomact은 서블릿 컨테이너의 일종이다. 스프링 더하기 서블릿 컨테이너로는 구현가능한 동작의 ..
-
[JAVA] NPE : 널포인트 ExceptionProgramming🧑💻/Java 2023. 3. 16. 22:09
Null Point Exception이 뭔데?자바는 null이라고 부르는 특별한 타입의 값을 허용하는데, null은 참조변수가 아무값도 참조하고 있지 않은 상태를 나타낸다.String a = null;String type과 같이 참조형의 변수에 값을 할당하면 할당된 값은 변수가 가리키고 있는 힙상의 메모리의 주소를 의미한다. 따라서 null이 할당되게 되면 해당 참조 변수는 실제로는 아무곳도 가리키지 않는 상태로 값이 없는 상태가 된다. 이 Null 값은 NullPointerException을 터뜨려서 자바 개발자들를 괴롭히는 골치 아픈 녀석으로 주의하지 않으면 자주 만나게 된다. NullPointerException은 프로그램이 실행중에 null값인 변수에 접근을 시도하면 터지는 예외이다. Null 참..
-
[JAVA] 컴퓨터와 자바 메모리에 대한 이해Programming🧑💻/Java 2023. 3. 7. 12:52
컴퓨터 메모리 컴퓨터 메모리는 두가지 종류로 구분된다. 비휘발성 기억 장치 : 전원 공급이 없어도 저장된 데이터를 유지한다. (컴퓨터가 종료되어도 데이터가 저장되어 있음) ex)HDD,SDD휘발성 기억 장치 : 데이터 유지를 위해서는 지속적인 전원 공급이 필요하다. (컴퓨터 종료시 데이터가 휘발) ex)RAM 메인 메모리CPU는 HDD, SDD 같은 비휘발성 기억장치보다 RAM으로 되어 있는 메인 메모리에 빠른 접근이 가능하다.메인 메모리 상에는 현재 실행중인 어플리케이션과 관련된 데이터들이 저장된다. 어플리케이션 실행시, 종류 직전 후에 다시 실행하는 것보다 컴퓨터 종료 후 다시 실행하는 것이 조금 더 오래 걸리는 이유는 메인 메모리가 캐시 또는 버퍼의 역할을 하기 때문에 어플리케이션 실행에 필요한 일..
-
버전 관리 시스템(Version Control System) GitProgramming🧑💻/Git & Github 2022. 12. 28. 22:56
버전 관리 시스템이란? 버전관리 시스템은 소스코드, 파일, 폴더 등의 변경사항을 추적하고 이를 기록으로 남겨 버전관리를 용이하게 해주는 시스템이다. 스냅샷들을 통해 변경사항을 남겨두고 이를 버전관리에 이용한다. 각 스냅샷들에는 변경사항과 함께 변경한 사람, 메시지 등의 메타정보가 포함되어 변경사항에 대한 파악을 돕는다. 단독으로 이용해도 변경사항을 추적하거나 개발을 병렬적으로 진행하는 등 여러가지 이점이 있다. 하지만 협업을 할 때 큰 효과를 발휘한다. 다른 사람이 어떤 사항을 변경하였는지 인지할 수 있어 동시개발에서 오는 충돌문제를 해결할 수 있다. 누가 이 모듈을 작성하였는가? 특정 파일 또는 특정 라인을 '누가' '언제' '왜' 바꾸었는가? 어디까지 단위테스트가 진행되었는가? 등등 Git 다양한 버..
-
[JAVA] String Constant Pool은 무엇일까?Programming🧑💻/Java 2022. 12. 17. 21:17
String Constant Pool String Constant Pool 개념에 대해 이해하기 위하여 다음 두개의 유사한 자바 프로그램을 비교해보자 case 1 String의 경우 참조형이기 때문에 "=="을 사용해 변수를 비교하면 가리키고 있는 객체가 동일한지(같은 메모리주소)를 가지고 있는지 확인한다. case1의 경우에는 출력으로 "Yes"가 나온다. class GFG { public static void main(String[] args) { String s1 = "abc"; String s2 = "abc"; if (s1 == s2) System.out.println("Yes"); else System.out.println("No"); } } case 2 위의 프로그램과 같이 String 변수를..
-
web application은 어떻게 작동하는가?Programming🧑💻 2022. 10. 28. 12:47
HTTP requests and responses 과정 Chrome, Firefox, Safari와 같은 Browser를 열고 Website의 URL(예:hackerhero.com)을 입력하면 Browser는 어떤 컴퓨터가 입력한 URL에 해당하는 사이트에 대한 정보를 갖고 있는지 알아야 한다. DNS Server은 이름과 전화번호를 매칭 하는 전화번호부와 같이 웹사이트와 IP주소를 매칭 한 리스트를 갖고 있다. DNS Server은 Browser에게 가져온 Website에 해당하는 IP주소를 알려준다. 알맞은 IP주소를 찾게 되면 해당 주소를 갖고 있는 Server Computer에게 http requests를 보낸다. Server Computer는 받은 http request에 따라 일정 동작을 내부..
-
[JAVA] finalProgramming🧑💻/Java 2022. 10. 25. 10:48
final final 변수 - 변수를 final로 선언시 클래스의 필드를 final로 설정하면 클래스를 통해 만들어진 객체의 해당 필드는 더이상 값의 변경이 불가능하다. 그래서 객체가 생성될 때 final로 선언된 필드의 값들을 모두 가지지 못하면 객체가 만들어진 이후 값을 부여할 방법이 없다. 따라서 객체 생성시 final로 선언된 필드 값들을 모두 가지고 있어야 객체의 생성이 가능하다. - final로 선언된 필드의 자료형이 참조형일 경우 final를 사용해 선언한 필드의 자료형이 참조형일 경우 객체가 생성된 이후 final 변수가 다른 객체를 가리키도록 할 수는 없지만 대상이 되는 객체를 내부적으로 변경이 가능하다. 예를 들어 final int[] a = arr 로 a가 arr를 가리키고 있으면 이..