본문 바로가기

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

2024-09-09 갓생 살기 4일차

1. 프론트엔드 Cs 개념 공부

호이스팅이란 변수 및 함수 선언문이 스코프 내의 최상단으로 끌어올려지는 현상

 

2.네트워크 공부 

TCP 가 어떻게 신뢰성있는 데이터를 확인하지? => 한패킷을 보내보고 패킷 신뢰성 확인하면 다음 패킷 보냄. 

그렇다면 에러 핸들링은 ? 

- error detection

- feedback ( 패킷 하나 받을 때마다 ACK, NACK인지 피드백) 

- retransmission (Nack일때)

근데 보낸 패킷이 새로운 패킷인지 duplicate인지 어떻게 알지 ? sequence number 을 헤더에  넣어줌. 1 bit면 충분! 

만약 duplicate된 seq이면 버리고 ACK만 다시 보내주면 됨. 

메시지 유실 시 에러 메카니즘은? 

Sender가 보내는 도중에 데이터 유실로 receiver가 받지 못하거나 receiver가 ACK를 보내는 도중에 유실되는 경우 둘 다 

Sender측에서 패킷을 재전송함. 

타이머에 맞추지 못해서 늦게 전송되는 경우도 패킷이 재전송 됨. 

 

결론 >

신뢰성 없는 채널에서는 패킷 에러, 패킷 로스가 생길 수 있음

패킷 에러를 핸들링 하기 위해 에러 디텍션, 피드백, 재전송, 시퀀스 메카니즘이 있음

패킷 로스시에는 타임아웃 메카니즘이 있음

 

3. 자바 기초 공부

평소에 자주 쓰던 js랑 같아서 짧게 훑는 느낌으로다가

각종 연산자랑 반복문에 대해서 다시 복습하는 시간을 가졌다. 

이건 쉬운 문법들이라서 개념 정리는 생략..

 

4. SQL 

-- 기본 조회 -- 
select * 
  from tcustomer
 where caddr  = '부산시 남구'
 order by cname asc;

-- 문제 1
select   
         ename as 직원명
	   , to_char(startdate,'YYYY_MM_DD') as 입사일 
  from temployee
 where dnumber in ('D1001','D2001')
 order by startdate;

-- 문제 2
-- interval 날짜 타입의 연산을 돕기 위한 데이터 타입
select 
         ename as 직원명
	   , startdate as 입사일
  from temployee
 where startdate < cast('2020-12-25'as timestamp) - cast('2 year'as interval);

-- 그룹 제어 --

-- GROUP BY --
-- HAVING 그룹 바이로 명시된 데이터 조건절 / 집계함수 사용하여 조건을 표현 --
select  
       count(caddr)  
  from tcustomer as tcu
 group by caddr 
having count(caddr) >2; 

-- 문제 1
select 
         inumber as 제품코드
 	   , sum(pcount) as 총_생산량
  from tproduction
 where pdate between cast('2020-02-01'as timestamp) and cast('2020-03-01' as timestamp)
  group by inumber ;
 
-- 문제 2
select 
         enumber as 직원번호
	   , sum(pcount) as 생산수량
  from tproduction
  where pdate between cast('2020-01-01'as timestamp) and cast('2020-02-01' as timestamp)
 group by enumber
having sum(pcount) >= 500;

 

5. 알고리즘

재귀 함수

자기 자신의 함수를 호출하는 함수

시간 복잡도, 공간 복잡도 O(n)

/*
	방법 1
*/

public class Factorial{
	public int factorialFunc(int num){
    	if(num > 1){
        	return num * factorialFunc(num - 1);
        }else{
        	return 1;
        }
    }
}

/*
	방법 2
*/
public class Factorial{
	public int factorialFunc(int num){
    	if(1 >= num ){
        	return 1;
        }else{
        	return num * factorialFunc(num - 1);
        }
    }
}

 

6. 이제 할일

자소서 수정! 

그리고 프로젝트 수정 작업!!

 

 

참고 

https://github.com/Esoolgnah/Frontend-Interview-Questions?tab=readme-ov-file