본문 바로가기

전체 글362

[Infra 1편] 포워드 프록시, 리버스 프록시, 게이트웨이 개념 정리 목차는 Infra 목차 에 있습니다. [Infra 1편] 포워드 프록시, 리버스 프록시, 게이트웨이 개념 정리 프록시 서버 중계 서버입니다. 클라이언트 ← 프록시 서버 → 서버 포워드 프록시 클라이언트에서 인터넷망으로 접근할 때, 중계 서버 역할을 포워드 프록시라 합니다. 클라이언트 → 포워드 프록시 서버 → 인터넷 → 결과 예를 들면, 내부망에서 외부 API 를 연동한다고 가정하겠습니다. 내부망 Client → 포워드 프록시 서버 → API 서버 리버스 프록시 Client 에서 내부 서비스로 접근할 때, 중계 서버 역할을 리버스 프록시라고 합니다. nginx, httpd 가 있습니다. Client → Proxy Server → 내부 서비스 예를 들면, 외부망에서 내부 서비스를 호출 했다고 가정하겠습니다.. 2022. 3. 7.
Jpa 1차, 2차 캐시 Jpa 1차, 2차 캐시 1차 캐시 Jpa 에서 1차 캐시는 영속성 컨텍스트 내부에 엔티티를 보관하는 저장소입니다. 1차 캐시 동작 방식 (데이터가 1차 캐시에 없을 때) 최초 조회 시, 엔티티가 없으므로 DB 데이터를 조회합니다. DB 에서 조회해온 데이터를 영속성 컨텍스트 내부 저장소에 (1차 캐시) 보관합니다. 1차 캐시에 있는 데이터를 반환합니다. 1차 캐시 동작 방식 (데이터가 1차 캐시에 있을 때) 1차 캐시 (영속성 컨텍스트) 에 데이터가 있으므로 데이터를 반환합니다. (DB 를 조회하지 않습니다.) 1차 캐시 특징 1차 캐시는 객체의 동일성을 보장합니다. (객체끼리 비교했을 때, 같습니다. 객체 1 == 객체 2) OSIV (Open Session In View) 를 사용한다면 서버에서 응.. 2022. 2. 9.
[leetcode] Number of Islands 정리 source 는 Github 에 있습니다. 문제 (Number of Islands) 문제 풀이 연결된 섬들은 1개로 count 합니다. for 문을 2번 돌려서 순회를 하면 연결된 섬에 대해서 찾을 수 없습니다. 전체 grid 를 순회하면서 방문한 곳은 순회하지 않도록 구현해서 처리했습니다. 순회할 때, DFS 를 써서 연결된 것들을 순회하게 했습니다. 순회할 때는 상하좌우로 순회하게 했습니다. source public int numIslands(char[][] grid) { int m = grid.length; int n = grid[0].length; visited = new boolean[m][n]; int count = 0; for (int i = 0 ; i < m ; i++) { for (int.. 2022. 1. 28.
jpa @ElementCollection 정리 source 는 Github 에 있습니다. @ElementCollection 정리 JPA 는 ORM 이고 ORM 은 Object Releation Mapping 의 약자입니다. RDB 의 경우 데이터를 저장할 때, collection 단위로 저장할 수 있는 방법이 없습니다. 예를 들면, Member 라는 테이블에 phone_number 가 여러개 들어갈 수 없습니다. JPA 에서는 @ElementCollection 을 이용해서 Collection 대상인 것을 알려줄 수 있습니다. source 및 로그 Member Entity 아래와 같이 Member Entity 에 roles collection 을 만들어주고 ElementCollection 을 선언해주면 Roles 테이블이 만들어집니다. @Entity .. 2022. 1. 17.
[Redis 3편] Redis 상세 정리 (key, 클러스터, 센티넬) 목차는 redis 목차 에 있습니다. source 는 Github 에 있습니다. [Redis 3편] Redis 상세 정리 (key, 클러스터, 센티넬) Redis Key 레디스의 키는 문자열을 사용합니다. 허용되는 최대 키 크기는 512MB 입니다. object:id 의 형태 권장합니다. member:1 member:2 센티넬 센티넬이란 master/slave 가 정상 동작하는지 모니터링 하며, 문제가 생겼을 경우 조치해주는 모듈 마스터가 문제가 있으면 slave 를 master 로 설정 ping 을 통해 노드들의 장애를 판단하며, 여러 대의 Sentinel 에 의해 판단을 합니다. Redis 클러스터 클러스터란 여러 개 서버를 묶어서 하나의 시스템처럼 동작하게 하는 방식입니다. Redis 클러스터 특징.. 2022. 1. 13.
[Redis 2편] Redis 상세 정리 (명령어, 싱글 스레드, 영속성) 목차는 redis 목차 에 있습니다. source 는 Github 에 있습니다. [Redis 2편] Redis 상세 정리 (명령어, 싱글 스레드, 영속성) Redis 명령어 Redis 는 해시 기반의 key-value 형식의 저장방식을 제공하면서 키 등록/ 조회에 O(1) 시간복잡도를 보장합니다. Get / Set : O(1) SADD, LSET, HSET, HGET —> O(1) 싱글 스레드 기반의 Redis Redis 4.0 부터 4개의 스레드로 동작합니다. 메인스레드 1개, 시스템 명령들을 처리하는 thread 3개 메인스레드에서 사용자 명령어를 처리하기에 싱글 스레드로 동작한다고 이해하면 됩니다. 싱글 스레드로 동작하고 해시 기반의 get/set 을 지원하기에 Redis 의 주요 기능들이 O(1).. 2022. 1. 13.