본문 바로가기

연구소👨‍💻/CS연구소16

[C++] 예외 처리 예외처리예외처리는 프로그래밍 언어에서 필수다. 단순 알고리즘을 풀면서도 수많은 에러와 마주하고 실제 서비스를 위한 프로그램에서는 예상하지도 못한 에러가 발생할 때도 많을 것이다.최근 SRS라는 오픈소스 프로젝트를 읽고있는데 그쪽의 코드를 보면 실제 로직보다 에러처리가 훨씬 많다는걸 알 수 있었다. 그러다보니 내가 나아가야 할 방향도 이런 에러들을 관리하는 방향이라는 생각을 하게 됐고 정리나 한 번 해보려고한다.try, catch, throw, noexcepttry - catch는 다른 언어에서도 많이 사용되는 쌍이다. 일단 무슨에러가 발생할지 모를 때 로직을 감싸고 에러가 발생했을 경우에 할 로직을 따로 처리해놓는 것이다 try { int result = divide(num1, num2.. 2024. 6. 26.
[C++] 다형성과 오버로딩, 오버라이딩 다형성이란부모객체를 선언하고 자식객체로 초기화해서 런타임시 다양한 실제타입에 따라 다른 메서드를 사용할 수 있게 하는 동적 다형성과 한 스코프 내에서 함수를 선언할 때 같은 이름의 함수를 다른 타입의 파라미터로 정의하는 정적 다형성이있다.오버라이딩과 가상함수 virtual오버라이딩은 부모의 객체의 메서드를 자식 객체가 재정의 할 수 있게 하는 기능이다.그런데 다형성을 지원하는 C++에서 부모 개체로 선언된 자식 객체의 경우 특정 오버러이딩 메소드를 호출하면 이 메소드는 부모의 메소드를 불러올까 아니면 자식의 메소드를 불러올까?Virtual은 여기서 작동한다. Virtual을 함수 앞에 선언하면 함수를 선언할 때 자식 클래스의 메소드가 이 메소드를 덮어 쓸 수 있게 해준다.그런데 무슨원리로?이런 기능을 들.. 2024. 6. 22.
[네트워크] TCP, UDP 프로토콜 들어가며지난번에 IP 관련 공부를 했다. 그럼 당연히 이제 전송 계층 공부를 할 차례 잠깐 들어가기전에 지난번 IP 패킷의 정보를 담고있는 IP헤더의 구조와 크기를 정리해봤다전송 계층 공부전송계층을 공부하게되면 누구나 TCP, UDP라는걸 배우게된다. 일단 둘은 판이하게 다르고 실제로 응용프로그램 계층의 프로토콜들도 UDP냐 TCP냐에 따라서 목적과 용도가 다르다는걸 알 수 있었다. 사실상 우리가 인터넷 계층에서 사용하는 프로토콜은 IP가 대부분이라는걸 생각하면 ( 실제로 UDP와 TCP도 둘다 IP프로토콜을 사용한다고한다) 둘의 차이점이나 구성을 명확히 파악해야 할 것 같다.일단 책에서 배운것을 기반으로 둘의 차이를 생각해보면TCP연결성이다데이터들의 도착순서가 보장된다.가상회선 방식을 사용한다위의 이유.. 2024. 6. 19.
[네트워크] IP프로토콜 분석 들어가며네트워크 CS에는 신기한 녀석이 살고있다. 바로 계층구조OSI 7단계와 TCP/IP 4계층이라고도 하는 녀석들이다 얘네는 실제 프로젝트에서 경험할 일이 없는 녀석이다 보니 외워도 까먹고 외워도 까먹고 항상 그렇다. 그 멍청한 연쇄를 끊고자 실제 실습을 겸해서 네트워크 공부를 하려고한다.개념TCP/IP 계층과 OSI 7계층은 같은 개념이고 그중에서 ip 프로토콜은 인터넷 계층의 프로토콜의 일종이다. 그냥 추상적으로 프로토콜을 공부하기는 힘들어서 C++의 ip 프로토콜을 직접 담당하는 라이브러리를 읽으면서 분석해보자 ip 모듈의 분해struct ip {#ifdef _IP_VHL u_char ip_vhl; /* version > 2 */#else#if BYTE_ORD.. 2024. 6. 16.