컬렉션 프레임 워크란 데이터의 집합을 저장하기 위한 자료구조를 모아놓은 표준 설계이다. 크게 리스트, 셋, 맵 3가지 인터페이스가 있으며 리스트와 셋을 한번더 추상화 한 컬렉션 인터페이스가 존재한다. List 인터페이스를 구현하는 클래스는 ArrayList LinkedList가 대표적이다. ArrayList내부적으로 Object 배열을 갖고 있다. 장점1. 내부적으로 배열을 사용하기 때문에 값을 참조하는것은 굉장히 빠르다는 장점이 있다.2. Object 배열을 사용하기 때문에 어떠한 종류의 데이터도 담을 수 있다. 단점1. 만약 배열의 크기를 초과하는 인풋이 들어오면 내부적으로 더 큰 크기의 배열을 생성하고 기존의 배열에 들어있던 데이터를 복사하기 때문에 시간이 오래걸린다. 따라서, 데이터 인풋의 크기가..
Q > RecyclerView를 사용한 이유?A > Listview의 경우 새롭게 리스트 항목을 렌더링 할때마다 레이아웃을 인플레이트 해야 하며 인플레이트 된 뷰를 findviewbyid로 찾아야 합니다. 그런데 이 두 과정이 메모리와 성능에 악영향을 미치기 때문에 이것을 해결하기 위해 RecyclerView를 사용합니다.리싸이클러뷰를 사용하면 레이아웃을 매번 새롭게 인플레이트 하지 않고 기존에 있던것을 재활용하게 됩니다. 그리고 뷰 홀더 패턴을 강제하기 때문에 한번 찾아 놓은 뷰를 계속해서 재활용 할 수 있습니다. Q > 레이아웃 인플레이트란 무엇이죠?A > xml 레이아웃 파일에 존재하는 뷰들을 메모리 상으로 로드하는 과정을 의미합니다. 인플레이트 된 뷰들은 findviewbyid메소드를 통해 참조를..
앞 포스팅 정리 프로그램을 실행시키면 가상 주소 공간을 할당 받으며 이 공간은 논리 주소로 구성 되어 있다. 이 프로세스를 CPU가 한줄 한줄 읽으면서 실행시키게 되는데 이때 CPU는 논리 주소를 사용하기 때문에 이것을 물리 주소로 변경 해야 제대로 된 메모리를 읽을 수 있다. 이때, 만약 메모리 관리 기법이 연속 할당 기법으로 되어 있는 경우엔 MMU 속의 base register와 limit register를 통해 간단하게 주소를 변환 할 수 있다. 하지만 페이징이나 세그멘테이션과 같은 불연속 메모리 할당 기법을 사용하면 페이징 테이블 또는 세그멘테이션 테이블이라는것이 필요하다. 이 테이블들은 메모리에 있기 때문에 cpu가 프로세스를 실행 시키기 위해서는 1. 페이지 테이블 엑세스를 위한 메모리 접근..
디스크에 있는 프로그램을 실행시키면 그 프로세스(실행중인 프로그램)는 가상 주소 공간(가상 메모리의 공간)을 할당 받는다. 가상 주소 공간은 논리 주소로 이루어져 있는 공간이며 일부는 물리 메모리로 구성 되어 있고 일부는 디스크로 구성 되어 있다. 프로세스를 실행 시키기 위해서는 이 논리 주소를 물리 주소로 바꾸는 변환 과정이 필요한데, 이것이 매핑 되어 있는 테이블이 바로 페이지 테이블이다. 만약 가상 메모리의 어떤 페이지를 읽었는데 그것이 실제 물리 메모리에 있었으면 페이지 hit이다. 하지만, 물리 메모리가 아니라 디스크에 있었다면 페이지 miss가 일어나며 운영체제가 디스크에 있는 페이지를 물리 메모리로 올리는 과정을 해주어야 한다. 그리고 나서 페이지 테이블을 수정하는 역할 까지 담당한다. 페이..
결론부터 얘기하면 동기화를 제공하기 위해선 Lock, 세마포어, 모니터 등의 방법을 사용 할 수 있으나 Lock을 사용하는 방식엔 문제가 있다. 여러개의 프로세스가 하나의 공유자원에 동시에 접근하게 될 경우 공유 자원의 값이 꼬이는 현상이 발생 할 수 있는데 이것을 race condition(경쟁 상태)이라고 한다. 동기화라는것은 내가 알고 있는 정보와 니가 알고 있는 정보가 일치해야 한다는것이다. 프로세스의 관점에서 보면 프로세스 A와 B가 있을때 서로가 알고 있는 공유자원의 값이 같아야 한다는것이다. 공유 자원에 접근하는 코드 영역을 Critical Section(임계 영역)이라고 하는데, 이 임계영역에 프로세스가 동시에 접근하게 되면 경쟁 상태가 발생하는 것이다. 그러므로 동기화( 프로세스 A,B가..
디스크에서 메모리로 로드된 프로그램을 프로세스라고 한다. 즉, 프로세스는 실행중인 프로그램이다. 이 프로세스는 cpu를 할당 받아서 실행되는데 총 3가지 상태가 있다. Ready -> Run -> Block 의 3가지 상태가 있다. 여기서 Run 상태란 프로세스가 CPU를 할당받아 실제로 실행되는 상태이다. 스케쥴링이라는 것은 Ready큐에서 실행을 대기 하는 여러개의 프로세스들의 실행 순서를 결정하는 일이다. 레디 큐에 10개의 프로세스들이 있는데, 이 프로세스들중에 중요한것과 그렇지 않은것들이 섞여있을것이다. 중요도를 기준으로 무엇을 먼저 실행시킬까 하는것이 스케쥴링 알고리즘의 핵심이다. 스케쥴링 알고리즘은 두가지 방식이 있다. 1. 선점형 스케쥴링 - cpu를 할당받은 프로세스가 아직 실행을 끝마치..
이전 시간 정리1계층을 통해서 케이블로 연결된 두 기기가 인터페이스를 통해 신호(아날로그,디지털)를 주고 받을 수 있게 되었다. 또한 2계층은 다수의 연결된 컴퓨터에서 통신을 할때 충돌이 일어나지 않게 하는 역할을 한다. 따라서 소규모 랜을 구축 할 수 있다. 즉, 2계층 까지만 해도 어느정도 규모의 네트워크를 구성할수 있다는것이다. 그럼 3계층부터는 왜 필요하지?브로드캐스트 도메인을 구분하기위해서 필요하다. 만약 모든 네트워크가 2계층으로 구성되어 있다면 하나의 컴퓨터에서 브로드 캐스트가 일어났을때 모든 컴퓨터가 그 브로드 캐스트를 처리해야되기때문에 통신 효율이 떨어진다. 따라서, 라우터를 통해서 브로드캐스트 도메인을 분리 시켜야 한다. 2계층까지 구성하여 랜을 구축 할 수 있었다. 3계층은 2계층 서..
첫번째 계층을 통해서 인접한 컴퓨터들이 물리적인 통신을 할 수 있게 되었다. 하지만, 그렇다고 해서 모두 올바르게 통신 할 수 있지는 않다. 연결되어 있는 컴퓨터들이 동시에 신호를 보낼경우 충돌이 일어나고 그 충돌을 해결하기 위해서 재전송을 하기 때문이다. 그렇게 되면 효율이 매우 떨어진다.데이터 링크 계층에서는 인접한 기기들끼리 통신을 할때 충돌이 일어나는것을 막아주는 역할을 한다. 즉 LAN에서의 충돌을 방지하는 역할 이것이 두번째 계층의 핵심이다. 대표적인 프로토콜로 이더넷 프로토콜이 있다. 이 프로토콜은 CSMA/CD방식을 사용한다. 네트워크에 누군가 신호를 보내고 있다면 그것을 감지하여 잠시동안 보내지 않고 보내지 않는다면 내가 보낸다. 근데 네트워크의 두 노드 이상이 동시에 데이터를 전송한경우..
- Total
- Today
- Yesterday
- typescript
- promise
- reflow
- Next.js
- atomic design
- async
- server side rendering
- return type
- mobx
- Babel
- state
- rendering scope
- webpack
- reducer
- useRef
- computed
- es6
- react hooks
- storybook
- props
- Polyfill
- await
- design system
- reactdom
- Action
- hydrate
- react
- useEffect
- javascript
- type alias
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |