일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- AVL트리
- 최대 힙
- SpringSecurity
- 멀티프로세서
- 연결리스트
- 점근적 표기법
- HTTP
- 완전이진트리
- 연결리스트 종류
- 이분탐색이란
- 강화학습
- posix
- 스케줄링
- 엔티티 그래프
- MSA
- 프로세스
- 운영체제
- heapq
- JPA
- 최소힙
- JVM
- jpa n+1 문제
- spring
- python
- Kruskal
- 알고리즘
- 백준장학금
- 힙트리
- 백준 장학금
- 자료구조
- Today
- Total
목록백엔드 (27)
KKanging

MySQL 전체 구조MySQL 구조는 클라이언트의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와SQL 파서 및 전처리기 SQL 옵티마이저와 캐시 와 버퍼로 이루어진 MYSQL 엔진과 스토리지 엔진으로 구성되어 있다MySQL 엔진은클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 쿼리의 최적화된 실행을 담당하는 옵티마이저가 주를 이룬다.SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당하는 처리를 수행한다.스토리지 엔진은, 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어오는 부분은 스토리지 엔진이 전담한다.스토리지 엔진을 여러대를 사용할 수 있다?MySQL 서버에서 엔진은 MySQL 엔진은 하나이지만 스토리지 엔진은 여러 대..

