본문 바로가기

오늘 공부 스케줄 끄적끄적..

2024-09-12 갓생 살기 7일차

일주일차가 지났다!!!

 

1. 프론트엔드 cs 공부 

css position 에는 

static 일반적 문서 흐름

relative: static+ 자신 기준 top, left, right, bottom 값에 따른 오프셋

absolute : 일반적 문서 흐름에서 제거, 가장 가까운 조상 요소에 대해 상대적 배치 

fixed: 뷰포트 초기 컨테이닝 블록을 기준으로 배치 

sticky: static + fixed

 

2. 네트워크 공부

TCP flow control에 대해서 공부 > sender가 리시브 버퍼 상태에 따라 보내는 양을 조절

만약 리시브 버터가 0인 경우 , 센더는 주기적으로 data없이 세그먼트를 보내서 리시브 버퍼의 상태가 어떤지 응답을 받으려고 함.

3way handshake가 어떻게 이루어지는지에 대해 공부

 

연결 될 때

클라이언트가 SYNbit를 통해서 TCP 커넥션 요청을 알림. 

서버는 SYNACK를 통해서 응답을 보냄. 

클라이언트는 서버가 연결되어있는것을 확인하고 데이터와 함께 요청 보냄. ( 여기서부턴 SYNbit =0 )

리시버는 클라이언트와연결되어있음을 확인함. 

 

연결 해제 할 때 

클라이언트는 서버가 꺼질 때 까지 기다림. 

이유 : 만약 마지막으로 클라이언트를 닫겠다는 ACK 가 유실되면 서버의 타임아웃으로 클라이언트에게 계속 응답을 보내는데 클라이언트는 철수해서 응답을 보낼 수 없는 문제가 발생할 수 있음

 

Principles of congestion control은 

End- end congestion control이 있는데 

네트워크가 막히지 않도록. 

TCP 세그먼트를 통해서 상황을 유추하고 컨트롤 하기 때문에 아주 정확하지는 않음.

 

3. sql 공부

join과 관련된 문제 풀이를 했다. 

 

4. 자바 공부

기본 개념 복습 

접근 제어 지시자 

private : 같은 클래스 내부에서만 접근 가능

default : 같은 패키지 내부에서만 접근가능 

protected : 같은 패키지 나 상속관계의 클래스에서 접근 가능 

public 클래스 외부 어디서나 접근

 

this =>

- 인스턴스 자신의 메모리를 가리킴

- 생성자에서 또 다른 생성자를 호출 할 때 

- 자신의 주소( 참조값) 을 반환

 

5. 알고리즘 

병합 정렬 코드 구현

어제 Split 코드 구현한 거 다시 복습하고

병합 하는 것 까지 복습 겸 다시 작성 해봤다.

 

public ArrayList<Integer> mergeSplitFunc(ArrayList<Integer> dataList) {
    if (dataList.size() <= 1) {
        return dataList;
    }
    int medium = dataList.size() / 2;  

    ArrayList<Integer> leftArr = new ArrayList<Integer>();
    ArrayList<Integer> rightArr = new ArrayList<Integer>();

    leftArr = mergeSplitFunc(new ArrayList<Integer>(dataList.subList(0, medium))); 
    rightArr = mergeSplitFunc(new ArrayList<Integer>(dataList.subList(medium, dataList.size()))); 

    return mergeFunc(leftArr, rightArr);
}

public ArrayList<Integer> mergeFunc(ArrayList<Integer> leftList, ArrayList<Integer>rightList){
    ArrayList<Integer> mergedList = newArrayList<Integer>();
    int leftPoint = 0; 
    int rightPoint = 0;

    // CASE1: left/right 둘 다 있을 때
    while(leftList.size() > leftPoint && rightList.size() > rightPoint){
        if(leftList.get(leftPoint) > rightList.get(rightPoint)){
            mergedList.add(rightList.get(rightPoint));
            rightPoint++;
        }else{
            mergedList.add(leftList.get(leftPoint));
            leftPoint++;
        }
    }
    while(leftList.size() > leftPoint){
        mergedList.add(leftList.get(leftPoint));
        leftPoint +=1;
    }

    while(rightList.size() > rightPoint){
        mergedList.add(rightList.get(rightPoint));
        rightPoint+=1;
    }

    return mergedList;

    
}

 

6. 할일 

- 자소서 완성 

- 프로젝트 수정 작업

- DP 문제 한개 풀기