반응형
반응형
소켓 재활용은 이미 연결이 끊어진 소켓을 재사용하는 기술입니다. 소켓을 재활용하면 새로운 소켓을 생성하지 않고 기존 소켓을 활용하여 새로운 연결을 맺을 수 있습니다. 즉 소켓 생성 및 소켓 핸들 관리에 필요한 시스템 리소스를 절약할 수 있습니다. 소켓을 재활용하기 위해서는 소켓 연결이 끊어진 상태여야 합니다. 서버 관점에서 클라이언트의 접속을 비동기로 처리하는 과정은 다음과 같습니다. 리슨 소켓 생성 및 리슨 포트 바인드 소켓 미리 생성 후 대기 소켓 풀에 등록 클라이언트 접속 종료 시 사용한 소켓 재사용처리 후 대기 소켓 풀에 등록 예제 코드는 IOCP 기반입니다. 이해가 되지 않으면 다음의 IOCP 프로토타입 포스팅을 참고하세요. 2023.12.13 - [프로그래밍/C | C++] - IOCP 기반 ..
이번 포스팅에서는 데이터를 추출하거나 조회할 때 사용하는 SELECT SQL을 알아보겠습니다. 예제 SQL 구문을 작성하기 위한 샘플 데이터 테이블 구조는 아래 그림을 참고해 주세요. 구입한 책을 보며 직접 따라한 결과를 리마인드 할 겸 일기 형식으로 기록한 것입니다. 테이블 구조는 행(ROW)과 열(COLUMN)의 이차원 구조로 이루어져 있습니다. SELECT SQL 기본 문법 위의 'stock' 테이블을 조회하려면 다음의 SQL 쿼리를 실행하면 됩니다. SELECT * FROM STOCK; 쿼리문 작성 시 대소문자는 구분하지 않습니다. 또한 쿼리문의 끝은 다른 프로그래밍 언어와 유사하게 세미콜론(';')으로 구분합니다. 단어와 단어 사이는 띄어쓰기를 하거나 줄 바꿈을 하거나 상관없고 세미콜론으로 마침..
이번 포스팅 주제는 "Importing Dump Files into Oracle Database Using SQL Developer, Starting with Tablespaces and Users"입니다. 제가 얼마 전 SQL 공부를 위해 "평생 필요한 데이터 분석"이라는 제목의 책을 샀는데 실습을 위해서는 Oracle Database를 설치하고 책 저자님이 제공해 주시는 샘플 데이터를 import 해야 했습니다. 테이블스페이스와 사용자 계정을 생성하고 제공받은 덤프 파일을 리눅스에 설치한 Oracle DB에 IMPORT 해보겠습니다. 1.제공받은 dump 파일을 import 해야 할 때 사전 검토 사항 남으로부터 제공받은 dump 파일을 import 하려면 다음의 사항을 사전에 검토해야 합니다. 계정..
이번 포스팅 주제는 " Simple Techniques for Oracle Database User and Tablespace Management"입니다. 유저 계정과 테이블스페이스 관리 명령어를 알아봅니다. 포스팅에서 Oracle Database 19c 설치를 다뤘는데 Database를 사용하기 위해서는 User와 Tablespace 생성이 필요합니다. Oracle Database 설치 방법에 대한 포스팅은 맨 아래에 링크가 있습니다. 1. DBA 계정으로 Oracle 접속하기 계정과 테이블스페이스 관리를 위해서는 sysdba로 접속이 필요합니다. 아래 명령어로 접속합니다. sqlplus / as sysdba 2. Oracle 계정 및 테이블스페이스 관리 Oracle Database를 설치하면 사용자용..
Starting and Stopping Oracle Database: A Step-by-Step Guide. Oracle Database의 인스턴스와 리스너 시작/종료 방법을 알아보겠습니다. 먼저 DB 인스턴스와 리스너의 시작/종료 순서는 상관없다는 점을 알아두세요. 1. Oracle Database의 State 정의 Oracle Database는 그 동작 상태를 네 가지 상태로 구분할 수 있습니다. Shutdown: Database가 완전히 종료된 상태로 DB파일이 메모리에서 해제되고 DB 프로세스는 종료됨. Nomount: DB파일이 메모리에 로드는 됐지만 마운트는 안된 상태. DB 프로세스 종료 상태. Mount: DB파일이 마운트된 상태이지만 아직 열리지 않은 상태. Open: Database 프..
이번 포스팅에서는 IOCP 서버에서 소켓 풀을 관리하는 방법에 대해 알아보겠습니다. 이전 포스팅에서 IOCP 뼈대 코드를 작성하고 초기화하는 과정을 알아보았습니다. 2023.12.13 - [프로그래밍/C | C++] - IOCP 기반 다중 접속 및 데이터 처리-1 IOCP 기반 다중 접속 및 데이터 처리-1 윈도 환경에서 다중 클라이언트의 접속을 처리하는 네트워크 서버를 구현하기 위해서는 IOCP 사용이 필수라고 생각합니다. 에코 서버를 IOCP 기반으로 구현한 예제는 많지만 실제 현업에서 다중 blog.noyecube.com 2023.12.14 - [프로그래밍/C | C++] - IOCP 기반 다중 접속 및 데이터 처리-2 1. 리슨소켓 Accept 이벤트 감지 WSAEVENT hWSAEvent = W..
노트북에 리눅스를 설치하고 oracle database를 설치하고 전원을 켜뒀는데 다음날 확인하니 절전모드에 빠진 상태로 원격 접속이 안됩니다. 이번 포스팅에서는 리눅스 절전 모드 방지 설정을 알아보겠습니다. 1. 노트북 덮개 동작 무시 노트북을 서버로 사용하기 위해서는 24시간 전원을 켜두어야 하는데 설치 후 기본 상태로 두거나 덮개를 만지면 절전 모드로 진입하게 됩니다. 아래와 같이 설정 파일을 수정 후 데몬을 재기동합니다. # logind.conf 파일을 오픈 vi /etc/systemd/logind.conf # 아래 두 옵션의 주석을 해제하고 아래와 같이 ignore 설정 HandleLidSwitch=ignore HandleLidSwitchDocked=ignore #파일 저장 후 데몬 재시작 sy..
이전 포스팅에서 IOCP 서버 스켈레톤 코드를 작성해 보았습니다. 이번 포스팅에서는 IOCP 서버를 위한 스레드풀 초기화 코드를 살펴보겠습니다. 1. IOCP 서버 실행 결과 실행결과 먼저 살펴보겠습니다. 실행환경은 8 코어 16 스레드 CPU입니다. IOCP Worker Thread 16개, IOCP RIL Thread 16개씩 생성하였고 동시실행 가능 스레드 수는 각 8개씩 설정하였습니다. 스레드는 실행중 I/O 나 기타 사유로 Pending 상태에 빠질 수 있기 때문에 동시 실행 가능한 숫자보다 많은 수의 스레드를 생성하여 스레드풀에 등록해 둡니다. 2. 초기화 코드 호출 구조 및 예제 코드 RilInit 함수에서 서버를 초기화합니다. 작업 스레드풀을 생성하고 작업 스레드들을 대기시킵니다. 송신 스..