개발👩💻 (72) 썸네일형 리스트형 9-2: TCP Congestion Control TCP Congestion Control 방법 1️⃣ AIMD (구버전) : 톱니바퀴 timeout, new ACK 이벤트 발생 시 변하는 상태 slow start, congestion avoid, fast recovery AIMD 방식 TCP 버전 TCP Tahoe (구버전) TCP Reno (신버전) 2️⃣ CUBIC (신버전) : 3차 함수 1️⃣ AIMD (구버전) : 톱니바퀴 접근 방식: congestion 발생해서 패킷 로스가 발생할 때까지 보내는 쪽 속도 계속 증가시켜가다가, 패킷 로스가 발생하면 줄여가는 방식 이름에서 나와 있다 싶이 증가시킬 땐 선형으로 증가시키고 감소시킬 땐 빠르게 증가시킨다. 이 형태는 증가할 땐 + 로 증가, 감소할 땐 * 로 감소하는 것과 같다. 그리고 점진적으로 .. 9-1:Principles of Congestion Control congestion control이 왜 필요하냐면 큐잉 딜레이 패킷 로스 위 두가지가 congestion 유발 라우터에 교환을 위한 버퍼가 있는데, 이 버퍼는 항상 유한한 크기를 가니다. 그리고 앞에서 배웠던 것 처럼 큐잉 딜레이는 트래픽 레이트가 1에 가까워질 수록 기하급수적으로 증가한다. 이렇게 딜레이가 증가하면, 통신을 제대로 할 수가 없으니 congestion control 이 필요한 것이고, 버퍼가 가득 차면, 패킷을 잃어버릴 수 있기 때문에, congestion control이 필요한다. 여기서 이제 앞으로 나오는 주요 용어는 1) congestion control 2) throughput (처리량) 3) capacity (라우터와 호스트 사이에서 수용할 수 있는 최대 양) 4) λin, λo.. 백준 js 1212: 8진수 2진수 문제 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. 출력 첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다. 예제 입력 1 314 예제 출력 1 11001100 풀이 이 문제가 정답 비율이 낮은 이유,, 0인것 같다 그냥 수가 0인경우를 제외하고는 반드시 1로 시작해야한다고만 명시되어 있어서 이 부분만 처리했는데, 찾아보니 000인 경우도 0으로 변환해주어야 한다. (맞는말이긴한데) 스위치문을 사용해서 0-9까지 변환 케이스 문을 만드는 방법이 있고 자릿수를 빼주면서 0을 만드는 방법이 있는데 케이스문이 더 빠른 것 같다. 전체코드 const .. 백준 js 1373: 2진수 8진수 문제 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다. 예제 입력 1 11001100 예제 출력 1 314 풀이 2진수에서 8진수로 변환하면된다. 기존에 js에 있는 메서드들로, toString(n) // 10진수를 n진수로 변환 parseInt(num, n) // n진수인 num을 10 진수로 변환 하는 방법으로 하려 했는데, 이는 input값이 Number 객체의 길이를 넘어감으로 안되고, 이진수 숫자를 뒤에서부터 세개씩 묶어서 각 자릿수곱해 더해주면 8진수로 변환 가능하다. 2가지 방법이 있다. 1️⃣ 비트 자릿수 각 비트를 3개씩 꺼내서.. 예제 프로그래밍: myrmdir, myls(9-2) myrmdir 해당 디렉토리 포함해서 모든 디렉토리와 파일을 삭제하는 프로그래밍 + 파일이 주어지면 디렉토리가 아니기 때문에 아무것도 삭제하지 않는다. 주어진 인자가 디렉토리인지 파일인지 확인한다 stat()을 호출하여 S_ISDIR() 메르토 사용하여 해당 인자가 디렉토리인지 확인한다 디렉토리인 경우 removeDir()을 호출한다. removeDir opendir(), readdir(), closedir()을 호출한다. readdir을 호출하여 해당 디렉토리에 있는 파일 및 디렉토리들을 확인한다. 그리고 읽어들인 엔트리가 디렉토리인 경우 다시 removeDir을 호출하여 삭제한다. 읽어들인 엔트리가 파일인 경우 unlink를 사용해서 해당 파일을 삭제한다. 디렉토리 내에 모든 파일/디렉토리가 삭제되면.. 디렉토리 다루기(9-1) mkdir,rmdir opendir,closedir readdir rewinddir chdir getcwd mkdir, rmdir * 삭제는 빈 디렉토리만 가능함 int mkdir(const char *pathname, mode_t mode) int rmdir(const char* pathname) 성공하면 0, 실패하면 -1 을 반환한다. 디렉토리를 생성하고 그냥 ls를 했을 때는 아무것도 안나오지만, ls -a 로 히든파일까지 모두 보면 . 과 .. 이 나온다. 이는 현재디랙토리와 부모디렉토리를 가리키는데, 이들의 생성/수정시간을 보면 해당 디렉토리가 생성된 시간으로 나와있다. * 부모 디렉토리를 가리키는 .. 또한 현 디렉토리 생성 시간으로 시간이 설정되어 있다. 그리고 해당 디렉토리를 파일을 생성.. 라이브러리 생성(9-3) 메인 파일이 있고, 메인파일의 헤더 파일이 있고, 헤더 파일에서 가져와서 사용해야하는 c파일들이 있다. 이 c 파일들을 묶어서 라이브러리로 만들어 사용하고 싶다. 내가 만든 라이브러리를 사용하는 방법 내가 만든 각 라이브러리들을 모아서 하나로 컴파일 한 후 불러서 사용할 수 있는데, 이를 하지 않으면 컴파일할 때 gcc -o(이름 붙여주기) mycp main.c myfopen.c ... myfput.c 이런식으로 하나하나 불러서 컴파일해주어야 한다. 표준 입출력 라이브러리를 사용할 때는 따로 라이브러리를 명시하지않아도 된다. $ gcc a.c math라이브러리를 사용할 떄는 $ gcc a.c -lm curses 라이브러리를 사용할 때는 $ gcc a.c -lcurses 이런식으로 뒤에 붙여서 약어로 사용.. 백준 js 17087: 숨바꼭질 6 문제 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이동할 수 있다. 수빈이의 위치가 동생이 있는 위치와 같으면, 동생을 찾았다고 한다. 모든 동생을 찾기위해 D의 값을 정하려고 한다. 가능한 D의 최댓값을 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 105)과 S(1 ≤ S ≤ 109)가 주어진다. 둘째 줄에 동생의 위치 Ai(1 ≤ Ai ≤ 109)가 주어진다. 동생의 위치는 모두 다르며, 수빈이의 위치와 같지 않다. 출력 가능한 D값의 최댓값을 출력한다. 예제 입력 1 3 3 1 7 11 예제 출력 1 2 예제 입력 2 3 81 .. 이전 1 ··· 3 4 5 6 7 8 9 다음