Java 백엔드 핵심 난제: 멀티스레드 동시성 이슈와 ThreadLocal 동작 원리 및 가비지 컬렉션 최적화1. 멀티스레드 환경의 아킬레스건: 동시성(Concurrency) 이슈와 상태 공유Tomcat과 같은 현대 웹 애플리케이션 서버(WAS)는 수많은 사용자의 요청을 처리하기 위해 멀티스레드(Multi-Thread) 모델을 기반으로 동작합니다. 대다수의 Spring 백엔드 컴포넌트는 메모리 효율성과 초기화 오버헤드를 줄이기 위해 **싱글톤(Singleton) 스코프**로 생성되어 전역에서 공유됩니다.이때 싱글톤 객체 내부에서 상태 변화가 가능한 인스턴스 필드(멤버 변수)를 공유하게 되면, 여러 스레드가 동시에 동일한 메모리 주소에 접근하여 값을 덮어쓰는 '데이터 레이스(Data Race)' 및 동시성..
Spring Boot + Spring Security 환경에서 표준 방식으로 로그인 기능을 구현하는 방법을 설명합니다.1. 개발 환경항목버전Java17 이상Spring Boot3.xSpring Security6.xDBMariaDB / MySQLBuild ToolGradle2. 로그인 구조Client Browser ↓HTTPS 요청 ↓Spring Security Filter ↓AuthenticationManager ↓UserDetailsService ↓DB 사용자 조회 ↓BCrypt 비밀번호 검증 ↓인증 성공 / 실패3. 의존성 추가build.gradledependencies { implementation 'org.springframework.boot:spring..
Java에서 문자열을 다루는 데 있어 substring()은 가장 기본적이면서도 강력한 메서드입니다. 자바의 String 클래스가 제공하는 이 함수는 특정 인덱스를 기준으로 문자열을 자르고 부분 문자열(Sub-string)을 추출하는 데 사용됩니다.입문자부터 고급 개발자까지 모두 참고할 수 있도록 기본 문법, 동작 원리, 주의사항, 관련 함수, 그리고 실무형 고급 예제까지 상세히 정리해 드립니다.1. Substring 기본 문법 및 특징자바의 substring() 메서드는 크게 두 가지 형태로 오버로딩되어 있습니다.① substring(int beginIndex)설명: beginIndex부터 문자열의 끝까지를 잘라서 반환합니다.특징: 인덱스는 0부터 시작합니다.② substring(int beginInd..
Java의 세션 생명주기(Session Life Cycle)는 웹 애플리케이션에서 클라이언트와 서버 간의 상태를 유지하기 위한 핵심 메커니즘입니다. HTTP 프로토콜의 비연결성(Stateless)을 극복하기 위해 도입된 세션의 생성부터 소멸까지의 전 과정을 상세히 정리해 드립니다.1. 세션(Session)의 개념과 필요성HTTP 프로토콜은 Stateless합니다. 즉, 클라이언트가 보낸 이전 요청의 정보를 서버가 기억하지 못합니다. 로그인 정보, 장바구니 목록 등을 유지하기 위해 서버 측 메모리에 사용자 정보를 저장하는 저장소가 바로 HttpSession입니다.세션과 쿠키의 관계세션은 서버에 정보를 저장하지만, 서버가 클라이언트를 식별하기 위해 JSESSIONID라는 고유 ID를 쿠키에 담아 클라이언트에..
Java에서 함수의 실행 시간을 측정하는 가장 보편적이고 정확한 방법은 System.currentTimeMillis() 또는 System.nanoTime()을 사용하는 것입니다. 밀리초(ms) 단위 측정이 목적이라면 currentTimeMillis()를 사용하면 됩니다.실무에서 바로 활용하실 수 있도록 기본적인 방법부터 가독성을 높인 방법까지 단계별로 설명해 드릴게요.1. 가장 기본적인 측정 방식함수의 시작 직전과 종료 직후에 시간을 기록하여 그 차이를 계산하는 방식입니다.Java public class ExecutionTimeExample { public static void main(String[] args) { // 1. 시작 시간 기록 (밀리초 단위) long sta..
- Total
- Today
- Yesterday
- 정보처리기사
- html
- 문자열
- C언어
- 리스트
- 문제풀이
- Class
- DB연동
- C++
- Java
- 배열
- MySQL
- 안드로이드
- C
- 블루투스
- 상속
- 벡터
- 아두이노
- 자바
- String
- 자료구조
- 파일처리
- 클래스
- c#
- OpenCV
- 알고리즘
- 파이썬
- Android
- 데이터베이스
- C++ 클래스
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |