스프링MVC는 왜 스레드를 최대 200개까지 사용할까?
·
💻 Dev/Spring
스프링 MVC는 웹 애플리케이션 개발에서 널리 사용되는 프레임워크이다.많은 사람들이 스프링을 왜 쓰냐 하면 거의 다 "스레드가 많아서", "대규모 트래픽 처리할 수 있어서"라고 한다.사실 스레드 개수 문제가 아니다 🙅‍♀️node.js는 적은 스레드로 논블로킹을 사용해서 충분히 트래픽을 처리한다. 스프링 MVC 기준 스레드 풀의 max값은 200이다.server: tomcat: threads: max: 200 # 생성할 수 있는 thread의 총 개수 min-spare: 10 # 항상 활성화 되어있는(idle) thread의 개수 max-connections: 8192 # 수립가능한 connection의 총 개수 a..
자바 직렬화(Java Serializable)
·
💻 Dev/Java
자바 직렬화란?자바 직렬화(Java Serialization)는 자바 객체를 바이트 스트림으로 변환하여 저장하거나 네트워크로 전송한 후 다시 복원할 수 있도록 하는 기술이다.주로 외부 파일이나 네트워크를 통해 객체 데이터를 주고받을 때 사용된다.JSON은 웹(Web) 뿐만 아니라 게임 쪽에서도 설정 파일로 쓰이거나 데이터를 교환할 때 범용적으로 사용된다.그리고 직렬화는 오로지 자바 프로그램에서만 사용이 가능하지만, JSON 형태로 객체 데이터를 저장해 두면 파이썬, 자바스크립트에서도 범용적으로 사용이 가능하다. 문득 이런 생각이 들 것이다. CSV, JSON 이라는 훌륭한 데이터 포맷이 있는데 굳이 자바 직렬화가 필요할까? 자바 직렬화를 왜 사용할까?1. 자바 환경에서만 객체를 저장하거나 전송해야 할 때..
자바는 왜 Lambda&Stream을 도입했을까? feat.함수형 프로그래밍
·
💻 Dev/Java
자바는 8 버전부터 람다(Lambda)와 스트림(Stream)을 도입하며 기존의 객체 지향 프로그래밍 언어로서의 한계를 극복하고 함수형 프로그래밍 패러다임을 지원하기 시작하였다. 왜! 람다와 스트림을 도입한 건지, 이들이 함수형 프로그래밍과 어떤 연관이 있는지 araboza 기존에는 어땠을까?자바 7까지는 반복적인 데이터 처리를 위해 명령형 프로그래밍(Imperative Programming)을 주로 사용했다.이 방식은 코드가 길고 복잡해지는 문제가 있었으며 간단한 작업조차도 반복문과 조건문을 결합해야 하는 번거로움이 있었다.예를 들어 리스트에서 특정 조건을 만족하는 데이터를 필터링하려면 다음과 같은 절차적 접근 방식을 사용해야 했다.List names = Arrays.asList("Alice", "Bo..
ArrayList의 add()로 보는 동적 복사 과정
·
👶🏻 CS/Data Structure
add()public boolean add(E e) { modCount++; add(e, elementData, size); return true; }private void add(E e, Object[] elementData, int s) { if (s == elementData.length) elementData = grow(); elementData[s] = e; size = s + 1; } 처음 add(E e)메서드를 호출하게 되면 오버로딩된 add(e, elementData, size)를 호출한다.이 메서드에는 추가할 데이터(e), 현재 배열(elementData), 배열의 현재 크기(size)가 전달된다. 현재 배열 크기..
[F-Lab] 6주차 회고
·
📝 끄적끄적/F-Lab
사전 질문MyBatis vs JPA`Arrays.copyOf` 의 복사 방식 사전 학습프로젝트기획 수정프로토타이핑 수정요구사항정의성 수정유저시나리오 작성도메인 문서 작성모델 문서 작성이론(최범균의 JSP 2.3 웹 프로그래밍)Chapter 1~4Chapter 9, 10Chapter 14Chapter 17~20 (완독) 멘토님 질문스프링 MVC가 Context Switching에도 불구하고 스레드 개수를 수백 개까지도 늘리는 이유Context Switching을 아낄 수 있는 방법synchronized(모니터락)Java Serializable함수형 프로그래밍과 Stream, 람다와의 관계성ThreadLocal 느낀 점이번주는 저번주에 많이 못한 걸 반성하고자 프로젝트 산출물도 다 작성하고, JSP 책도 완..
HashMap(구현 방식, 해싱, 해시 함수, 해시 충돌)
·
👶🏻 CS/Data Structure
해싱이란 무엇인가?데이터를 키(key)와 값(value) 형태로 저장하는 경우, 키를 입력받아 특정 위치를 계산하는 과정을 해싱이라고 한다.이때 사용되는 함수가 해시 함수(Hash Function)이며, 해시테이블의 키 값으로 레코드가 저장되어 있는 주소(혹은 색인)를 산출하는 함수이다.함수의 출력값을 해시 값(Hash Value) 또는 해시 코드(Hash Code)라고 부른다.  HashMap의 구조와 작동 원리HashMap은 데이터를 키-값 쌍으로 저장하는 자료구조로 내부적으로 배열과 연결 리스트를 조합하여 구현된다. 데이터 저장의 기본 구조HashMap은 데이터를 저장하기 위해 배열을 사용한다.이 배열의 각 위치를 버킷(Bucket)이라고 부르며, 해시 함수가 반환한 값을 기반으로 데이터가 특정 버..