전체 글

5%라도 남기자
스프링/JPA

[JPA] EAGER Loading Vs LAZy Loading N+1이란?

먼저 N+1문제란 무엇인지 알기 전에EAGER Loading (즉시 로딩), Lazy Loading (지연 로딩)에 대해 이해하고 넘어가야만 한다.예시를 살펴보며 이해해보자1. Member Entity, Post Entity가 존재한다.2. Member : Post -> 1 : N 연관관계를 맺는다. @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "member", fetch = FetchType.LAZY) private List posts = new ArrayList();}  @Enti..

CS/네트워크

분산시스템속 브로드캐스트

오늘은 분산시스템속 어떤 브로드캐스트 알고리즘이 있는지 알아보고 어떤 것을 코드에 적용해볼까 선택할려고 한다.오늘 설정할 브로드캐스트 목표는 새로운 Peer가 등장할시 어떻게 새로운 Peer를 다른 Peer가 인식하도록 할까이다. 1. Flooding (플러딩)Flooding은 모든 Peer가 새로운 Peer에 대한 정보를 모든 이웃 피어에게 전송하는 방법이다.새로운 Peer A가 네트워크에 들어오면 -> Peer A는 자신의 정보를 인접 피어 B, C, D에게 전송 -> B, C, D는 연결된 피어에게 전송한다.장점 : 단순한 구현단점 : 네트워크 트래픽이 많아질 수 있다.인접한 피어는 또 어떻게 구할것인가? 문제가 있는 거 같다. 2. Gossip Protocl(가십 프로토콜)가십 프로토콜은 Peer..

CRDT

[CRDT]에 대하여

코로나 이후로 실시간 협업 애플이케이션이 많은 흥미를 끌었다.Figma, Notion Google Docs 등 많은 기업들이 실시간 협업 애플리케이션 등을 내고 VS Code 또한 동시 코딩 플러그인(느리긴함)이 존재한다.  그래서 제안된 기술들이 있는데 크게 두가지이다.  CRDT(Conflict-Free-Replicated Data Types), OT(Operational Transformation)이다.실시간으로 협업 한다고 생각해보자.OT의 방식은 아래와 같다. HeLo 사이에 L을 추가하고 , 다른 사람은 마지막에 !를 추가한다고 생각해보자.추가 했을 때 각자가 보고 있는 인덱스 위체에 따라 추가가 될 것이다.1번째 사람은 3번째 Inex의 "L"을 삽입했고, 2번째 사람은 4번째 Index의 ..

카테고리 없음

ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes]

오류 사진Likely root cause 현재 Docker-compose.yml 문제 발생이유 : AccessDenied -> 권한 문제찾아보니 usr/share은 도커 컨테이너 안에 있는 내용이지 로컬(우분투)에 공유되는 폴더가 아니다.그렇다면 권한은 elasticsearch폴더에게 주는 것이 맞다- 참고) elasticsearch폴더는 내 우분투 서버에 존재하는 폴더이다.명령어sudo chown -R 1000:root elasticsearch해당 명령어로 폴더에게 권한을 주면 해결된다! 참고https://stackoverflow.com/questions/65668188/elastic-search-accessdeniedexception-usr-share-elasticsearch-data-nodes-0-..

알고리즘

[백준] 16562번 친구비 (Union-find) C++

1. 문제 이해준석이의 돈 : K원친구를 사귀려면 학생 i에게 A[i]만큼 돈을 주어야 한다.하지만 친구의 친구는 친구다!ex) 1의 친구가 5라면 1에게 또는 5에게만 돈을 주면 된다.-> 그렇다면 제일 비용이 적은 친구에게 돈을 주자그렇게 모든 사람과 가장 적은 비용으로 친구가 되는 방법을 구하라.2. 추상화5 3 2010 10 20 20 301 32 45 4Cost[]10원10원20원20원30원친구 구조 : 13 ,   24  ,  54 여기서 트리로 나타내야겠다 생각했다.3. 문제 설계모든 사람이 친구가 되려면 K(진석이가 가진 돈)원 내로 집합의 하나를 선택할수 있어야 한다.처음 생각으로는 백트래킹으로 1->3 3에서 더 없으면  cost[1], cost[3]비교 이렇게 생각했다.하지만 노드가 ..

스프링/JPA

[Spring] JPA에서 Entity Life의 Cycle은 어떻게 이루어지나?(면접 질문 있음)

들어가기에 앞서Spring Boot 개발을 하면서 JPA를 활용하여 개발을 하지만 JPA에서 Entity가 어떻게 관리되는지 얕게 공부한터라 다시 한번 상기하고,  더불어 면접 질문에 대해 대비하려고 한다.JPA에서 Entity는 여러 Life Cycle(생명 주기) 단계 를 거치며, 각각의 단계는 Entity가 DB어떻게 상호작용하는지를 결정한다.크게 New 상태, Managed 상태, Detached 상태, Removed 상태로 4가지로 나뉜다.1. NEW(Transient)상태Entity가 아직 영속성 컨텍스트에 의해 관리되지 않는 상태이다.특징-  DB에 저장되지 않은 상태-  아직 EntityManager를 통해 persist()메소드가 호출되지 않은 상태이다.MyEntity entity = n..

CS/네트워크

[네트워크] ARP 프로토콜

주소 결정 프로토콜(Address Resolution Protocol, ARP)는 네트워크 상에서 IP주소를 물리적 네트워크(MAC Address)주소로 연결하기위해 사용되는 포로토콜이다. ARP는 L3(OSI Layer3) IP를 L2 MAC 주소로 바꿔주는 L3의 프로토콜이다. 반대의 경우 L2 MAC 주소를 L3 IP로 바꿔주는 RARP(Reverse Address Resolition Protocol)도 존재한다. Hardware Type : L2에서 사용하는 Protocol Type ex)이더넷 프로토콜 Protocol Type : ex) IPv4 Hard Add Len : MAC Address Length Proto Add Len : IP Address Length Operation Code :..

알고리즘

[알고리즘] 2022 KAKAO TECH INTERNSHIP 두 큐 합 같게 만들기 문제C++

https://school.programmers.co.kr/learn/courses/30/lessons/118667# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 출처 문제 이해 & 추상화 두 개의 큐 queue1 = [3, 2, 7, 2] queue2 = [4, 6, 5, 1] 일때 1번의 진행 과정은 두 가지가 존재한다. queue1 => Q1, queue2 => Q2로 부르겠다. Q1 3 2 7 2 Q2 4 6 5 1 먼저 queue의 자료구조처럼 진행된다 Q1에서 값을 pop()하면 Q2에 push된다. Q1 - 1번 진행 (Pop) 2 7..

Sleeg
5% 남기기