분류 전체보기 128

링크 모음

학습,이직,면접 리뷰https://velog.io/@prettylee620/인프런-멘토-우연님-후기이자-방향성-초보개발자의-고민들     블로그 링크 모음 @Async는 어떤식으로 실행될까? (tistory.com)https://etloveguitar.tistory.com/101https://ch4njun.tistory.com/269  it회사 기술블로그국내외 IT 기업 기술 블로그 + 큐레이션 사이트 모음.zip » 혼자 공부하는 책 (hanbit.co.kr)  테스트 코드[Java] JUnit을 활용한 Java 단위 테스트 코드 작성법 (2/3) - MangKyu's Diary (tistory.com)[TDD] 단위 테스트와 TDD(테스트 주도 개발) 프로그래밍 방법 소개 - (1/5) - MangK..

기타 2023.05.03

공유 자원에 대한 동시성 처리(ex) 좋아요 기능, 재고 시스템 상품 구매, 주식 매매)

redis 분산 락을 사용하는 이유 (1) 토스ㅣSLASH 22 - 애플 한 주가 고객에게 전달 되기까지 - YouTube 상품을 구매하거나 주식을 매매하는 시스템에서는 재고나 잔고와 같은 공유자원을 동시에 갱신하는 트랙잭션이 여러개 발생합니다. 이 때 공유 자원에 대해서 각 사용자의 수정사항이 무시되지 않고 데이터의 일관성을 유지시키고 데드락을 방지하기 위해 안전한 동시성 처리가 필요합니다. 대표적인 방법으로는 디비 락을 걸어서 처리할 수 있습니다. 하지만 성능저하와 데드락이 많이 발생할 수 있고 MSA구조인 경우 각 서비스 모듈 간의 결합도가 올라갈 수 있고 스케일 아웃한 경우에도 각 서버들이 데이터의 일관성을 유지하기 위한 별도 처리가 필요하기 때문에 다른 방법을 사용합니다. 요청이 몰리는 경우 대..

캐시

- 캐시를 사용하는 이유 - 어떤 캐시 기술을 사용하는 것이 적합한지 - EhCache의 설정 옵션들 공부 예정 : 캐시 전략, 분산 캐시 - 캐시가 뭔지, 캐시를 사용하는 이유 캐시란 자주 사용되는 데이터를 일시적으로 저장할 수 있는 임시 저장공간입니다. 디스크 즉 DB에서 데이터를 얻어오는 것보다 훨씬 빠른 I/O성능을 얻을 수 있기 때문에 사용합니다. 데이터를 빠르게 읽어옴으로써 서버 부하를 줄이고 요청 속도를 높일 수 있습니다. - 어떤 캐시 기술을 사용하는 것이 적합한지 어떤 캐시 기술을 사용할지는 어플리케이션의 요구사항과 사용 목적에 따라서 선택해야합니다. 캐시 기술을 선택할 때는 캐싱속도, 캐시를 사용하려는 서버 구조, 캐시 데이터의 크기, 데이터의 유지성, 별도 비용 등을 고려해야합니다. ..

오류 해결 - 순환참조 The dependencies of some of the beans in the application context form a cycle