센서 디스플레이 예제가정WeatherDataDisplay 종류이 세 가지 메서드는 각각 가장 최근의 온도, 습도, 그리고 기압 측정값을 반환한다. 우리는 이러한 변수들이 어떻게 설정되는지 신경 쓸 필요가 없으며, WeatherData 객체가 외부 장치인 WeatherStation으로부터 업데이트된 정보를 얻는 방법을 알고 있다.요구 사항이 화면들은 WeatherData가 새로운 측정값을 받을 때마다 업데이트되어야 한다.시스템은 확장 가능해야 한다일단 구현Copypublic class WeatherData { private CurrentConditionDisplay currentConditionDisplay; private StatisticsDisplay statisticsDisplay; private F..

문제 상황오리 문제가정모든 오리는 소리를 낼 수 있다(quack)모든 오리는 수영을 할 수 있다(swim)오리의 종류마다 외형만 다르다.(display)설명모든 오리는 quack 과 swim operation을 가지고 있기 때문에 추상 클래스로 quack 와 swim 을 가지게 하고 추상 메서드로 display 를 구현하게 하였다.추가 요구 사항(fly)추가 요구 사항오리는 날 수 있다.설명오리는 날 수 있기 때문에 fly 라는 operation 을 추가해야한다.다행이도 현재 MallardDuck 과 RedheadDuck은 fly 동작을 하므로 추상 클래스인 Duck 에 fly를 impl 하였다.에러 상황설명RubberDuck 추가 : 소리를 다른 오리와 다르게 냄, 날지 못함DecoyDuck 추가 : ..

동시성 제어란동시성 제어가 왜 필요할까?위 이미지 처럼 2개의 트랜잭션이 실행되었다고 가정하자트랜잭션 A 는 x와 y를 더해 y값을 수정하고트랜잭션 B는 x와 y를 더해 x값을 수정한다.위 예시는 정상적인 흐름의 실행 예시이다.하지만 트랜잭션이 동시에 실행됐다고 가정해보자.위 이미지 과정처럼 트랜잭션 A가 실행하다가 다른 트랜잭션에 switching 될 수도 있고 꼭 트랜잭션이 동시에 시작하지 않더라도 동시에 실행되는 트랜잭션은 어떻게 switching되어 어떤 실행 결과가 나올지 예상할 수 없다.(이러한 동시성 문제를 운영체제에선 경쟁조건:race condition 이라고 부른다) 데이터베이스에서 동시성 문제를 어떻게 해결할까?데이터베이스에서 이러한 동시성 문제를 락으로 해결한다(운영체제에서도 존재하는..

AOP 적용 시점위빙이란AOP 적용 시점을 알기 위해서는 위빙(Weaving)이라는 단어를 알아야 한다.우리가 분리한 핵심 로직과 부가 기능 로직이 결합되는 시점을 의미한다.따라서 그 시점에 따라 다음과 같이 구분된다.AOP 적용 시점컴파일 타임 위빙(Compile-Time Weaving)컴파일 타임 위빙(Compile-Time Weaving)런타임 위빙(Runtime Weaving)자바에서 사용하는 대표적인 AOP 기법Spring AOP는 2가지 기법을 채택하였다.JDK Dynamic 프록시JDK Dynamic 프록시는 Reflection API 의 Proxy를 사용해서 구현한다.프록시 팩토리에 의해 런타임 시 다이나믹하게 만들어지는 오브젝트Target의 인터페이스를 상속하는 구조로 사용된다따라서 cl..

자바 개발자가 AOP를 공부 해야하는 이유관점 지향 프로그래밍 기법이란핵심 기능과 부가 기능우리가 개발할 때를 생각해보자도메인 로직을 개발할 때 보면 항상 “도메인 로직만” 개발할 수 있을까?컴포넌트 로깅을 위해 모든 메서드에 로그를 찍는다거나DB와 트랜잭션을 연결하기 위해 트랜잭션 connection 을 한다던가 하는일련의 핵심기능을 위해 해야하거나 부가적인 필요 때문에 해야하는 부가기능 로직이 항상 들어가게 된다.핵심 기능 : 해당 객체가 제공하는 고유의 기능부가 기능 : 핵심 기능을 보조하기 위해 제공되는 기능 ( ex: 로그 추적 기능, 트랜잭션 기능 )이러한 부가 기능을 바로 횡단 관심사라고 한다.객체 지향 프로그래밍으로 어느 정도 SRP를 따르면서 클래스의 책임을 분리할 순 있어도 도메인 로직..

UsernamePasswordAuthenticationFilter란우리가 로그인을 시도할 때 Security에서 기본적으로 동작하는 Filter이다.Security에서 디폴트로 제공하고 만약 SecurityFilterChain을 커스텀한다면 제공해주지 않는다.즉, 우리가 주로 커스텀 해야하는 Filter라는 뜻이다.AuthenticationFilter 구조AuthenticationFilter의 기본 호출 구조이다.호출 순서는 다음과 같다AuthenticationFilter호출UsernamePasswordAuthenticationToken (비인증) 생성AuthenticationManager.authenticate(token) 호출구현체인 ProviderManager 호출ProviderManager 는 A..

CorsFilterCorsFilter는 서버의 Cors 공격을 막기 위한 Fitler이다. 같은 Origin 이 아닌 출처에 대한 요청을 막기위함이다.Cross-Origin이란?위와 같이 프로토콜 + hostname + port 중에 하나라도 다르면 Cross Origin 모두 같으면 동일한 Origin이라고 칭한다.옛날에는 서버 와 프론트 서버가 동일한 서버에 있는 경우가 많았으므로 위와 동일한 Origin 에 대한 요청만 허용하도록 해서 보안을 강화하였다.하지만 요즘에는 API 서버로 많이 사용하기 때문에 프론트 서버와 백엔드 서버가 다른 경우가 많다. 이런 경우에는 대부분 백엔드 서버에서 특정 Origin을 명시적으로 허용해줘야 한다.즉Origin : protocal + hostname + port..

SecurityContextFilter의 역할SecurityContextFilter은 세션 기반의 서버를 구현했을 때 사용자가 인증을 기반을 하는 요청을 보낼 때 세션 id에 해당하는 SecurityContext 를 가져오고 ContextHolder에 Load한다. 코드 뜯어보기SecurityContextHolderFilterGenericFilterBean을 상속 받고SecurityContetRepository 와 SecurityContextHolderStrategy 를 참조 한다.request에 이 FILTER를 거쳤다는 확인을 위해 값을 저장한다.securityContextRepository로 사용자가 보낸 세션 id에 해당하는 객체를 세션 DB에서 조회후 가져온다. Supplier은 지연된 로딩을 ..

SecurityFilterChain 의 Filter들은 어떻게 구현되어 있을까?기본 디폴트로 Security 에서 제공하는 Filter들의 상속도를 그려봤다. 위에 구조를 자세히 보면 제일 최상위 서블릿에서 제공하는 Filter 와 Filter를 상속받는 GenericFilterBean 그리고 GenericFilterBean를 상속 받는 OncePerRequestFilter 가 있는 것을 볼 수 있다. 위에 의존관계가 복잡해 보이지만 패턴이 보인다. SecurityFilterChain에 구현체인 Filter들은 모두 GenericFilterBean 또는 OncePerRequestFilter 를 상속 받음을 볼 수 있다. 그래서 우리가 기본 디폴트로 제공되는 Filter 말고 커스텀을 할려면 위에처럼 ..