Java&Spring
-
Tomcat 의 동작원리 (Tomcat 내부 구성)Java&Spring/Spring 2025. 8. 2. 19:31
서버의 동작과 Tomcat 의 내부 구조이번 포스팅은 간단한 서버의 동작 원리와 Tomcat 을 설명합니다.Server에는 다양한 종류가 있으며 각각의 역할의 따라 구분합니다.WebServer - 요청에 맞는 정적파일을 반환해주는 역할WAS(Web Applicataion Server) - DB 또는 DB 서버에 접근하는 역할을 하거나, 복잡한 비즈니스 로직을 처리하는 역할프록시 서버, 배치 서버, 파일 서버 등등Webserver 만으로는 모든 일을 처리하는데 과부하가 걸리며 WAS 서버를 통해 사용자의 요청 부하를 분산합니다. 서버가 사용자의 요청을 어떻게 받는지의 대하여 기초적인 설명을 하면 다음과 같습니다. 사용자의 요청은 어떻게 처리하는가? 서버는 TCP 통신으로 외부 네트워크에서 들어온 요..
-
Spring 직렬화, dto 의 잘못된 이름의 함수가 있는 경우Java&Spring/Spring 2024. 6. 15. 17:47
Spring 의 컨트롤러 어노테이션인 RestController 를 사용하면, 함수의 리턴값이 json 으로 매핑이 된다. 다음과 같은 dto 의 경우는 getCapitalName 과 같은 함수가 있다. @Getterpublic static class RequestDTo { private final String name = "kris"; private final int age = 12 ; public String getThisIsFake() { return "fake"; } public String calculate() { return "false"; }} Spring 에서는 obejct mapper 의 replication 의 기능으로 이 함수가 필드 값을 호출하는 geeter 인지 아는 착각을 한다..
-
[모던 자바 인 액션] part 1 - 1Java&Spring/Java 2023. 11. 3. 16:24
"Stream 을 이용하면 에러를 자주 일으키며 멀티코어 cpu를 이용하는 것보다 비싼 synchorized 를 사용안해도 된다" "synchronized" 키워드는 다음과 같은 비용을 수반할 수 있다. 대기 시간(Wait Time): 한 스레드가 락을 획득하기 위해 다른 스레드가 락을 해제하기를 기다려야 할 때 발생합니다. 이는 특히 공유 자원에 대한 경쟁이 치열할 때 성능 저하를 가져온다. 컨텍스트 스위칭(Context Switching) 비용: 락을 기다리는 스레드들 사이에서 발생하는 컨텍스트 스위칭은 CPU 시간을 소비한다. 메모리 일관성 비용(Memory Consistency Costs): 락을 사용하여 메모리 캐시 사이의 데이터 일관성을 유지하는 데 있어 추가적인 메모리 배리어(memory b..
-
Spring vs Spring BootJava&Spring/Spring 2023. 10. 8. 20:29
Spring ,Spring Boot의 차이의 관한 글이다. Spring,Spring Boot,Spring Cloud,Spring MVC 이름 부터 Spring 이 전부 들어간다. 지금 다니는 면접에서도 Spring 과 Spring boot 의 차이를 물어 봤다. 당시에는 너무 쉬운 질문인 것 같아서 이런것도 질문하시나 했는데시간이 흘러 주변 지인들을 보니 이 두개의 구별을 잘 못하시는 분들을 만났다. 또한 나 조차, 당시에 거만한 태도였던 것 같다. 이론적인 설명보다는 직접 해보는게 좋다. Spring 프로젝트를 생성하고 디펜던시가 아무것도 없이 실행을 먼저해보자. 그리고 SpringBoot를 실행한 경험처럼 브라우저에http://127.0.01:8080 을 처본다. 당연하게 아무것도 나오는게 없어..
-
JVM ARCHITECTURE (배경 , 특징 , 컴파일 과정 등)Java&Spring/Java 2023. 9. 15. 18:07
JVM (Java Virtual Machine) 2022 9월 28일 부터 지속적으로 글을 업데이트 중입니다. Java의 특징 : "OS 에 종속 적이지 않고 실행 가능 하다" 배경 Java 로 작성한 코드는 JVM 에 의하여 동작을 하게 됩니다. 이로 인하여 이론상 OS 및 하드웨어의 관계없이 자바 언어로 어플리케이션 개발이 가능합니다. JVM 은 많은 개발자의 C/C++ 로 개발시 복잡한 메모리의 할당 , 해제고민들로 부터 자유로워지게 만들었고 , OS 별로 고민을 해야할 많은 상황에서 자유롭게 만들었습니다. 주관적인 의견으로 개발의 난이도가 낮춰저 많은 인원이 하나의 서비스를 편하게 개발하는 단계가 시작이 되었다라고 생각합니다. * GC 로 인하여 메모리가 할당된 객체,변수를 신경쓰지 않아도 된다하..
-
Genric 이 타입 일반화인 줄 만 알면, 주니어입니다.Java&Spring/Java 2023. 9. 4. 20:32
Generic : 클라스나 메소드에서 사용할 내부 데이터 타입을 외부에서 지정하는 기법 이다. - 하나의 값이 다양한 타입을 지정 받기 위하여 사용 한다. API 의 response class 가 정해져 있지 않은 상황에서 API 의 data body 를 Generic 으로 선언 후 개발을 진행 하고 완료후 타입을 강제 할 수 가 있다. - 컴파일 타임에 타입이 정해짐으로 따로 캐스팅을 해줄 필요가 없다. [자세한 내부 동작은 글 하단에서 다룬다.] 예시의 모든 설명은 다음과 같은 상속 관계를 갖는다. 클라스 Object
-
자료구조 Stack , add vs pushJava&Spring/Java 2023. 9. 4. 18:15
자바의 스택 자료 구조는 다음과 같이 선언 사용이된다. Stack stack = new Stack(); stack.add(1); stack.push(2); stack.add(0,71); stack.add(stack.size(),71); stack.add(stack.size()-1,74); System.out.println(stack.peek()); System.out.println(stack); stack.pop(); stack.add(stack.size() + 1,100); // out of index 보통의 자료구조인 stack 을 사용하는 것은 선입 후출의 개념으로 사용이 되며 , push , pop 의, 연산을 지원하지만. Java 의 Stack 의 경우 정말 독특한점은 add() 도 같이 지원을..
-
Sort : Arrays.sort() vs Collections.sort() & 배열 다중 정렬 및 출력Java&Spring/Java 2023. 9. 4. 17:40
Arrays.sort() vs Collections.sort 두개는 사용하는 정렬이 다르다. .... ? 정답 ) Collections.sort() 는 List 객체를 object 로 변환해서 Arrays.sort() 를 실행한다. Arrays.sort() 는 primitive type 의 경우 DualQuickSort , 아닌 경우 Merge Sort 를 변형시킨 TimSort 를 사용한다. QuickSort() 의 경우는 안정성을 보장하지 않는다 . 1,4,3,3,5,3 일때 , 중복되는 숫자의 순서가 바뀔 수가 있다. - 원시 타입의 값들은 배열의 중복되는 값들의 순서가 중요하지 않는 경우이니 , 평균속도가 빠른 QuickSort 를 이용하고 - 안정성이 보장이 되어야 하는 "객체" , 중복값을 가..