1.TypeScript를 사용하기 위헤서는 npm install -g typescript를 통해 전역으로 typescript를 설치해야한다.
파일을 생성할 때 .js가 아닌 .ts로 생성하면 바로 type check가 되는 것을 볼 수 있다.
tsc라는 커맨드로 특정 파일을 변환할 수도 있다.


2.SSL과 TLS는 HTTPS의 보안 부분을 담당하는 대표적 프로토콜인데 SSL은 넷스케이프에서 만든 프로토콜이고 
TLS는 SSL 3.0버전을 기반으로 생성된 프로토콜이다.

TLS자체가 SSL을 기반으로 생성했기 때문에
HTTPS에서 S를 의미할 때는 총칭해 SSL이라고 부르기도 한다.


3.SSL은 보안을 위해 리소스를 많이 사용하기 때문에 HTTP보다 느리다는 닩머이 있다. 
수치적으로는 2~100배정도 느려지는데 이를 해결하기 위해 SSL 엑셀러레이터라는 하드웨어를 사용해 해결하는데
SSL 엑셀러레이터는 SSL 전용 하드웨어로 설계되어 SSL 처리만 담당한다.


4.HTTPS는 위와 같은 단점들이 있기 때문에 인증서->공개키->공통키 방식으로 공통키 레벨로 소통을 지속하지만 연결 해제 후 연결할 때 마다 공개키로 통로를 구축해야 하기 때문에 리소스가 많이 소모되며 증명서를 위한 비용도 소모되기 때문에 목적에 따라서는 HTTP만 선택하는 경우도 있다.


5.server측에서는 client에서 요청하는 상대방이 누구인지 확인할 수 없기 때문에 인증이 필요한데 
일반적으로는 패스워드, 토큰, 증명서, 바이오 매트릭스(지문 등), IC 카드 등을 요청하며 
HTTP에서는 일반적으로 BASIC인증, DIGEST 인증, SSL 클라이언트 인증, 폼 베이스 인증을 사용한다.


6.BASIC인증은 HTTP 1.0때 구현된 방식이지만 아직도 사용되고 있다.
base64라는 형식을 통해 인코딩한 아이디, 비밀번호를 헤더에 담아 전송하는 방식이기 때문에 데이터를 탈취당할 경우 누구나 쉽게 복호화 할 수 있기 때문에 보안적인 면에서는 문제가 많다.


7.cache memory는 cpu와 memory 사이에서 데이터를 처리할 때 지연시간이 생기는 것을 방지하기 위해 cpu에 추가한 고성능 임시기억장치라고 볼 수 있다.

빠른 속도지만 용량이 작고 비용이 비싸다는 단점이 있으며
하나의 메모리가 아닌 쪼개서 L1, L2 등으로 2~3개의 메모리를 사용한다는 특징이 있다.

L1은 CPU 내부에 존재하며
L2는 CPU와 RAM의 중간쯤 위치하고
L3는 존재할 경우 메인보드에 위치할 가능성이 높다.

이와 유사한 disc cache가 있는데 이는 hard-disk와 ram 사이에 존재하는 cache다.


8.cache memory의 기본적 동작원리는 시간지역성과 공간지역성을 참조하는데
시간지역성은 한번 사용된 경우 다시 사용할 가능성이 높다는 것과
공간역성은 하나의 데이터를 사용할 경우 인접데이터가 사용될 가능성이 높다는 것이다.

이를 통해 한번 사용된 경우 그 데이터와 인접데이터들을 저장하며
만약 요청한 데이터가 cache에 존재할 경우 Cache Hit이며
요청한 데이터가 cache에 존재하지 않는 경우는 Cache Miss라고 불린다.

Cache Miss에는 3가지 경우가 있는데
Cold Miss는 주소 자체를 처음 불러오기 때문에 저장되지 않은 경우이며
Conflict Miss는 다른 데이터가 같은 주소에 할당되어 찾을 수 없는 상황이고
Capacity Miss는 memory 공간자체가 부족해 나는 미스로 
이를 해결하기 위해 캐시 크기를 확장하면 속도가 느려지고 파워를 많이 소모하며 비용적인 단점도 있다.


9.Cache의 구조 및 작동박식은 Direct Mapped Cache, Fully Associative Cache, Set Associative Cache가 있는데 
Driect Mapped Cache는 Conflict Miss를 발생시키는 원ㅇ니 중 하나로 여러개의 주소를 캐시 메모리의 한 주소에 매칭하는 다대일 방식이다.

Fully Associative Cache는 비어있는 공간 아무곳에나 주소를 저장하는 방식으로 저장한 데이터를 찾을 때 시간이 걸리기 때문에 중첩, 충돌의 문제는 없지만 시간적인 문제가 발생한다.

위 두가지 방식의 장단점을 모아서
Set Associative Cache를 만들었는데
특정 행을 구분한 다음 비어있는 열에 넣는 방식으로 진행된다.
Direct보다 검색은 느리지만 저장이 빠르고
Fully에 비해 저장은 느리지만 검색이 빠른 절충형 방식이다.





(1).백준 2991 사나운 개는 주기적으로 공격, 휴식의 패턴을 가진 두마리의 개가 있는 집에 배달을 갔을 때 공격을 몇회 받는지 계산하는 문제였다.
공격, 휴식기간을 더해 사이클로 잡은 다음 나머지 처리를 해 휴식인지 공격인지를 확인할 수 있었다.

let input = `2 3 4 5
4 9 5`.split('\n')

let result = []
let [a1,a2,b1,b2] = input[0].split(' ').map(Number)
let times = input[1].split(' ').map(Number)
for(let i = 0 ; i < 3 ; i++){
    let attacked = 0
    if(times[i]%(a1+a2) > a1 || times[i]%(a1+a2) === 0){
    }
    else{
        attacked++
    }
    if(times[i]%(b1+b2) > b1 || times[i]%(b1+b2) === 0){
    }
    else{
        attacked++
    }
    result.push(attacked)
}

console.log(result.join('\n'))

 

'회고' 카테고리의 다른 글

[취업준비일지] - 21  (0) 2022.11.10
[취업준비일지] - 20  (0) 2022.11.09
[취업준비일지] - 18  (0) 2022.11.07
[취업준비일지] - 17  (1) 2022.11.06
[취업준비일지] - 16  (0) 2022.11.05

+ Recent posts