일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gatway
- 갱신 이상
- 자료구조
- Spring
- java
- 스레드 풀
- HTTP
- JPA
- AWS
- 삭제 이상
- Dirty Checking
- 낙관적 락
- 페이지네이션
- MSA
- 삽입 이상
- 캐시 오염
- 3-way handshaking
- ocp
- 자바
- well-know port
- Kafka
- buildSrc
- null
- Kotlin
- 비관적 락
- Redis
- 정규화
- 네트워크
- 데이터베이스
- DB
- Today
- Total
728x90
목록
728x90
전체 글 (70)
어 나 갱수.
오늘은 Transaction에 대해 알아보겠습니다. ✌🏾 트랜잭션이란? 데이터베이스의 상태를 변경시키는 단위, 한 번에 수행되어야 하는 연산들이라고 정리하면 좋을 거 같습니다. 상태를 변경시킨다? SELECT, INSERT, DELETE, UPDATE 등과 같은 DML문을 사용하는 것을 의미합니다. 논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 없게 만든 것이 트랜잭션입니다. 트랜잭션의 SQL문중에서 일부의 SQL만 성공해서 일부의 내용만 DB에 반영되는 일을 방지해 줍니다. 트랜잭션은 각각의 SQL에 대한 결과를 상황에 따라 두 가지로 나뉩니다. commit(커밋)과 rollback(롤백)입니다. commit(커밋) : 하나의 트랜잭션 단위에 있는 모든 SQL문이 다 성공했을때 변경..
오늘은 자료구조 맵(Map)과 해시테이블(Hash Table)에 대해 알아보겠습니다. Map이란 Map은 키(Key)와 값(value)으로 저장하는 자료구조이다. 각 키는 중복이 될 수 없으면 키를 이용하여 해당 값을 빠르게 찾을 수 있다. 해싱(Hashing) 해싱 함수는 키(Key)를 받아서 정수값인 해시코드(HashCode)를 반환하고 반환된 해시코드는 값이 저장되는 버킷의 인덱스가 된다. Hash Table이란? 배열과 해시 함수를 사용하여 map을 구현한 자료구조 위의 그림과 같이 k1이라는 키(Key)를 해싱함수에 넣으면 해시코드를 반환하고 그 해시코드를 인덱스로 버킷을 만들어서 저장을 한다. 구조 키(Key) : 고유한 값. 해시 함수의 input이 된다. 값(value) : 저장소에 최종적..
컨텍스트 스위칭이란 CPU에서 실행 중인 한 프로세스를 다른 프로세스로 넘겨주는 행동을 의미합니다. 말 그대로 컨텍스트(Context)를 다른 컨텍스트로 교체한다는 의미를 가지고 있습니다. 여기서 컨텍스트는 CPU가 해당 프로세스를 실행하면서 가지고 있는 정보를 의미합니다. 실행하면서 필요한 정보라고 정리하면 좋을 거 같습니다. 즉, 한 프로세스가 실행 중인 상태에서 다른 프로세스로 교체하기 위해 현재 컨텍스트를 저장하고, 다음 실행할 프로세스의 컨텍스트를 읽어오는 작업을 말합니다! 컴퓨터를 사용하다 보면 여러 개의 프로그램을 띄어놓고 작업을 해본 적이 있을 겁니다. 음악 앱에서 음악을 틀어놓고, 개발도 하고, 구글에 검색 등등 이렇게 여러 가지 프로그램을 한 번에 사용해 본 경험이 있을 텐데 이 모든 ..
오늘은 JVM에 대해 알아보겠습니다. 평소에 Java나 Kotlin으로 개발을 많이 하는데 정작 그 Java와 Kotlin이 어떻게 돌아가고 우리가 작성한 코드들이 어떻게 실행되는지에 대한 동작 원리들을 따로 공부해 본 적 없어서 오늘 한 번 알아보는 시간을 가져보겠습니다. JVM 이란? 먼저 JVM이 뭔지 알아보겠습니다. JVM은 Java Virtual Machine의 약자로, 자바 가상 머신이라고 불립니다. 자바 가상 머신이란 자바 프로그램 실행 환경을 만들어주는 소프트웨어입니다. 개발자가 .java 파일의 자바 코드를 컴파일하면 컴파일러에서 .class의 코드로 변환을 해주면 이 바이트코드가 자바 가상 머신에서 실행됩니다. Java의 장점 Java의 장점은 어떠한 OS(운영체제)에서 실행 가능한 언..
이번 블로그에서는 객체지향 프로그래밍의 설계원칙 5가지인 SOLID에 대해 알아보도록 하겠습니다.평소에 객체지향 언어인 Java로 많은 개발을 하지만 객체지향 설계원칙에 준수하면서 개발하고 있는 느낌이 들지 않아서 이번 기회에 객체지향에 대해 알아보고 더 객체지향 설계원칙에 준수하면서 개발을 해보려고 합니다!! 객체지향 프로그래밍의 5가지 설계 원칙 SOLIDSOLID란 객체지향 프로그래밍을 하면서 지켜야 할 5가지 원칙으로 각각 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙) 이렇게 구성되어 있습니다. SOLID 원칙을 준수하면서 개발을 하면 시간이 지나도 변경에 용이하고 유지보수, 확장에 쉬운 소프트웨어를 개..
영속성 컨텍스트란 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻입니다. 애플리케이션과 데이터베이스 사이에서 엔티티를 저장하는 가상 데이터베이스와 같은 역할을 한다. 엔티티의 생명주기 비영속 영속성 컨텍스트에서 비영속 상태란 영속성 컨텍스트와 관련이 없는 상태를 말합니다. 아래의 코드와 같이 객체를 생성만 하고 영속성 컨텍스트에 저장하지 않는 상태를 말합니다. //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속 영속성 컨텍스트에서 영속 상태란 영속성 컨텍스트에 객체가 저장된 상태를 말합니다. 아래의 코드와 같이 객체를 생성하고 EntityManager를 생성하고 객체..
로그인 API 개발을 하면서 RefreshToken을 저장하는 데이터베이스로 redis를 처음 접하게 됐습니다. 처음에는 redis가 뭔지도 모르고 사용하였지만 redis의 동작원리가 궁금해지고 어떤 데이터베이스 특징을 가지고 있는지 궁금해져서 이번 글에서는 redis에 대해 정리해보겠습니다. In-Memory란 컴퓨터의 주기억장치인 RAM에 데이터를 저장해서 사용하는 방법. RAM에 데이터를 저장하게 되면 메모리 내부에서 처리가 되므로 데이터를 저장/조회할 때 하드디스크를 오고 가는 과정을 거치지 않아도 되어 속도가 빠름 그러나 서버의 메모리를 초과하는 경우 RAM의 휘발성에 따라 데이터가 유실될 수 도 있습니다. Redis란 Redis는 Remote Dictionary Server의 약자로 키(Key..
Message Queue란?? Message Queue는 프로세스 또는 프로그램 사이에 데이터를 교환할 때 사용하는 통신 방법 중에 하나입니다. Message Queue를 이용해서 MSA에서 가장 중요한 서비스 간 통신을 할 수 있습니다. 대표적인 Message Queue에는 Kafka, RabbitMQ, ActiveMQ 등이 있습니다. 지금 publsher가 `m n + 1`이라는 메시지를 큐에 담고 있습니다. 현재 큐에는 소비를 기다리는 많은 메시지가 있습니다. 그리고 Queue의 메세지를 소비할 수 있는 소비자가 consumer A, consumer B 이렇게 있습니다. consumer A가 `m1`이라는 메시지를 큐에서 소비했습니다. 이러면 consumer B는 `m1`이라는 메시지를 소비하지 못..