본문 바로가기

전체 글68

(Java)OOP / 인터페이스와 추상클래스 OOP(객체지향 프로그래밍) - 절차지향 프로그래밍과 달리 객체단위로 코드를 조직화해서 재사용성을 높이고 협업과 유지보수성에 유리함 - 상속 : 부모 객체의 특성을 그대로 물려받아서 재사용성을 높일수 있음 - 다형성 : 같은 데이터를 받아도 여러 형태가 나올수 있는것으로 함수 오버로딩이나 하나의 인터페이스 객체에 여러 구현 객체를 사용가능함 - 캡슐화 : 객체의 내부를 보여주고 싶은 부분만 보여줄수 있음. public(전부), private(같은 클래스 내부에서만), package(같은 패키지 내부에서만), protected(같은 패키지 내부에서 상속됬을때만) 인터페이스란? - 보통 두장치 사이의 통신을 원할히 할수 있게 해주는 접합부를 의미한다. 자바에서 인터페이스는 여러 클래스들을 동일한 형식으로 정.. 2021. 7. 23.
(멀티쓰레딩, 비동기처리)다중 쓰레드 동기화 - Mutex 임계영역이란? - 함수 내에 둘 이상의 쓰레드가 동시에 실행하면 문제를 일으키는 하나 이상의 문장으로 묶여있는 코드블록 이러한 임계영역에서 문제를 피하고 다중 쓰레드를 동기화 시키는데 여러 기법들이 존재한다. 운영체제 마다 각 기법의 구현방법이 다르다. Mutex 임계영역을 통과할때 사용하는 자물쇠라고 보면된다. - 과정 뮤텍스 오브젝트를 초기화 해준 후 임계영역 진입부에 뮤텍스락을 걸어준다. 현재 진입한 스레드 외에 다른 스레드는 락을건 부분에서 락이 풀릴때까지 블로킹 되며 진입스레드가 작업 마치고 락을 풀고 나가면 기다리던 스레드 중 하나가 다시 진입하고 락을 걸게된다. 모든 임계영역내 작업을 마친 뒤 해당 뮤텍스 오브젝트를 해제하면 끝난다. 하지만 이렇게 락을 걸었어도 락을건 Blocking상태에서.. 2020. 10. 13.
(C++)참조자 const 참조자는 L-value와 R-value참조자가 있다. 초기값으로 각 value에 맞는 값을 넣어주면 되는데 const키워드가 붙은 참조자에 대해 알아보자. 1. const int& const int& a 나 int const& a나 같은 의미이다. 둘다 참조자 자체를 상수화시키는게 아니라 상수형 int를 참조하는 의미이다. const int를 참조하기 때문에 (초기화되는 변수가 꼭 const일필요는 없다.) 해당 변수의 별명격인 참조자의 값을 다른값으로 바꿀수 없다. 또한 초기값으로 항상 변수가 와야했던것과 달리 const이기에 상수로 초기화 해 줄 수 있다. 2. int& const 참조자 자체를 상수화 시킨다. 하지만 생각해보면 참조자 자체가 const와 동격이 된다. L-value참조자의 경우 처음.. 2020. 10. 6.
(IOModel)Epoll 멀티플렉싱 io 모델의 select는 아무래도 한계가 뚜렸했다. 매 순간 해당 소켓이 이벤트를 받았는지 직접 확인해 줘야 했고 커널로 감시하고자 하는 FD의 모음을 넘겨야 했다. 만약 해당 FD_SET을 처음 한번 등록하고 우리는 FD의 추가,삭제만 해주고 커널에 넘겨주지 않아도 알아서 관리해서 이벤트가 통지된 FD들만 따로 알려주면 어떨까? 이것이 바로 리눅스에서 제공하는 epoll이다. 1. epoll 과정 먼저 epoll_create(epoll 인스턴스의 사이즈)를 통해 커널이 따로 관리하는 파일디스크립터의 저장소(epoll인스턴스)를 만든다. 해당 함수의 반환은 epoll인스턴스의 fd 넘버이다. 그 후 관찰대상이 되는 fd를 등록하는 과정으로 epoll_ctl(epoll인스턴스, 추가할지 삭제할.. 2020. 10. 5.