오늘 한 일 [DONE]
- CS 스터디에서 네트워크 부분을 공부했다.
- 각자 프로젝트 진행하면서 공부한 부분, 문제 원인과 현상, 그리고 해결 방법을 고민한 내용을 공유하는 시간을 가졌다. 나는 중복 클릭 문제 해결 방법을 고민한 과정을 공유했다. 다른 팀원은 타이머 스레드의 백그라운드 동작 시 생기는 문제점에 대해 공유했는데 그 부분이 흥미로웠다.
- 프로젝트 코드 읽으면서 부족한 개념을 보충하는 시간을 가졌다. 오늘은 ViewModel 개념을 다시 잡았다.
- 알고리즘 문제를 풀었다. 너무 빠르게 풀어서 기분이 묘했는데 제한 조건을 굉장히 아슬아슬하게 통과했다. 설계 과정에서 놓친 게 있는지 체크해 봐야겠다.
📝오늘 배운 내용 간단 요약
1️⃣ Link Layer (링크 계층)
유선 LAN(IEEE 802.3)
송신로와 수신로로 나눠서 양쪽 장치가 동시에 데이터를 송수신할 수 방식인 전이중화 통신(full duplex) 사용
이전에는 반이중화 통신(half duplex) 중 하나인 CSMA/CD 방식 사용.
유선 LAN 케이블은 트위스트 페어 케이블과 광섬유 케이블이 있음.
트위스트 페어 케이블 중 구리선을 실드 처리하지 않고 덮는 UTP 케이블이 흔히 LAN 케이블라 불리는 것.
무선 LAN(IEEE 802.11)
송수신에 같은 채널은 사용해 반이중화 통신(half duplex) 사용
둘 이상의 장치가 동시에 전송하면 충돌이 발생될 수 있어 충돌 방지 시스템이 필요.
CSMA/CA를 사용해 사전에 충돌을 방지하며 반이중화 통신.
주로 2.4 GHz나 5 GHz 대역 사용. 주파수가 낮으면 장애물에 강하지만 전파 간섭이 많고, 높으면 그 반대.
Wi-fi는 전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술로 사용하려면 AP(Access Point)가 있어야 함.
2️⃣ 계층 간 데이터 송수신 과정
최상단 계층 -> 최하단 계층, 요청(request) 캡슐화
최하단 계층 -> 최상단 계층, 요청(request) 비캡슐화
3️⃣ PDU (Protocol Data Unit)
계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위.
Header와 Payload로 나뉨.
Header : 제어 관련 정보
Payload : 데이터 (앱 : message, 전송 : segment(TCP), datagram(UDP), 인터넷 : packet, 링크 : frame, bit)
4️⃣ Android Jetpack: ViewModel
ViewModel을 사용하면
1. 화면 가로 세로 전환, 화면 비율 변화 등 때문에 생기는 configuration change에 데이터를 유지할 수 있고,
2. 좀 더 좋은 소프트웨어 설계가 가능하다. Android로 코드를 짜다 보면 Activity에 data, logic이 몰리는 실수를 범할 수 있는데 이때 ViewModel이 UI Data를 담는 컨테이너 역할을 해서 Activity가 온전히 UI를 그려내고 사용자와 상호작용하는 것에만 집중할 수 있게 한다. 이 때 꼭 ViewModel은 오직 UI-Data만 저장하는 저장소 역할만 해야 한다. (단일 책임 원칙)
3. LiveData와 함께 data binding에서 사용하면 실시간으로 자동으로 UI를 바꾸는 reactive UI 구현이 가능하다.
사용 시 Tip
1. Don’t store contexts in a ViewModel!
2. Use ViewModel with onSaveInstanceState
onSaveInstanceState는 구성 변화는 물론 프로세스가 잠시 죽을 때도 데이터를 유지해 준다. (대신 적은 데이터만 사용)
5️⃣ Binary Search (이진 탐색)
오름차순으로 정렬된 리스트에서 "특정한 값의 위치를 찾는" 알고리즘
중앙값을 임의로 선택해 찾는 값과 비교해 최댓값, 최솟값과 비교해 최댓값, 최솟값으로 갱신해 주면서 탐색 범위를 줄일 수 있다.
장점은 탐색 범위를 찾으면 찾을수록 줄일 수 있으므로 빠르게 수를 찾을 수 있다는 점.
단점은 정렬된 배열에서만 쓸 수 있다는 점.
출처
'TIL (Today I Learned)' 카테고리의 다른 글
TIL_230214 (0) | 2023.02.15 |
---|---|
TIL_230210 (0) | 2023.02.10 |
TIL_230208 (0) | 2023.02.08 |
TIL_230207 (0) | 2023.02.07 |
TIL_230206 (0) | 2023.02.07 |