1. 알고리즘
- 프로그래머스 숫자 변환하기
- https://ahlight.tistory.com/132
프로그래머스 - 숫자 변환하기
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/154538# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합
ahlight.tistory.com
2. 운영체제(공룡책)
*챕터1
1.9 커널 자료구조(kernel data structures)
1.9.1 리스트, 스택, 큐(List, Stack, Queue)
메인 메모리는 하나의 배열로 구축되며 배열은 각 원소가 직접 접근 될 수 있는 단순한 자료구조다. 저장된 데이터가 한 바이트보다 크면 그 데이터에 다수의 바이트가 할당되며 그 데이터는 데이터 수*데이터 크기로 주소가 지정된다.
배열과 다르게 리스트는 특정 순서로 각 원소에 접근해야 한다. 즉 리스트는 데이터 값들의 집단을 하나의 시퀀스로 표시한다. 리스트의 대표적인 형태는 연결 리스트(LinkedList)이며 특징은 한 원소가 다음 원소와 연결되어 있다는 것이다.
연결 리스트는 연결 방식에 따라 단일, 이중, 원형으로 나눠진다. 연결 리스트는 가변적이며, 원소의 삽입과 삭제가 쉽다. 단점은 특정 노드에 접근할 때, 즉 읽기(인출)할 때의 성능이 O(N)의 선형적인 시간복잡도를 가진다.
스택은 후입선출(LIFO), 큐는 선입선출(FIFO)형태의 자료구조다.
1.9.2 트리(Trees)
트리는 데이터 간의 위계를 표현하는데 사용가능한 자료구조이다. 일반 트리에서 부모 노드는 임의의 수의 자식 노드를 가질 수 있다. 이진 트리에선 최대 2개의 노드가, 이진 탐색 트리에선 좌측 자식 노드가 우측 자식 노드보다 값이 작은 순서를 가진다. 이진 탐색트리에서 한 노드를 찾으려면 O(n)의 시간 복잡도를 가지므로 이를 위한 해결책으로 균형 이진 탐색트리가 있다.
1.9.2 트리(Trees)
해시 함수는 데이터를 입력으로 받아 해당 데이터에 산술 연산을 수행하여 하나의 수를 반환한다. 이 수는 그 데이터를 읽기 위한 테이블의 인덱스로 사용할 수 있다. 해시 함수의 구현이 어려운 점은 두 개의 서로 다른 입력이 하나의 출력 값을 가질 수 있다는 것이다. 이러한 경우를 해시 충돌(hash collision)이라 하며 테이블의 각 노드에 연결리스트를 두어 해결하는 것이 일반적이다.
해시함수의 일반적인 용도 중 하나는 해시 맵을 구현하는 것이다. 해시 맵은 해시함수를 활용해 [키:값]을 매핑(연관) 시킨다.
1.9.3 비트맵(bitmaps)
비트맵을 n개의 항의 상태를 나타내는 데 사용 가능한 n개의 이진 비트 스트링이다. 비트맵은 대량의 자원의 가용성을 표시할 때 일반적으로 사용된다.
1.10 계산 환경(Computing Environments) - 다양한 종류의 컴퓨터들 정도?
오늘날 웹 기술이 전통적인 계산의 경계를 확장하고 있다. 즉, 예전엔 데스크톱으로 일반적인 연산만 하는 컴퓨터가 주류 였다면 지금은 모바일 컴퓨팅, 네트워크 컴퓨터, 임베디드 등 다방면에서 활용되는 곳이 많아졌다.
20세기 후반에는 계산 자원이 비교적 귀했다. 그러므로 계산 자원을 최적으로 사용하기 위하여 시분할 시스템을 활용해 자원의 일정량을 각 사용자에게 프로세스를 CPU에 하나씩 순환 시켜가면서 실행시켰다. 그리고 이러한 시분할 시스템은 타이머와 스케줄링 알고리즘을 이용한다.
1.10 모바일 컴퓨팅(mobile computing)
모바일 컴퓨팅은 이동가능하고 가벼운 특징을 가지는 휴대용 스마트폰과 태블릿들의 컴퓨팅 환경을 말한다. 오늘날 휴대용 시스템은 이들 장치에서 수행되는 다양한 범위의 응용에서 엄청난 성장이 계속되고 있다. 예를 들어 GPS칩, 가속도계, 자이로스코프 등이 있다.
온라인 서비스에 접근을 허용하기 위해 휴대장치는 전형적으로 IEEE 표준 802.11무선 또는 휴대 전화 데이터망을 사용한다. 하지만 휴대장치의 메모리 용량과 처리속도는 데스크톱, 랩톱의 처리기보다 작고 느리며, 더 적은수의 코어를 갖는다.
1.10 클라이언트 서버 컴퓨팅(Client-Server Computing)
현대 네트워크 구조는 서버 시스템이 클라이언트 시스템의 요청을 만족시키는 배치를 특징으로 한다. 클라이언트-서버 모델의 모습을 일반적으로 아래와 같다.
서버 시스템은 일반적으로 계산 서버와 파일서버로 분류 될 수 있다. 계산-서버 시스템은 클라이언트의 데이터 요청에 응답하는 데이터베이스를 실행하고 있는 서버를 말한다. 파일-서버 시스템은 클라이언트가 파일을 생성, 갱신, 읽기 및 제거 할 수 있는 파일시스템 인터페이스를 제공한다.
3. 후니의 쉽게 쓴 시스코 네트워킹
* Part4
Section 8
Looping : 프레임이 네트워크 상에서 무한 반복 돼 데이터 전송을 할 수 없는 현상
Looping은 하나의 호스트에서 다른 호스트로 가는 경로가 두 개 이상 만들어지는 경우에 발생한다.
한 호스트에서 브로드 캐스트가 발생하면 Flooding이 실행되는데 양쪽 브리지로 패킷이 모두 전송되기 때문에 반대쪽에서 다시 또 양쪽 브리지로 패킷을 보내면서 Looping이 발생한다.
Looping을 막아주기 위해 스패닝 트리 알고리즘(Spanning Tree Algorithm)이 있다.
Fault Tolerant : 네트워크상 장애의 대비책으로 이중 구조를 사용
Load Balancing : 이중구조에서 양쪽 모두를 사용해 속도를 늘리고 Fault Tolerant의 기능을 사용
4. 김영한의 Spring 로드맵
- Controller : 웹 MVC 패턴에서 컨틀롤러 역할
- Service : 핵심 비즈니스 로직 구현
- Repository : DB에 도메인 객체를 저장하고 관리하면 접근하는 역할
- Domain : 비즈니스 도메인 객체 -> 예를 들어 회원, 주문, 쿠폰 등 DB에 저장되고 관리되는 요소
TDD는 규모가 커질수록 필수. 평소에 미리미리 연습
테스트는 각각 독립적으로 실행되어야 하며, 순서에 의존관계가 있으면 좋은 테스트가 아니다.
@AfterEach : 각 테스트 종료 후 실행되는 어노테이션
@BeforeEach : 각 테스트가 실행되기전 실행되는 어노테이션
'TIL' 카테고리의 다른 글
TIL - 0317 (0) | 2023.03.17 |
---|---|
TIL - 0316 (0) | 2023.03.16 |
TIL - 0314 (0) | 2023.03.14 |
TIL - 0310 (0) | 2023.03.11 |
TIL - 0309 (0) | 2023.03.10 |