[F-Lab] 7주차 회고
·
📝 끄적끄적/F-Lab
사전 질문생성형 AI 사용 사전 학습이론JSP 책 리마인드스프링 입문을 위한 자바 객체 지향의 원리와 이해 1, 2, 3장프로젝트Repository 생성 및 초기 세팅소셜 회원가입&로그인 진행 중 멘토님 질문웹JSP에서 request와 responseJSP파일이 브라우저 화면에 나오게 되는 과정쿠키세션JDBC커넥션 풀스레드 풀 느낀 점이번주는 본격적으로 프로젝트 레포지토리 파고, 초기세팅부터 개발 단계까지 들어갔다.예전에 사이드 프로젝트 하려고 이슈랑, PR 템플릿 만들고 뭐 컨벤션 정하는 거까지 많이 알아본 적이 있어서 여기 까지랑 초기 세팅은 쉽게 했다. 근데 REST API기반으로 개발하는 게 익숙하지가 않아서 플로우는 알겠는데 코드를 도저히 못 치겠어서 너무 절망스러웠다..ㅠㅠ dto, resp..
스레드 로컬(Thread Local)이란?
·
💻 Dev/Java & OOP
스레드 로컬이란?ThreadLocal은 멀티스레드 환경에서 각 스레드가 독립적인 데이터를 저장하고 관리할 수 있도록 지원하는 메커니즘이다. 여러 스레드가 동시에 실행되는 애플리케이션에서는 공유 데이터로 인해 경쟁 상태(race condition)가 발생할 수 있다.이러한 문제를 방지하기 위해 데이터를 스레드 간에 독립적으로 관리해야 할 때 ThreadLocal을 사용할 수 있다.  스레드 로컬이 필요한 이유1. 스레드 간 데이터 충돌 방지멀티스레드 환경에서 동일한 데이터를 여러 스레드가 동시에 접근하면, 의도치 않은 결과가 발생할 수 있다.(ex. race condition) ThreadLocal은 각 스레드가 독립적인 데이터를 유지할 수 있도록 하여 이런 충돌을 방지한다. 2. 세션 및 사용자 정보 관..
스프링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 & OOP
자바 직렬화란?자바 직렬화(Java Serialization)는 자바 객체를 바이트 스트림으로 변환하여 저장하거나 네트워크로 전송한 후 다시 복원할 수 있도록 하는 기술이다.주로 외부 파일이나 네트워크를 통해 객체 데이터를 주고받을 때 사용된다.JSON은 웹(Web) 뿐만 아니라 게임 쪽에서도 설정 파일로 쓰이거나 데이터를 교환할 때 범용적으로 사용된다.그리고 직렬화는 오로지 자바 프로그램에서만 사용이 가능하지만, JSON 형태로 객체 데이터를 저장해 두면 파이썬, 자바스크립트에서도 범용적으로 사용이 가능하다. 문득 이런 생각이 들 것이다. CSV, JSON 이라는 훌륭한 데이터 포맷이 있는데 굳이 자바 직렬화가 필요할까? 자바 직렬화를 왜 사용할까?1. 자바 환경에서만 객체를 저장하거나 전송해야 할 때..
자바는 왜 Lambda&Stream을 도입했을까? feat.함수형 프로그래밍
·
💻 Dev/Java & OOP
자바는 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 책도 완..