1. 알고리즘
백준 1976번 자바
1. 문제 https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의
ahlight.tistory.com
2. 운영체제(공룡책)
*챕터2 - 운영체제 구조 (Operating System Structures)
2.5 링커와 로더(Linkers and Loaders)
프로그램은 보통 보조저장장치에 이진실행파일의 형태로 존재한다. 프로세스 형태로 배치되어야만 프로그램을 메모리로 가져와 실행할 수 있다.
- 오브젝트 파일(목적파일) : 컴파일러나 어셈블러가 소스 코드파일을 컴파일 또는 어셈블해서 생성한 파일
- 재배치 가능 오브젝트 파일 : 소스파일이 임의의 물리 메모리 위치에 적재되도록 설계된 오브젝트 파일
- 링커(Linker) : 컴파일러가 만들어낸 하나 이상의 재배치 가능 오브젝트파일(목적 파일)들을 가져와 이를 단일 실행 프로그램으로 병합하는 프로그램
- 로더(Loader) : HDD와 같은 물리 저장장치에 있는 특정 프로그램을 주기억장치에 적재하고, 그 프로그램이 실행되도록한다. -> 이진 실행 파일을 메모리에 적재
링크 및 로더와 관련된 활동은 재배치로, 프로그램 부분에 최종 주소를 할당하고 프로그램 코드와 데이터를 해당 주소와 일치하도록 조정하여 프로그램이 실행될 때 코드가 라이브러리 함수를 호출하고 변수에 접근할 수 있게한다.
실제 시스템 대부분에선 프로그램이 적재될 때 라이브러리를 동적으로 링크할 수 있게 한다. 즉, 실행 파일로 결합될 때 실행 파일에서 사용되지 않는 라이브러리를 링크하지 않고 프로그램 실행 중 필요한 경우에 적재된다.
목적 파일 및 실행 파일은 일반적으로 표준화된 형식을 가진다. 이 표준 형식은 컴파일된 기계 코드 및 프로그램에서 참조되는 함수 및 변수에 대한 메타데이터를 포함하는 기호 테이블을 포함한다. UNIX, Linux에서 이 표준화된 형식을 ELF(Executable and Linkable Format)이라고 한다.
2.6 응용 프로그램이 운영체제마다 다른 이유
기본적으로 한 OS에서 컴파일된 응용은 다른 OS에서 실행할 수 없다. 하지만 몇가지 방법을 사용해 여러 OS에서 실행될 수 있게 만들 수 있다.
- 응용 프로그램을 OS마다 인터프리터가 제공되는 인터프리터 언어로 작성하는 방법 -> 기계어 코드로 이루어진 프로그램 보다 성능이 떨어지며, 인터프리터는 OS의 일부 기능만 제공해 응용 프로그램의 기능도 제한될 가능성있음
- 실행 중인 응용 프로그램을 포함하고 있는 가상 머신을 가진 언어로 작성 -> 인터프리터와 비슷한 문제
- 컴파일러가 기기 및 OS 고유의 이진 파일을 생성하는 표준 언어 or API를 사용
이러한 접근 방식들은 다양한 OS에서 실행될 수 있는 응용 프로그램을 작성하는데 간단하게 솔루션을 제공하는 것 같지만, 시스템 낮은 수준에는 또 다른 어려움이 존재한다.
- 각 OS에는 응용 프로그램 이진 형식이 있고, 이 형식은 명시된 구조 형태로 실행파일내의 특정 위치에 존재해야 한다.
- CPU가 가진 다양한 명령어 집합에 포함된 명령어를 가진 응용만이 올바르게 실행될 수 있다.
- 응용은 OS의 시스템 콜을 활용해야 하고, 시스템 콜의 사용법 및 여러 정보들은 OS마다 다르다.
이진 코드의 여러 구성요소가 주어진 아키텍처에서 특정 OS와 상호작용 할 수 있는 방법을 정의하는데 ABI(Application Binary Interface)가 사용된다. 쉽게 말해 ABI는 아키텍처 수준(저수준)의 API라고 할 수 있다.
이러한 모든 차이점과 문제점들은 특정 CPU, 특정 OS에서 인터프리터, RTE 또는 이진 실행파일을 작성하고 컴파일하지 않으면 응용 프로그램이 실행되지 않는다는 것을 의미한다.
3. 후니의 쉽게 쓴 시스코 네트워킹
* Part 6
Section 1-4
STP(Spanning Tree Protocol, 신장 트리 프로토콜) : 스위치나 브리지에서 발생하는 루핑을 방지하기 위해 사용됨
브리지ID : 브리지나 스위치들이 통신할 때 서로를 구분하기 위한 식별자 -> Bridge Priority(2바이트) + MAC Address(6바이트)로 구성됨
Path Cost : 브리지가 얼마나 가까운지 그리고 빠르지 비교하기 위한 값 -> 빠를수록 작은 값
- STP의 기본적인 동작 3가지
- 네트워크당 하나의 루트 브리지(root bridge)를 갖는다.
- 루트 브리지가 아닌 나머지 모든 브리지(non root bridge)는 무조건 하나씩의 루트 포트(root port)를 갖는다.
- 세그먼트당 하나식의 designated port를 갖는다.
STP에서 루트포트나 designated port가 아닌 포트는 block처리를 한다.
- root port, designated port등을 정하는 순서
- 누가 더 작은 Root BID를 가졌는지
- 루트 브리지까지의 Path Cost는 누가 더 작은지
- 누구의 BID(Sender BID)가 더 낮은지
- 누구의 포트 ID가 더 낮은지
브리지에서 이러한 스패닝 트리 정보들을 담는 특수한 프레임을 BPDU(Bridge Protocol Data Unit)이라고 한다.
4. 김영한의 Spring 로드맵
JdbcTemplate 또는 MyBatis를 통해 DB와 연결되는 반복적인 코드를 줄일 수 있다. -> SQL은 직접 작성
JPA ->위의 장점 + SQL작성 부분 필요(기본적인 CRUD는 작성필요 없음)
JPA를 사용해 SQL과 데이터 중심 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다. -> DB의 Entity와 자바의 클래스를 매핑시킴으로써
'TIL' 카테고리의 다른 글
TIL - 0325 (0) | 2023.03.25 |
---|---|
TIL - 0324 (1) | 2023.03.24 |
TIL - 0321 (0) | 2023.03.21 |
TIL - 0320 (0) | 2023.03.20 |
TIL - 0318 (0) | 2023.03.18 |