✨ 원하는 키워드 클릭 후 command + shift + L
4가지의 격리 수준 1. READ_UNCOMMITTED 2. READ_COMMITTED 3. REPEATABLE READ 4. SERIALIZABLE 1에 가까울수록 격리 수준이 낮다. 4에 가까울수록 격리 수준이 높다. 데이터가 중요한 서비스에서는 최소 3번째 격리수준을 사용한다고 한다. READ_UNCOMMITTED 잠금을 하지 않는다. dirty read가 발생한다. 커밋되지 않은 데이터도 조회할 수 있다. 변경되지 않을 데이터 조회 시에 해당 격리 수준을 사용하면 좋을 듯하다. READ_COMMITTED 커밋이 완료된 데이터만 조회할 수 있다. dirty read를 막아준다. Phantom read, non repeatable read이 일어날 수 있음 REPEATABLE_READ 데이터를 읽는 ..
java8을 기점으로 구조나 동작 방식이 변경되었다고 합니다 ^^... 정확한 내용은 다를 블로그를 참조해주세요 JVM (Java Virtual Machine) java확장자 파일을 compile하여 class확장자 파일(byte code)을 만들어 - compile class 확장자 파일을 사용하여 java application을 동작하게 합니다. - runtime JVM의 역할은 자바 애플리케이션을 JVM내의 클래스 로더로 읽어 실행시키는 것입니다. 그리고 OS들에 구애받지 않고 사용할 수 있게 JAVA와 OS사이에서 중개자 역할을 합니다. 또한 JVM내에 GC(Garbage Collector)가 존재해 사용되지 않는(참조) 데이터들을 정리합니다. ( 수정 필요 ) JVM 구조는 크게 4가지입니다. ..
머릿속에 있는 JWT 만드는 과정이 정답인지 확인해보기위해 라이브러리를 사용하지않고 토큰을 만들어봤습니다. 과정 Base64.getEncoder()에서 Encoder를 얻습니다. 해당 객체로 byte값을 인자로 넣으면 base64로 인코딩 된 바이트 배열을 얻을 수 있습니다. 그 후 각각 encodedHeader와 encodedPayload를 문자열로 캐스팅하여 header + "." + payload 형식으로 만듭니다. append 한 문자열을 hashing() 함수에 보냅니다. 위 함수에서 'SHA256'방식과 시크릿키를 사용하여 해싱을 합니다. 이때 필요한 게 MAC이라는 클래스입니다. 이 클래스는 "메시지 인증 코드"(MAC) 알고리즘의 기능을 제공합니다. MAC은 비밀 키를 기반으로 신뢰할 수 ..
async await은 JS의 비동기 패턴 중 제일 신상이며 ECMAScrip2017에서 추가되었다고 합니다. 기존 콜백 패턴과 프로미스 기능을 보완해줍니다. async fetchUser의 로직이 db통신 혹은 서버와의 통신으로 값을 받아온다고 가정합니다. 아래처럼 작성하면 fetchUser에서 계속 제어권이 잡힌 상태여서 값을 받기 전까지는 사용자가 아무 행동을 할 수 없게 됩니다. function fetchUser(){ //do request return 'user1'; } const user = fetchUser(); console.log(user); 간단하게 function키워드 앞에 'async'를 입력합니다. 그러면 promise기능을 사용했던 것처럼 비동기 방식을 이용할 수 있습니다. asy..
아직 공부 중인 내용이므로 정확하지 않습니다. 용어에 대하여 면접을 위해 사전적인 정의만 달달 외우는 건 시간낭비라고 생각하여 조금 시간이 걸리더라도 프로그래밍을 활용하여 개념들을 이해하도록 하였습니다. 네트워크에 관한 개념은 socket통신을 하며 공부를 하였습니다. java script, java에서 socket을 사용할 때 표현은 달랐지만 요구하는 정보는 같았습니다.(ip, port) tcp/ip로 구현할 때는 클라이언트와 연결을 하라고 사용해야 하는 클래스, 객체들의 이름에서 표현하고 있습니다. upd/ip는 연결을 지시하지는 않았습니다. (두 개의 터미널을 실행하고 각각 클라이언트, 서버 코드를 실행하였습니다. 고로 프로세스 단위마다 포트를 할당받고 연결을 받을 수 있는 것 같습니다.) tcp,..
연결리스트는 데이터와 다른데이터를 묶어주는 포인터(메모리 주소)로 구성되며 단위는 노드이다. 가장 간단한 구조는 다음 노드만의 주소와 데이터만 한노드로 구성된 것 그리고 각각 떨어진 장소에 노드들을 배치한다. 새로운노드에 기존노드의 참조주소만 넣으면 되기 때문에 데이터 삽입, 삭제가 빠름 인덱스를 사용하지않고 한노드가 다른노드를 참조할뿐이여서 원하는 노드를 찾아가는데 느림 단일 연결리스트 : 가장 간단한 구조, 위의 볼드체문장의 특징을 가짐 이중 연결 리스트 : 단일 연결리스트에서 이전 노드의 주소도 함께 가짐 원형 연결 리스트 : 단일 연결리스트에서 마지막 노드가 제일 처음 노드의 주소를 가짐
1.security 하드코딩 문제 security filter - controller 사이의 interceptor, entryPoint, advice에서 예외처리 로직(주로, 인증, 인가)이 많이 더럽게 작성되었다고 생각했습니다. 이 부분에 대하여 정리하고자 합니다. 예외 흐름을 컨트롤하는 부분은 아래 클래스에서 진행하도록 합니다. HandlerInterceptorAdapter AccessDeniedHandler OncePerRequestFilter CustomFilter(OncePerRequestFilter), CustomHandler(AccessDeniedHandler)를 등록합니다. 그리고 '올바른 권한인가?' 분기마다 어떤 클래스로 이동되는가 확인하기 위해 'ADMIN'권한을 필요로 하는 URL을..
- Total
- Today
- Yesterday
- jvm
- boot
- java8
- JDK8
- JPA
- 관계설정
- Spring
- 백준
- springboot
- 백준 제로
- 백준 제로 자바
- 백엔드
- jre
- JDK
- 프로그래머
- 다대일
- boot 일대다
- 스타트업
- 문제
- jdk11
- mappedby
- 자사서비스
- jre8
- ㅃ
- 알고리즘
- 개발자채용
- 스택
- 코딩테스트
- jre11
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |