본문 바로가기

전체 글75

멀티쓰레드(Multi-Thread) 게임 서버에서 가장 중요한 것 안정성 성능 성능을 높이려면? 프로그램 최적화 멀티코어 활용 멀티코어를 활용하려면 멀티쓰레드 프로그래밍이 필요 온라인 게임을 만들려면? 소켓 프로그래밍 필요 다중 접속 서버를 만들려면? 서버에서 동접과 같은 수의 소켓을 관리하여야 한다 효율적인 다중 접속 관리는? IOCP가 필수 -> IOCP는 멀티쓰레드 프로그래밍을 요구한다. 프로세스와 쓰레드 프로세스 : 실행 중인 프로그램 쓰레드 : 프로그램(프로세스) 실행의 흐름 -> 프로세스 실행 중 프로그램이 쓰레드 생성 명령 실행 프로세스는 실행 중인 프로그램을 프로세스라고 한다. 스레드는 프로세스의 안에 있는 것이다. 멀티스레드 프로그래밍을 하지 않아도 스레드 1개는 있다(메인부터 해서 끝날때까지의 흐름). 병렬처리 하나의 작.. 2022. 2. 24.
비동기적(asynchronous) 실행과 동기적(synchronous) 실행의 차이 동기적 실행 ( syschronous execution ) 서브루틴 간에 명확한 실행 순서 존재 A,B,C의 세 가지 서브루틴이 존재하고 A,B,C 순으로 실행되기를 기대한다면 반드시 A->B->C 순서로 실행되어야 한다. 즉, B는 A가 실행 완료되기를 기다리고, C는 A와 B가 실행 완료되기를 기다린다. 동기적 실행은 프로그래밍을 처음 배울 때부터 익숙한 개념이다. 일반적으로 코드는 1번째 줄 -> 2번째 줄 ... 식으로 line by line으로 실행되며, 이 순서가 뒤바뀌지 않는다. 비동기적 실행 ( asynchronous execution ) 서브루틴 간에 명확한 실행 순서 존재 X A->B->C의 순서로 실행될 수도 있고, B->C->A의 순서로 실행될 수도 있다. 이런 경우 서브루틴이 완료.. 2022. 2. 24.
관계형 데이터베이스 1:1, 1:N, M:N 관계 1 : 1 관계 (일대일 관계)어느 엔티티 쪽에서 상대 엔티티와 단 하나의 관계를 가지는 것 예를 들어 우리나라는 일부일처제로 한 남자는 한 여자와, 한 여자는 한 남자와 밖에 결혼을 할 수 없다.남편 또는 부인을 2명 이상 둘 수 없는데, 이러한 관계가 1 : 1관계다. 1 : N 관계 (일대다 관계)한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것 현실에서는 1:N 관계가 많은데, 실제 DB를 설계할 때 자주 쓰이는 방식이다.1:N 관계는 M:N처럼 새로운 테이블을 만들지 않는다.예를 들어 부모와 자식 관계를 생각해보면, 부모는 자식을 1명, 2명, 3명 , 그 이상도 가질 수 있다. 이를 부모가자식을 소유한다고( has a 관계 ) 표현한다. 반대로 자식 입장에서는 부모를 하나.. 2022. 2. 24.
SQL INNER JOIN과 OUTER JOIN JOIN여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들어서 결과를보여주는 것2개의 테이블을 조합하여 하나의 열로 표현한다. 예시)EMP 테이블 DEPT 테이블EMPNOENAMEJOBDEPTNO DEPTNODNAMELOC7839KINGPRESIDENT9010ACCOUNTN_YORK7566JONESMANAGER2020RESEARCHDALLAS7788SCOTTANALYST1030SALESCHICAGE7654MARTINSALESMAN3040OPERATEBOSTON7900JAMESCLERK       JOIN 종류1. INNER JOIN조건에 해당하는 값만 출력서로 연관된 내용만 검색하는 조인 방법명시적 조인 표현암시적 조인 표현SELECT a.empno, a.ename.. 2022. 2. 24.
객체지향과 절차지향 절차지향(Procedural Programming)이란? 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어에는 C언어가 있다. 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다. 옛날에는 하드웨어와 소프트웨어의 개발 속도차이가 크지 않았다. 하지만 하드웨어의 빠른 발전을 통해 컴퓨팅 환경은 급속도로 증가했지만 소프트웨어 개발 시간이 따라가지 못하게 되고 이런 상황에 소프트웨어의 개발시간을 단축하되 하드웨어에 기본적인 사양을 잡아먹어도 더 이상 큰 단점이 아니기에 모듈화, 캡슐화해서 개념적으로 접근하는 형태를 갖는 객체지향 프로그래밍이.. 2022. 2. 23.
백준 11726번 ( 2 x N 타일링 ) https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.www.acmicpc.netDP를 이용해 풀어야 하는 문제이다.DP를 사용하기 위한 조건   1. 큰 문제를 작은 문제로 나눌 수 있다.   2. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다.위 조건에 부합하기 때문에 DP를 사용한다.DP는 규칙을 찾아서 점화식을 세우는 것이 가장 중요하기 때문에 우선 규칙을 생각한다.n-1, n-2 까지는 채워진 경우의 수가 구해진 상태라고 가정하자. 그 후 맨 뒤에 길이를 추가하면 될 수 있.. 2022. 2. 21.