시나리오 요구사항에 대한 로직을 작성하다가 아래와 같은 생각이 들었다고 하자 너무나도 많은 흩어진 부분에서 공통적으로 적용되는 로직 존재 이러한 로직을 AOP(Aspect Oriented Programming)를 활용해서 공통 모듈화 위의 로직은 All or Nothing을 지켜야 하기 때문에 Transaction 처리가 필요하다고 가정하자 그러면 여기서 가장 심플하게 생각할 수 있는 구현 방안은 아래와 같다 Spring에서 제공해주는 @Aspect를 활용해서 Advice를 정의 적절한 위치에 대한 Pointcut을 정의해서 AOP 적용 All or Nothing을 지키기 위해서 Spring에서 제공해주는 @Transactional 활용 @Aspect @Component class ExtractCommo..
Hash Function 데이터를 효율적으로 관리하기 위해서 임의의 길이를 가진 데이터 → 고정된 길이의 데이터로 매핑해주는 단방향 함수 특정 데이터에 대한 Hash Function을 적용해서 도출된 값을 Hash라고 한다 인터스텔라 → 20033 헬로우월드 → 12345 010-1234-4321 → 51231 ... Perfect Hash Function 서로 다른 객체 X, Y에 대해서 X.equals(Y)가 거짓이면 X.hashCode() != Y.hashCode()임을 보장할 수 있는 해시 함수 자료형 관점에서 값이 2개밖에 없는 Boolean이나 값 자체를 해시 함수로 표현할 수 있는 Integer, Long, ..과 같은 자료형들은 완전한 해시 함수를 구현할 수 있다 그러나 String이나 임..
GitHub - sjiwon/security-jwt: Spring Security + JWT를 이용한 간단한 예제 Spring Security + JWT를 이용한 간단한 예제. Contribute to sjiwon/security-jwt development by creating an account on GitHub. github.com 깃허브 코드 부트 버전 = 3.2.0 Session vs Token [Network] Cookie & Session & Token HTTP의 Stateless HTTP 프로토콜은 기본적으로 요청 응답이 진행한 후 이전 통신에 대한 상태를 저장하지 않는 Stateless한 구조를 가지고 있다 HTTP가 Stateless함에 따라 다음과 같은 이점이 존재한다 상 sjiwon..
개선 포인트 GitHub - sjiwon/study-with-me-be: 여기서 구해볼래? Backend Repository (Refactoring) 여기서 구해볼래? Backend Repository (Refactoring). Contribute to sjiwon/study-with-me-be development by creating an account on GitHub. github.com 스터디 모집부터 진행 관리까지 하는 Study With Me 웹 애플리케이션에는 여러가지 기능이 있지만 본 포스팅에서 개선할 기능은 스터디 주차 생성이다 @RestController @RequiredArgsConstructor @RequestMapping("/api/studies/{studyId}/weeks") ..
CORS Cross-Origin Resource Sharing (CORS) - HTTP | MDN Cross-Origin Resource Sharing (CORS) is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources. CORS also relies on a mechanism by which developer.mozilla.org 웹 개발을 하다보면 언젠가 한번쯤은 CORS 관련 오류를 만날 수 밖에 없다 그러면 CORS란 뭘까? CORS (Cr..
문제 상황 [Spring] 부하 분산 & 서버 가용성을 위한 로드밸런싱 개요 [Spring] 테이블 조인 + 그룹 함수를 통한 정렬 쿼리 튜닝기 (with nGrinder 부하테스트) 개요 GitHub - sjiwon/study-with-me-be: 여기서 구해볼래? Backend Repository (Refactoring) 여기서 구해볼래? Backend Repository sjiwon-dev.tistory.com SPOF 구조를 해결하고 부하 분산, 가용성, 응답 최적화, ..등을 위해서 WAS Scale Out을 진행하였다 하지만 서버 로그를 살펴보다가 문제가 하나 발생한것을 파악했다 @Component @RequiredArgsConstructor public class UpdateWeeklyAtt..
개요 [Spring] 테이블 조인 + 그룹 함수를 통한 정렬 쿼리 튜닝기 (with nGrinder 부하테스트) 개요 GitHub - sjiwon/study-with-me-be: 여기서 구해볼래? Backend Repository (Refactoring) 여기서 구해볼래? Backend Repository (Refactoring). Contribute to sjiwon/study-with-me-be development by creating an account on GitHub. github.com 본 sjiwon-dev.tistory.com [Spring] ThreadPool & HikariCP 튜닝 (with nGrinder 부하테스트) 개요 [Spring] nGrinder 부하 테스트 1) 쿼리 튜..
Class Loader 자바 소스코드가 실행되는 과정은 다음과 같다 자바 컴파일러가 소스 코드(.java) → 바이트 코드(.class)로 컴파일 생성된 바이트 코드는 완전한 기계어가 아니고 JVM이 이해할 수 있는 레벨의 코드 컴파일된 바이트 코드를 필요한 시점에 Class Loader가 JVM Runtime Data Area에 동적 로드 클래스 로딩은 Lazy Loading 방식으로 실제 해당 클래스가 사용될 때까지 로딩을 미룬다 로드된 바이트 코드를 인터프리터 & JIT 컴파일러에 의해서 기계어로 번역한 후 실행 ClassLoader의 주요 역할은 컴파일된 바이트 코드를 필요한 시점에 동적으로 JVM에 로드하고 이 과정에서 여러 검증 및 초기화를 진행한다 Class Loader 원칙 1. Deleg..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.