CS

2022-03-24 RSS Feed

Rosie_dev 2022. 3. 24. 19:27

🧐 오늘의 RSS Feed


모든 내용의 출처는 각 항목의 제목에 있습니다

Rest API vs. GraphQL

Rest API GraphQL
axios apollo-client
post, put, delete, get mutation, Query
axios(rest-api)
import axios from = 'axios'
const result = axios.pot(api 이름)
apollo-client(graphql-api)
import {useMutation, useQuery} form @appllo/client
const result = useMutation(api 이름)

JPA

객체 관계 매핑, OMR 표준기술. 하이버네이트 개발자 참여로 완성된 가장 최근 표준 기술.

개발자가 직접 JDBC API 설계 관리 필요없이 객체만 OMR에 저장하면, DB와 연결하여 관리를 대신해준다.

java 컬렉션처럼 DB를 탐색하고, 별도 DAO없이도 필요한 명령을 수행할 수 있게 된다.

동일한 트랜잭션에서 조회한 엔티티는 같음을 보장한다.

크고 복잡한 Query는 속도를 위해 튜닝이 필요하므로 결국 SQL문을 써야 할 수도 있다.

IP와 포트번호

네트워크 통신을 위한 주소. IPv4, IPv6

입력된 IP주소에서 포트번호에 해당하는 서버 프로그램을 사용자에게 보여준다.

Spring 변경 감지와 병합

준영속 엔티티는 영속성 컨텍스트가 관리하지 않는 엔티티로 JPA가 관리를 안한다는 문제가 있다.

이를 해결하기 위해 변경 감지 기능을 사용한다거나 병합을 사용한다.

setter를 이용하면 감지가 어렵다.

단축 URL 서버구조

단축 URL을 생성하기 위해 hash funtion을 이용한다. hash 값은 리다이렉션을 위해 long URL로 매핑되어 한다.

BASE62 Encording

301 리다이렉션: 요청받은 URL을 영구적으로 long URL로 정보를 캐싱하고 이후에는 바로 long URL로 리다이렉트한다.

302 리다이렉션: 항상 URL shortner server로 요청하므로 client 요청을 트래킹할 수 있다.

자바 컬렉션 프레임워크

  • List: ArrayList, Stack, Vector, LinkedList, CopyOnWriteArrayList
  • Set: HashSet, TreeSet, LinkedHashSet, CopyOnWriteArraySet
  • Map: HashMap, HashTable, ConcurentHashMap, TreeMap, LinkedHashMap
  • Queue: BlockingQueue, ConcurrentLinkedQueue

HashMap은 null key 값을 주면 0 해시버켓을 찾아간다. 반면, HashTable은 null key나 value 값을 허용하지 않는다.

동기화 컬렉션 클래스의 다중연산문제
반복문에서 모든 스레드가 대기 상태에 들어간다. 즉, 여러 스레드의 동시 작업을 다 막아버린다.

var, let, const

var로 선언한 변수는 호이스팅시 undefined로 변수를 초기화한다. 하지만 let, const로 선언한 변수의 경우 호이스팅시 초기화하지 않는다.

let, const는 블록 레벨 스코프를 따른다.호이스팅: JS에서 함수 실행전 함수 선언에 대한 메모리부터 할당하는 것.var는 블록 스코프에서 작동하지 않기 때문에 다른 곳에서 선언된 변수와 중복되어 작동하기도 하고, 호이스팅 때문에 선언이 먼저 되어 선언을 하기도 전에 호출해도 undefined가 출력된다. 따라서 let, const를 쓰자.

스프링 AOP

횡단 관심사인 부가 기능들을 한 곳에서 관리하도록 @Aspect를 사용한다. OOP를 보조하는 기능이다.

AspectJ 프레임워크

1. 컴파일시에 로직에 AspectJ 모듈을 이용해 부가기능을 추가하는 것을 위빙(Weaving)이라고 한다.

2. 클래스 로딩 시점에 부가가기능이 추가되는 경우에도 AspectJ를 직접 사용해야 한다.

3. 런타임 시점에 부가기능을 추가하는 것은 스프링 AOP에서도 사용된다.

AOP 프록시: AOP 기능을 구현하기 위해 만든 프록시 객체, 스프링에서 AOP 프록시는 JDK 동적 프록시 또는 CGLIB 프록시이다.

 

확인해볼 사항


  • Domain은 변경되면 안된다는 규칙 하에 별도의 DTO 클래스를 둬서 개발을 진행해왔는데...
    다른 사람 Feed를 보니 그냥 Domain으로 다 해결해버려서 혼동이 왔다. 
  • custom annotation 만들어보기

 

댓글