1. 알고리즘
- 프로그래머스 뒤에 있는 큰수 찾기
- https://ahlight.tistory.com/130
프로그래머스 - 뒤에 있는 큰 수 찾기
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이
ahlight.tistory.com
2. 운영체제(공룡책)
*챕터1
1.6 보안과 보호(Security and Protection)
컴퓨터 시스템이 다수의 사용자, 다수의 프로세스를 병행 수행을 허용한다면, 데이터에 대한 접근은 반드시 규제 되어야 한다. 이를 위해 여러 자원들에 대해 운영체제가 허락한 프로세스만이 작업할 수 있도록 보장해야 한다.
보호(protection)란 컴퓨터 시스템이 정의한 자원에 대해 프로그램, 프로세스 또는 사용자들의 접근을 제어하는 기법이다. 보호 기법은 시행될 제어에 대한 명세와 이들을 강제 시행하는 방법을 규정하는 수단을 반드시 제공해야 한다. 보호 받지 않는 자원은 오,남용을 방지 할 수 없다.
컴퓨터 시스템은 충분한 보호 기능이 있더라도 오류가 발생하거나 부적절한 접근을 허용할 수 있다. 이를 위해 보안(security)가 필요하다. 보안은 외부 또는 내부의 공격을 방어하는 기법이다. 어떤 운영체제는 여러 공격들의 일부를 막는 기능을 고려하고 있으며, 다른 운영체제들은 정책이나 부가적인 응용프로그램을 고려한다.
보호와 보안을 제공하기 위해선 시스템의 모든 사용자를 식별할 수 있어야 한다. 또 사용자를 그룹별로 나누는 그룹기능이 있을 수 있다. 그룹기능은 시스템 전체에 존재하는 그룹이름과 그룹 식별자의 리스트로 구현 될 수 있다.
사용자는 때때로 원하는 작업을 수행하기 위해 권한을 상승해야만 하는 때가 있다. 프로세스는 종료되거나 특권을 해제하기 전까지 유효 사용자 식별자를 이용하여 수행된다.
1.7 가상화(Virtualization)
가상화는 단일 컴퓨터의 하드웨어를 여러가지 실행환경으로 추상화하여 개별 환경이 자신만의 컴퓨터에서 실행되고 있다는 환상을 만들 수 있는 기술이다. 가상 머신 사용자는 CPU가 프로세스를 전환하는 것처럼 단일 운영체제에서 다양한 운영체제간 전환을 할 수 있다.
가상화는 운영체제가 다른 운영체제 내에서 하나의 응용프로그램처럼 수행될 수 있게 한다. 소프트웨어로 컴퓨터 하드웨어 시뮬레이션하는 에뮬레이션은 일반적으로 소스 CPU유형이 대상 CPU 유형과 다른 경우에 사용된다. 즉 한 기계를 위해 작성된 전체 운영체제를 다른 기계에서 수행되도록 확장할 수 있다. 하지만 에뮬레이션은 비용이 크다. 만일 소스와 목표 CPU가 비슷한 성능 수준일 경우 에뮬레이트된 코드는 원래의 코드보다 훨씬 느리게 수행된다.
이와 달리 가상화에서는 특정 CPU를 위해 컴파일된 운영체제가 동일 CPU용의 다른 운영체제 내에서 수행된다. 가상화는 다수 사용자가 작업을 병행 수행하기 위한 방법으로 IBM 대형컴퓨터에 처음 등장했다.
1.8 분산시스템(Distributed Systems)
분산 시스템은 물리적으로 떨어져 있는 이기종 컴퓨터들의 집합이다. 각 컴퓨터들은 네트워크로 연결되어 공유 자원에 접근할 수 있고 이러한 점은 성능 및 데이터 가용성, 신뢰성을 향상 시킨다. 운영체제는 네트워크 통신 방식 중 대표적인 TCP/IP를 대부분 지원하며, 이를 위해 네트워크 프로토콜은 인터페이스 장치(어댑터), 장치 드라이버 및 데이터를 처리하는 소프트웨어가 있어야 한다.
네트워크는 노드간의 거리에 따라 규모가 달라진다. 블루투스로 통용되는 PAN(personal), 사무실 규모의 LAN(local), 도시간 규모의 MAN(metropolitan), 국가간 규모의 WAN(wide)이 있다.
네트워크 운영체제는 다른 컴퓨터의 다른 프로세스가 메시지를 교환할 수 있도록 하는 통신체계와 함께 네트워크를 통한 파일 공유와 같은 기능을 제공하는 운영체제이다. 또 다른 정의로는 라우터, 스위치와 같은 네트워크 장치를 위해 특화된 운영체제이다.
3. 후니의 쉽게 쓴 시스코 네트워킹
* Part4
Section 5
허브의 한계인 Collision Domain을 해결하기 위한 장비로 브리지와 스위치가 있다. 먼저 개발되고 사용 된것은 브리지이다. 두 장비의 공통점은 Collision Domain은 분리하는 것이다. 스위치는 허브에 비해서 데이터를 처리하는 방법이 우수할 뿐 아니라 데이터의 전송 에러등을 복구하는 등 여러가지 기능을 가지고 있다.
하지만 스위치 모든 장비가 어느 한 곳으로만 향하는 경우는 허브와 속도에서 크게 차이가 나지 않는다.
예를 들어 서버가 한 대만 있는 경우 서버와 통신하면 나머지는 통신을 못하게 되기 때문이다.
Section 6-7
브리지(bridge)와 스위치(switch)는 아래와 같이 5가지 기능을 가진다.
구분 | 특징 |
Learning | - 자신의 포트에 연결된 PC가 통신을 위해 프레임을 내보내면 해당 PC의 MAC주소를 읽어서 MAC address table에 저장한다. -> 기존에 저장이 안된 경우 |
Flooding | - 자신의 포트에 연결된 PC가 보내는 프레임의 목적지 주소가 MAC address table에 없는 경우 나머지 포트로 해당 프레임을 모두 보내는 것 -> 브로드,멀티 캐스트의 경우에도 발생 |
Fowarding | - 목적 주소가 MAC address table에 있고 다른 세그먼트에 있는 경우 해당 포트로만 프레임 전송 |
Filtering | - Fowarding과는 다르게 같은 세그먼트에 있는 경우 다른 세그먼트로 넘어가지 못하게 막음 |
Aging | - MAC address table은 한정적이기 때문에 가장 오랫동안 들어오지 않은 출발지 주소를 일정시간 후 삭제 일반적으로 300초 - Aging이 끝나기 전에 같은 출발주소를 가진 프레임이 들어오면 타이머를 리셋 -> 리프레쉬(refresh) |
브리지와 스위치의 차이점
구분 | 특징 |
브리지 | - 소프트웨어식 처리 방식 -> 상대적으로 느림 - 각 포트는 같은 속도를 지원 - 포트 수 적음 - Store-and-foward 방식만을 사용 -> 에러 복구 능력은 뛰어나지만 프레임을 전부 받아들이기 때문에 느림 |
스위치 | - 하드웨어식 처리 방식(ASIC(Application-Specific Integrated Circuit)방식 -> 상대적으로 빠름 - 포트별 다른 속도를 연결할 수 있음 - 포트 수 많음 - Store-and-foward와 Cut-through 방식을 사용 |
*Store-and-foward : 들어오는 프레임을 전부 받아들인 후 처리 -> 에러 복구 능력이 뛰어나지만 느리다.
*Cut-through : 프레임의 목적지 주소만 확인 후 바로 전송처리 -> 처음 48비트만 보기에 빠르지만 에러복구능력이 낮음
*Fragment-free : 처음 512비트를 보기에 위 두가지 방식의 장점을 결합한 방식
4. 김영한의 Spring 로드맵
- Spring에선 url로 들어온 값을 Controller에서 먼저 찾고 없으면 resources - static에서 찾는다.
- View를 표현하는데엔 3가지 방식이 있다.
구분 | 특징 |
html 그대로 | - 말그대로 해당 url에 맞는 html파일을 넘겨주는 것 - 동적변화 없고 정적컨텐츠만 포함 가능 |
MVC & 템플릿 활용 | - model에 값을 담아 리턴하면 해당 값에 맞는 파일을 뷰리졸버에서 선택한다. - model에 담겨 있는 값을 활용해 값이 변하는 동적 컨텐츠 사용가능 |
API 활용 | - ResponseBody를 활용하기 때문에 ViewResolver 대신 HttpMessageConverter가 동작 - 쿼리스트링에 들어있는 값을 그대로 보냄(문자인 경우) - 객체인 경우 json의 형태로 보냄(키:값) - 이 때 객체를 json 형태로 바꿔주는 라이브러리로 Spring은 Jackson을 사용 -> gson으로 변경 가능 |
'TIL' 카테고리의 다른 글
TIL - 0316 (0) | 2023.03.16 |
---|---|
TIL - 0315 (0) | 2023.03.15 |
TIL - 0310 (0) | 2023.03.11 |
TIL - 0309 (0) | 2023.03.10 |
TIL - 0308 (0) | 2023.03.08 |