본문 바로가기

반응형

전체 글

(186)
마샬링(Marshalling) vs 직렬화(Serialization) 직렬화 객체의 상태를 저장하기 위해서 객체를 Byte stream으로 변환하는 것을 의미한다. 즉, 객체에 저장된 데이터를 stream에 쓰기 위해서 연속적인(serial) 데이터로 변환하는 것이라 보면 된다. 이는 데이터를 파일로 저장하거나 memory buffer 또는 Network를 통해 데이터를 송/수신 할 때 용이하게 한다. 마샬링 객체의 메모리 구조를 저장이나 전송을 위해 적당한 자료형태(ex. xml)로 변형하는 것을 의미한다. 보통 서로 다른 컴퓨터 혹은 서로 다른 프로그램 간에 데이터가 이동되어야 할 경우에 사용된다. 구체적으로 말하자면 managed data 형을 unmanaged data 형으로 변환시키는 과정이라 할 수 있다. 여기서 중요한 것은 managed data 와 unman..
마샬링(Marshalling) 마샬링이란? 마샬링이란 한 객체의 메모리에서의 표현방식을 저장 또한 전송에 적합한 다른 데이터 형식으로 변환하는 과정입니다. 이는 데이터를 서로 다른 프로그램 간에 전달할 필요가 있을 경우 사용합니다. 즉, 이는 직렬화와 유사하며 직렬화된 한 객체로, 멀리 떨어진 객체와 통신하기 위해 사용합니다. 이렇듯 복잡한 통신을 단순화하여 쉽게 데이터를 주고받을 수 있도록 해주는 것이 마샬링입니다. 프로그래밍에서의 마샬링 클라이언트가 서로 다른 프로세스, 원격지의 메서드를 호출해야한다고 가정합시다. 서버에 넘겨지는 인자, 리턴 값들을 프로그래밍 인터페이스에 맞도록 데이터를 조직화하고, 미리 정해진 다른 형식으로 변환합니다. 이것이 프로그래밍에서의 마샬링입니다. 이는 XML로의 마샬링, Byte 스트림으로의 마샬링 ..
Delegate와 Event Delegate 델리게이트는 메소드에 대한 참조입니다. 즉, 델리게이트는 하나의 형식(type)입니다. 델리게이트는 인스턴스 메소드, 정적메소드 모두 참조가능합니다. 프로그래밍을 할 때 매개변수에 값을 넘겨 쓸모있는 메소드를 만들었습니다. 델리게이트는 값이 아닌 '코드' 자체를 넘기고 싶을 때 사용할 수 있습니다. 한정자 delegate 반환형식 델리게이트이름(매개변수_목록); 델리게이트 체인(Delegate Chain), 익명메소드(Anonymous Method) 델리게이트 하나가 여러개의 메소드를 동시에 참조할 수 있습니다. 체인처럼 델리게이트를 연달아 등록하여, 순서대로 참조된 함수들을 호출합니다. 델리게이트를 등록할 때는 += 연산자 또는 Delegate.Combine() 메소드를 이용할 수 있고..
멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩 멀티 프로세싱(Multi-processing) 멀티 프로세싱은 다수의 프로세서가 협력적으로 일을 처리하는 것을 의미한다. 여기서 주의해야 할 점은 프로세스가 아니라 프로세서이다. 프로세서는 CPU나 Microprocessor라는 하드웨어를 의미하며 프로세스는 실제 메모리에 적재되어 프로세서에 의해 실행되고 있는 프로그램을 의미한다. 보통 하나의 프로세서(CPU)가 하나의 작업을 맡지만 멀티 프로세싱은 다수의 프로세서가 다수의 작업을 함께 처리하는 것을 의미한다. 멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프로세서가 진행 중인 작업은 다른 프로세서에서 수행하고 있기 때문에 작업이 정지되지 않는다. 또한, 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용한다면 각 데이터를 각 ..
깊이 우선 탐색(DFS; Depth-First Search)과 너비 우선 탐색(BFS; Breadth-First Search) 그래프를 탐색하는 방법에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있다. 그래프 : 정점(node)과 그 정점을 연결하는 간선(dege)으로 이루어진 자료구조의 일종 그래프를 탐색한다 : 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것 + 트리 : 그래프 중에서 방향성이 있는 비순환 그래프 1. 깊이 우선 탐색(DFS; Depth-First Search) - 최대한 깊이 내려간 뒤, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 2. 너비 우선 탐색(BFS; Breadth-First Search) - 최대한 넓게 이동한 다음, 더 이상 갈 수 없을 때 아래로 이동 3. DFS와 BFS 비교 DFS BFS 현재 정점에서 갈 수 있는 점들까지 들어가면서 탐색 현재 ..
AutoMapper란? AutoMapper란? AutoMapper는 객체 전환간에 Property 값을 자동으로 매핑해주는 오픈소스 라이브러리이다. 보통 DTO -> Entity 객체간 전환에 대표적으로 많이 사용한다. (DTO : 데이터 수송 객체(Data Transfer Object)) 클라이언트의 Request body로 받은 DTO 객체는 비즈니스 로직을 실행하기 위해 Entity로 변환하는 작업이 필요하다. 또한 Response body에 데이터를 전달하려면 Entity를 다시 DTO로 변환해야 할 것이다. 두 클래스의 변환 작업은 Mapper 클래스를 구현하여 해결할 수 있으며, 이를 통해 계층 간의 역할을 분리할 수 있다. 여러 개의 DTO를 하나의 DTO로 합친다거나, 반대로 하나의 DTO를 여러개로 쪼갠다거나,..
reduce() 함수 reduce()에는 누산기가 포함되어 있기 때문에, 배열의 각 요소에 대해 함수를 실행하고 누적된 값을 출력할 때 용이하다. 가장 기본적인 예제로는 모든 배열의 합을 구하는 경우가 있다. const arr = [1, 2, 3, 4, 5]; const result = arr.reduce((acc, cur, idx) => { return acc += cur; }, 0); console.log(result); // 15 const arr2 = [1, 2, 3, 4, 5]; const result2 = arr2.reduce((acc, cur, idx) => { return acc += cur; }, 10); console.log(result2); // 25 reduce()를 제대로 사용하면 map()이나 fil..
map() 함수 map은 callback 함수를 각각의 요소에 대해 한번씩 순서대로 불러 그 함수의 반환값으로 새로운 배열을 만든다. array를 돌면서 array로 결과가 출력된다. const array1 = [1, 4, 9, 16]; const map1 = array1.map(x => x * 2); console.log(map1); // [2, 8, 18, 32] [출처] https://velog.io/@claire-euni/js-map%ED%95%A8%EC%88%98%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

반응형