순환 참조 오류 The dependencies of some of the beans in the application context form a cycle: 2023-01-11 17:23:41.435 ERROR 10128 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | securityConfig (field priv..

게시판 개인 프로젝트 JPA 이슈 해결 - N+1, LazyInitializationException

서론 JPA를 사용하면 연관관계를 갖는 엔티티에 의해 N+1 문제가 생긴다고 하던데, 게시판 개인 프로젝트에서도 게시물 목록을 조회 시 N+1 문제가 발생했다. 추가적으로 연관관계에서 성능을 위해 FetchType을 EAGER 보단 LAZY로 변경하는 걸 권장하길래 글 엔티티와 댓글 엔티티 연관관계에서 FetchType을 LAZY로 변경했더니 게시글 글 조회 시 LazyInitializationException 으로 인한 500Error가 발생했다. 위 2가지 문제 상황에 대해서 해결해보자. "배운점 선 요약"에서 주요 학습 내용 요약을 보고 "버그 내용", "처리 내용 및 결과"의 상단 부분을 보면 된다. 자세한 내용은 ""에 작성하였다. 게시판 개인 프로젝트에서 소스 참조 : https://githu..

Project & Issu 2023.05.02

Hash 자료구조, hashCode()와 equals() 재정의, List/Map/Set, String/StringBuilder/StringBuffer, int/Integer

Hash 자료구조는 key-value 형태로 저장되는 자료구조이고 해시 함수를 이용해서 저장, 검색하기 때문에 해시충돌이 일어나지 않는 경우에 속도가 빠르다는 장점이 있고 메모리를 미리 만들어놓고 메모리를 사용하지 않는 경우가 있기 때문에 공간 효율이 안좋고 해시 함수에 의해 해시 충돌이 많이 일어나는 경우 성능이 안좋아 질 수 있다는 단점이 있습니다. 해시 충돌이란 해시 자료구조에 저장을 할 때 키로 해시함수를 이용해 계산한 해시를 주소로 하는 위치에 값을 저장하는건데, 이 때 서로 다른 키를 해시 함수로 계산했는데 같은 값이 나오는 경우를 말합니다. 그래서 해시 충돌이 일어나느 경우 개방형주소 방벙, 채이닝 방법 같은 걸 사용해서 해결을 합니다. 개방형 주소는 해시충돌이 일어나는 경우 다른 해시값을 ..

java 버전 별 특징

참고 : https://www.youtube.com/watch?v=_6YP2FNTt80 java8부터 람다표현식, 스트림, 인터페이스의 default, optional이 추가됐다는 는 특징이 있습니다. 람다표현식은 함수형으로 프로그래밍 할 수 있게 되었고 스트림을 통해서 반복문을 병렬처리로 좀 더 빠르게 할 수 있게 되었고 인터페이스에서 default 메서드를 추가할 수 있게 돼서 공통 메서드를 인터페이스에서 구현할 수 있게 됐고 null이 될 수 객체를 감싸는 래퍼클래스 Optinal을 통해서 null 처리를 좀 더 잘 할 수 있게 되었습니다. java11에는 String 클래스에 isBlank같은 특정 메서드가 추가되었고 File클래스에 readString, writeString 같은 메서드가 추가 ..

git 기초 정리

git이란버전 관리 시스템으로써 코드의 수정 사항을 관리하고 각 수정 사항들에 대해서 공유, 병합, 특정 시점으로 복원하는 등의 기능이 있기 때문에 프로젝트 진행 시 생성성을 높이기 위해 사용합니다. 1. git repository로 만들기1-1. 작업하던 프로젝트롤 git repository로 지정하고 git 원격 저장소와 연결git init : 새로운 git 저장소를 생성, .git 티렉토리 생성, .git 디렉토리는 해당 디렉토리를 버전 관리하는데 필요한 정보가 저장되는 곳git remote : git 원격 저장소와 연결 1-2. 원격저장소의 프로젝트를 받아와서 git repository로 만들기git clone 2. 소스 코드 수정 후 원격 저장소에 올리기git add : git Stage 영역에..

filter, interceptor, aop

[10분 테코톡] 조시, 쿤의 서블릿 필터 & 스프링 인터셉터 - YouTube> filter, intercepter, aop는 보안처리, 인증, 권한 처리, 로깅과 같은 공통 관심사항을 따로 처리하는 데 사용되는 기술입니다. filter와 intercepter의 경우에는 파라미터로 ServletRequest와 ServeltResponse를 제공해주기 때문에 HTTP 헤더에 직접 접근이 가능하기 때문에 웹과 관련되 기능을 구현하는데 적합합니다. filter filter는 부가작업을 처리하기 위해 자바 표준 스펙이고 톰캣과 같은 웹 컨테이너에서 제공하는 기술입니다. Dispetcher Servlet가 실행하기 전이나 종료된 후에 동작합니다. 요청을 보낼 때는 Dispetche..

JVM, Garvage collection, Memory leak, Out Of Memory

JVM JVM(Java Virtual Machine)은 자바 어플리케이션을 실행하기 위한 가상 머신입니다. JVM은 자바 코드를 읽어서 실행하고, 메모리 관리, 스레드 관리, 가비지 컬렉션(Garbage Collection) 등의 작업을 수행합니다. GC gc란? Garvage collection은 자바의 메모리 관리 기법 중 하나로 Garvage Collector가 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 해제하는 프로세스를 말합니다. gc 장점 java 단에서 Garvage Collector가 메모리 관리를 대신 해주기 때문에 개발자는 메모리 관리를 하지 않아도 돼서 개발하는데 도움이 됩니다. gc 단점 단점..