스프링 MVC 구조는 tomcat 엔진에 thread pool을 사용하고 webflux 구조는 netty 엔진의 이벤트 루프를 통해 스레드를 미리 만들어놓은 환경에서 작업을 처리합니다. 이렇게 미리 만들어놓고 쓰는 이유는 스레드를 생성될 때마다 비용이 비싸기 때문에 미리 만들어 놔야 한다고 알고 있을겁니다. 이번 포스팅에서는 그 이유에 대해 알아보도록 하겠습니다. One-To-One multi-threading model 먼저 JVM에서의 다중 Thread 모델은 one to one 모델을 따르고 있습니다. 그렇다면 이 모델은 도데체 무엇이고 thread pool 등장 배경과 무슨 관계 일까요? one to one 모델은 사용자 수준의 thread와 커널 스레드가 1대 1로 연결되어있는 형태를 말합니다...
Reflection API란? reflection은 힙 영역에 로드된 class 타입의 객체를 통해 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고 인스턴스의 필드와 메소드를 접근 제어자와 상관없이 사용할 수 있도록 해준다. 실제로 reflection을 이용하여 Spring이나 Java 직렬화(jackson) 또는 JPA 같은 기술에서 많이 사용되고있는 기술이다. 제공해주는 method를 통해서 알아보자 public class Test { public static void main(String[] args) { Class collection = Class.forName("java.util.Collections"); System.out.println(collection); Class double = ..
정확히 말하자면 자바는 Synchronous / blocking 방식을 지원하는 언어다. 그렇다면 Synchronous / blocking이란 무엇일까? 그리고 반대 되는 Asynchronous / non-blocking에 대해서도 알아보자 Synchronous / Blocking 먼저 각자의 뜻을 알아보면 Synchronize는 간단하게 두 개의 주체가 서로 동시에 수행하거나, 동시에 끝나거나 끝나는 동시에 시작하는 것을 말한다. 이를 쉽게 예로 들자면 이런 것이다. 한명의 직원이 있고 상사가 있다고 가정해보자 동기적으로 동기적인 직원은 상사에게 서류를 제출하고 상사가 일을 처리할 때 까지 계속 물어볼 것이다. 그리고 상사가 일처리를 끝내고 결과를 줘야만 직원은 다시 가서 하던 일을 할 수 있다. bl..
Enum 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 사계절, 태양계의 항성 등이 좋은 예이다. 자세한 문법에 대한 사용 등은 설명을 생략할 것이다. 궁금하신 분들은 다음 블로그를 참고하시기 바란다. https://blog.naver.com/ilgolc/222474673407 Java_11일차(기선님) 열거체(Enumeration type) C언어와 C++에서는 열거체를 사용할 수 있지만, JDK 1.5 이전의 자바에서... blog.naver.com 자 그러면 열거 타입을 올바르게 사용할 수 있도록 다 같이 공부해보자 int 상수 대신 열거 타입을 사용하라 먼저 정수 열거 타입 패턴에 대해 알아볼 필요가 있다. 코드를 보자 public class Intege..
저번 시간에는 Generic을 사용하는 이유에 대해 자세하게 살펴보았다. 하지만 Generic은 너무 딱딱하다. 하나의 타입을 정의해놓으면 그 타입 외에는 어떠한 요소도 들어올 수 없다. 상속을 받더라도 마찬가지이다. 이러한 동작은 리스코프 치환원칙에 위배되는 설계이다. 상위 타입이 하는 일을 제대로 수행할 수 없기 때문이다. 자바는 이러한 문제에 대해서도 해결책을 갖고 있다. 한정적 와일드 카드 타입 Stack 클래스를 한 번 살펴보자 public class Stack { public Stack(); public void push(E e); public E pop(); public boolean isEmpty(); } 여기에 모든 원소를 스택에 넣는 메서드를 추가해보자 public void pushAl..
대부분 제네릭에 대해 잘 알고 있다고 시작하는 포스팅이니 잘 모른다면 기본을 공부해보고 오는 것을 추천한다. https://blog.naver.com/ilgolc/222552815030 Java_Week14 Generics 란? 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크... blog.naver.com 제네릭 기초에 관한 내용들이 포스팅 되어 있으니 한 번 보고 이 글을 읽기를 바란다. 제네릭은 자바 5 부터 나온 문법으로 기본적으로 컬렉션에서 많이 볼 수 있었을 것이다. 제네릭은 다음 처럼 사용할 수 있다. List list = new ArrayList(); // 뒤에 선언 부에는 생략이 가능 그럼 바로 시작해보자. 로 타입 보다 Generic 제네릭을 사용..
HashTable은 컬렉션 프레임워크가 만들어지기 전에 존재하던 것이다. 하지만 호환을 위해 설계를 변경해서 남겨 두었다. 사용한다면 말리진 않겠지만 추천하진 않는다.(HashMap or ConcurrentHashMap) 사용 권장 HashTable은 이름 그대로 해시 테이블을 구현한 클래스로 거의 HashMap과 사용법이 동일하다. public class HashTableEx { public static void main(String[] args) { Hashtable hashtable = new Hashtable(); hashtable.put("1", "kim1"); hashtable.put("2", "kim2"); hashtable.put("2", "kim3"); hashtable.put("3", ..
객체지향 생활 체조 원칙에는 9가지의 원칙이 존재한다. 그 중에 규칙 8을 인용해보면 다음과 같은 규칙이 존재한다. 규칙8. 일급 컬렉션을 사용하라 이 규칙의 적용은 간단하다. 컬렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 컬렉션은 매우 유용한 원시타입이다. 많은 동작이 있지만 후임 프로그래머나 유지보수 담당자에 의미적 의도나 단초는 거의 없다. 간단하게 먼저 일급 컬렉션을 보여드리자면 다음과 같다. List list = new ArrayList(); list.add(3); list.add(4); list.add(6); list.add(1); 위 코드를 객체로 한번 감싸 주는 것이다. public class PeopleQueue { private List peoples; public P..
우리는 Wrapper Class에 대해 알 필요가 있다. 스터디 취지에 맞게 기본적인 설명은 빼도록 하겠다. 자 그러면 Wrapper Class를 사용하면서 얻는 이점이 무엇일지 생각해보자. 무의미한 값을 명확하게 표시할 수 있다. @Id @GeneratedValue @Column(name = "user_id") private Long id; 위 코드는 고유 식별 값을 저장 하기위한 Entity 객체의 멤버 변수이다. 우리는 보통 id를 Long으로 선언하는데 이유는 간단하다. null이 담길 수 있기 때문이다. 기본형 타입은 null을 담을 수 없어 default가 0이라는 의미 있는 값이 담기게 된다. 그렇기에 개발자의 실수로 값이 안들어 가더라도 0이라는 의미가 있는 리터럴 변수가 들어가기에 아무런..
오늘의 주제는 Stream이다. 실무에서 많이 사용하고있는 문법인 Stream은 가독성을 높여주고 지연 연산을 통해 성능을 최적화 할 수 있다. 우리는 그럼 이러한 많은 장점을 보유한 Stream을 다음 순서로 알아볼 것이다. Stream에 존재하는 다양한 메서드 생성하기 가공하기 결과 만들기 동작 순서 성능 향상 지연 처리 Null-safe Stream 생성 줄여 쓰기 자 그럼 시작해보자! Stream에 존재하는 다양한 메서드 우린 차근 차근 Stream을 생성하고 가공하고 결과를 만드는 것을 차례대로 해볼 것이다. 그저 문법이기 때문에 그렇게 어렵지 않을 것이다. 그렇다면 같이 Stream을 생성하여 결과를 만들어보자 !! 1. 생성하기 먼저 배열을 통해 Stream을 생성해보자 ! public cl..
- Total
- Today
- Yesterday
- 프로그래밍
- 인터뷰
- 취준
- IT
- 게시판
- Redis
- swarm
- Spring
- thread
- 면접
- 취업준비
- JPA
- 취업
- 코딩
- docker
- 프로젝트
- 자바
- 코드
- 동시성
- DevOps
- 면접 준비
- MySQL
- 면접준비
- 개발자
- 백엔드
- 개발
- CS
- Kotlin
- java
- DB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |