분류 전체보기 219

면접준비

1. 프로세스란 2. 스레드란 3. 데드락이란 1. 버블정렬이란? 2. 삽입정렬이란? 3. 병합정렬이란? 4. 퀵정렬이란? 1. 힙이란 2. 큐란 3. 스택이란 4. arrayList란 5. linkedList란 6. hashMap이란? 7. 2진트리란 8. 깊이우선탐색이란 9. 넓이우선탐색이란 1. 브라우저 동작방식 2. 웹 동작방식 3. OSI 7계층이란 4. SSL이란 5. IP란 6. DNS란 7. HTTPS란 8. Socket이란 1. 쿠키란 2. 세션이란 3. RestAPI란 4. OAuth란 5. PWA란 1. MSA란 2. Monolithic이란 1. 이벤트 루프란 2. 테스크 큐란? 3. 콜스택이란 4. 비동기란 5. Non block I/O란 6. Promise란 7. async awa..

디자인패턴 2

DAO라는건 매번 new로 만들 필요가 없다. 그래서 싱글톤으로 만드는것이 좋다. DTO나 VO등등은 매번 바뀌기때문에 new로 만들어낸다. Service나 Controller등도 매번 new로 새로 만들 필요가 없기 때문에 싱글톤으로 만들어지는 경우가 많다. DI라는것은 설정파일에 string으로 적어둔 것을 프레임워크가 구동될 때 미리 인스턴스를 만들어두는것이다. --구조적 디자인패턴중 하나 (생성과 관련없는 패턴은 대부분 구조적패턴이다) subject가 있고 subject(instance)를 쓰기위해서 proxy가 있고 이걸 사용하는 client가 있다. 어떠한것의 기능을 감싸서 확장하는 개념을 가지고있다. AOP..

디자인패턴

디자인패턴을 말하는이유는? - 커뮤니케이션에 유용하다 (~패턴으로 짜면 됩니다) - 저년차의 개발자도 고년차처럼 개발할 수 있다. - 코드를 읽을 때도 좋아진다. 디자인패턴을 잘하자! 디자인패턴과 리팩토링을 잘하면 굉장히 좋은 개발자이다. 리팩토링은 마틴파울러의 리팩토링이 좋다(1판이 훨씬 잘쓰여있다. 자바가 부담스러우면 2판을 사서 보면 된다.) 디자인패턴은 C++에서 나왔다. 그래서 펑셔널 랭귀지랑 잘 맞지는 않는다. 프록시패턴은 중급패턴이다. 델리게이트 패턴 스테틱 패턴... 등등 어려운 패턴이지만 공부하다보면 고수가 되어있따. queue는 무조건 순차적으로 일어나고 size가 고정적일때는 queue를쓴다. 그이외에는 stack을 많이 쓴다. - 리액트의 useReducer가 factory patt..

node 비동기

웹소켓이라고 하는것은 소켓이 http위에서 동작하는 것이다. 웹소켓을 쓸수밖에 없는 이유 = > browser가 지원하기 때문에. 게임서버는 웹소켓이 아니라 소켓을 써야햇다 (성능이 중요해 C로 직접 구현했기 때문) ws의 표준 프로토콜은 open message close 3가지밖에 없다. node의 non- block i/o 함수형 프로그래밍은 기본적으로 non-block이다. 모든것이 async면 개발하기 정말 힘들기 때문에 그 선을 정했는데 그게 I/O이다. lazy Instance라는 개념이 있다. 메모리 공간을 확보하는거는 부담스러운 일이다. 시간은 ROM에서 가져온다. lazy instance는 예를들어 시간을 가져올때 분까지만 필요하다면 초마다가 아니라 매 분마다 실행이 되면 된다. 매초마다..

개요 (deno와 node의 차이)

deno가 나온이유 -> node의 취약점을 개선하기 위해서 취약점 1. 보안성 node는 index.js를 무조건 run하게되는데 그때 임포트된 모듈들이 모두 실행된다. 디노는 url로 모듈을 관리하고 deno-run --allow read등으로 권한을 한정할수 있다. 2. module(npm) 3. 성능 다른언어들도 WAIM을 통해서 자바스크립트엔진에서 구동될수 있도록 한다. deno의 가장 큰 핵심은 rust를 도입했다는것이다. rust는 C++기반으로 만들어졌는데 C++는 성능은 좋으나 메모리관리가 어려워서 나온 언어이다. rust는 메모리를 사용중인 로직이 끝날때 release를 안해주면 에러를띄우는 언어이다. rust로 deno를 만들어 deno는 빠르다. 기존에 node를 쓰면 ts를 할때 ..

4장. 함수 [not fin]

function add(a: number, b:number){ return a+b; } 보통 함수 매개변수의 타입은 명시적으로 정의한다. 특별한 상황을 제외하면 매개변수의 타입은 추론하지 않는다. 반환타입은 자동으로 추론하지만 원하면 명시할 수 있다. 실무에서는 반환타입을 추론하도록 하는 것이 보통이다. 타입스크립트에서 함수를 호출할 때 타입 정보는 따로 제공할 필요가 없다. 선택적 매개변수와 기본 매개변수 ?를 이용해 선택적 매개변수를 지정할 수 있다. 실무에서는 선택적 매개변수보다 기본 매개변수를 자주 사요안다. 나머지 매개변수 인수를 여러개 받는 함수라면 목록을 배열 형태로 건넬 수도 있다. argument는 any타입으로 추론되기 떄문에 안전한 타입의 가변 인수 함수를 만드려면 나머지 매개변수를 ..

useReducer, memo, useCallback

useMemo와 useCallback은 한몸이라고 보면 된다. memo는 오브젝트를를 캐시해둔다.(컴포넌트를 메모화한다) useCallback은 함수 자체를 캐시한다. (함수를 메모화한다) 쓰는 이유는 컴포넌트가 랜더링 될 때 함수가 재정의되기 때문에 의미없이 컴포넌트가 상태의 변화를 느껴 재랜더링하는것을 캐시로 인해 막을수 있기 때문이다. 한번에 useMemo와 useCallback을 이용해서 로직을 짜는것은 어렵다. useState와 useEffect로 일단 구성하고 나중에 바꾸는 방식으로 작성해보자. ---- useReducer는 어떨때 써야할까? 체크박스에 체크가 일어났을때 이 체크에 대한 state를 가지고있다고 했을때 onChang..