일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Two Points
- DP
- 스토어드 프로시저
- SQL
- 이진탐색
- Stored Procedure
- two pointer
- 다익스트라
- Brute Force
- Hash
- Trie
- Dijkstra
- MYSQL
- String
- binary search
- union find
- 그래프
- Today
- Total
목록분류 전체보기 (418)
codingfarm
https://www.3dgep.com/learning-directx-12-1/
https://gall.dcinside.com/mgallery/board/view/?id=teamfightmanager&no=2567
문제를 풀려고 자바를 썼는데 ProblemFactory를 얻었다. -철지난 JAVA 유머- 여기서는 두 개의 GOF 패턴, factory method와 abstract factory를 동시에 알아본다. 두 패턴은 서로 긴밀한 연관이 있다. 3.1 시나리오 2차원 직교좌표계의 좌표점 정보를 저장하려 할 경우, 아래와 같은 구현이 쉽게 떠올르것이다. 1 2 3 4 5 class Point{ public: float x, y; Point(const float x, const float y) : x{x}, y{y} {} }; Colored by Color Scripter cs 그렇다면 극 좌표계로 좌푯값을 저장해야 할 경우 어떻게 하면 될까? 아래처럼 극 좌표계용 생성자를 추가하면 어떨까?. 1 2 3 4 Po..
일반적으로 (A+B)*(C+D) 와 같은 연산 표기법을 중위표기법 이라 한다. 이런 표기법은 사람은 읽기 쉽지만 컴퓨터는 해석이 난감하다는 단점을 가지고 있다. 컴퓨터가 해석하기에 최적인 표기법으로 후위표기법이 있다. 중위표기법을 후위표기법으로 바꾸는 알고리즘은 아래와 같다. 1. 피연산자가 나오면 출력한다. 2. 연산자가 나올경우... 스택 최상단 연산자의 우선순위가 현재 연산자의 우선순위보다 낮아질때까지 혹은 스택이 빌때 까지 pop 하면서 출력, 이후에 현재 연산자를 push 3.여는괄호일 경우 스택에 push 4. 닫는괄호일 경우 스택내에 첫번째 여는 괄호가 나올때 까지 stack을 pop 하면서 출력(괄호는 출력X) 위 알고리즘을 적용한 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10..
1. 기본적인 파일 처리 함수들 Windows의 파일 입$\cdot$출력 함수는 ANI에서 정의하는것보다 방대한 내용을 담고 있다. 이 포스팅에서 모든 내용을 담는것은 불가능하다. 보다 자세한 내용은 MSDN을 참조할것 CreateFile 1 2 3 4 5 6 7 8 9 HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ); Colored by Color Scripter cs 인자 기능 LPCTS..
학습 목표 IPC 기법에 대해 이해한다. 커널 오브젝트의 두가지 상태(signaled & Non-Signaled)와 핸들 테이블에 대해 이해한다. 1. 프로세스간 통신(IPC; Inter Process Communication) 프로세스는 각각 독립된 메모리 공간을 소유하므로 IPC가 어렵다. 프로세스는 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하다. 그러므로 IPC를 위한 별도의 통신수단이 필요하다 2. 메일슬롯 방식의 IPC 메일 슬롯(Mail Slot)의 원리 대표적인 IPC 기법중 하나 프로세스 간에 데이터를 주고 받기 위해 접선 장소를 마련한다. 단방향 통신만 가능 mailslot의 생성과 연결은 CreateMailSlot과 CreateFile 함수를 통해 이루어지며 데이터 수신 및 송..
https://thrillfighter.tistory.com/531
windows는 winsock이라는 독자적인 소켓 프로그래밍 환경을 제공한다. 이 winsock에 대해 알아보겠다. winsock을 이용한 소켓 프로그래밍 winsock Windows Socket API의 줄임말 Windows 에서의 TCP/IP 기반의 소켓 프로그래밍을 지원하기 위한 소켓 함수들의 모음 BSD 소켓 기반 프로그래밍 방법, 함수, 구조체의 사용법 등이 linux와 크게 차이 없다. winsock.dll 파일을 로드해야 사용 가능 WSAStartup 함수를 호출하여 로드 WSAStartup : 소켓 프로그래밍에 필요한 dll을 로드 docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsastartup WSAStartup의 사용..
이제 리눅스 환경에서의 소켓 클라이언트 프로그램을 작성해본다 클라이언트가 보낸 문자열을 서버에서 받아, 고스란히 되돌려주는 에코 프로그램을 작성해보자 포트번호는 3500으로 할것이다. 컴퓨터가 두대라면 효율적인 실습 가능하겠지만, 사정상 한대의 컴퓨터만 준비 가능하다면 루프백 주소인 '127.0.0.1'로 테스트 해본다. 여기서는 2개의 가상 OS를 이용하여 각각 client와 server의 역할을 수행하도록 한다. 좌측이 client로 쓸 OS, 우측이 server로 쓸 OS로 각각의 IP가 192.168.175.131 192.168.175.132 인것을 확인했다. 클라이언트 프로그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ..
더이상 사용하지 않는 소켓은 close 함수로 종료시킨다. 그러지 않으면 소켓은 시스템 자원을 계속 점유하게된다. 1 2 #include int close(int sockfd); cs 매개인자로 종료할 소켓의 식별 번호를 넘긴다
클라이언트가 Connect 함수로 서버에 연결을 요청하면 이 요청은 서버의 수신 대기열에 들어간다. 서버에서 accept 함수로 연결을 가져오면 서버와 클라이언트가 연결되어 통신할 수 있는 상태가 된다. 데이터 통신은 읽기 함수와 쓰기 함수가 쓰인다. 다만, 단순한 읽기/쓰기 일지라도 크게 2가지 함수로 나뉜다. 저수준 입출력 함수 : OS에서 제공하는 기본적인 함수 소켓 입출력 함수 : 소켓에서 제공하는 함수 이 포스트에서는 OS에서 제공하는 저수준 입출력 함수에 대해서 알아볼것이다. 소켓에서 제공하는 입출력 함수는 12장에서 다룰것이다. 리눅스에서의 데이터 입출력 윈도우즈에서의 입출력은 여기를 참고할것 리눅스에서는 소켓을 포함한 모든것을 파일로 다룬다. 파일에 읽고 쓰기 위해 read와 write 라..
www.tcpschool.com/c/c_refer_endian forum.falinux.com/zbxe/index.php?document_srl=431494&mid=C_LIB 바이트 정렬(Byte Order) 컴퓨터에서 연속된 데이터를 byte단위로 순서대로 저장하는것 byte가 저장되는 순서에 따라 little endianess와 big endianess로 나뉨 빅 앤디언(Big Endianess) 낮은 주소에 데이터의 높은 바이트(MSB, Most Significant Bit)부터 저장하는 방식 평소 숫자를 사용하는 선형 방식과 같은 방식입니다. 메모리에 저장된 순서 그대로 읽을 수 있으며, 이해하기가 쉽다 SPARC을 포함한 대부분의 RISC CPU 계열에서는 이 방식으로 데이터를 저장 TCP/IP..
학습 목표 connect 함수의 사용법을 숙지한다 클라이언트는 connect 함수를 이용해서 연결 요청을 한다. 연결 소켓을 반환하는 accept 함수와는 달리, connect 함수는 연결 성공 여부만 반환한다 server : 듣기 소켓과 연결 소켓이 분리 client : 구분 없음, socket 함수로 생성된 소켓 하나로 연결 및 통신을 모두 관리한다. connect 함수의 원형 1 int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); cs 매개변수 sockfd : socket 함수로 생성된 소켓 지정 번호 serv_addr : 연결할 서버의 ip 주소와 포트 등의 정보를 담아온다 addrlen : server_add..
수신 대기열의 가장 앞에 있는 연결 요청을 가져온다. 연결 요청을 성공적으로 가져오면 클라이언트와의 통신을 위한 연결 소켓을 생성한다. accept 함수의 원형은 아래와 같다 1 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); cs 매개변수 sockfd : socket 함수 호출시 반환된 소켓 식별 번호 addr : accept 함수 성공시, 연결된 client의 주소와 포트 정보가 담기는 구조체 addrlen : sockaddr 구조체의 크기 반환값 0 이상 : 성공, 소켓 지정 번호 -1 : 실패 함수자체의 컨셉은 bind 함수와 유사하다. 반환값은 socket 함수로 만든 듣기 소켓과는 전혀 다른 별개의 소켓이다. 듣기 소켓 :..
학습 목표 listen 함수의 사용법에 대해 배운다 클라이언트 요청에 대한 처리가 끝나기 전에 새로운 클라이언트가 요청하는 상황이 온다면, 해당 요청을 잠시동안 대기시키기 위한 대기열을 만들 필요가 있다. 이 대기열을 생성하기 위해 listen 함수가 쓰인다 수신대기열은 queue와 같은 FIFO 형태의 자료구조이다. 파란색과 초로색의 클라이언트가 서버측에 연결을 요청하면, 이 요청은 대기열에 들어가게 되며 먼저 요청이 들어간 파란색이 먼저 출력됨을 볼 수 있다. listen 함수의 원형은 아래와 같다. 1 int listen(int sockfd, int backlog); cs 매개변수 sockfd : socket 함수로 만들어진 소켓 지정 번호 backlog : 수신대기열의 크기 반환값 0 : 성공 -..
학습 목표 bind 함수로 소켓을 설정하는 방법을 배운다 socket 함수로 특정 도메인과 타입, 프로토콜에 맞는 소켓을 생성하고 나면, bind 함수로 소켓에 IP와 포트를 할당한다. server : bind 함수를 통해 소켓에 IP와 포트를 할당함 client : 연결할 인터넷 서비스(server)의 포트만 알면 됨 (자신의 포트는 몰라도 됨) bind 함수의 원형 int bind( SOCKET sockfd, const sockaddr *my_addr, int namelen ); cs 함수의 매개변수 sockfd : 앞서 socket 함수로 생성된 endpoint 소켓의 식별 번호 my_addr : IP 주소와 port 번호를 저장하기 위한 변수가 있는 구조체 namelen : 두 번째 인자의 데이터..
학습 목표 socket 함수를 이용하여 소켓을 생성하는 방법을 터득 앞서 일반적으로 소켓통신에서는 버클리 소켓을 사용한다고 앞서 설명했다. 하지만 이 버클리 소켓은 windows와 linux OS에서 각기 다른 헤더파일에 존재한다. windows : winsock2.h linux : sys/socket.h docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket int socket(int domain, int type, int protocol); cs endpoint 소켓 socket 함수에 의해 생성되는 종점 소켓 서버와 클라이언트의 연결을 받기 위함 2가지 용도로 쓰임 client : 연결 요청 server : (client의 요청..
학습 목표 네트워크 프로그래밍을 위한 가장 기초적인 개발도구인 소켓을 공부 네트워크와 네트워크 프로그램 개발에 대한 직감 터득 소켓을 활용한 네트워크 프로그래밍 과정 숙지 소켓 네트워크 프로그래밍을 위한 함수 모음(라이브러리) 네트워크 프로그래밍 과정 socket 함수 : 소켓을 생성 bind 함수 : 소켓의 특성을 정의 listen 함수 : 수신 대기열 형성 시스템간에 연결한다 connect 함수 : 클라이언트 : 연결 시도 accept 함수 : 서버 : 연결 수락 read함수, write함수 : 데이터 통신 close 함수 : 소켓 폐쇄 빨간색 : client만 수행 파란색 : server만 수행 수신대기열은 없어도 된다. 하지만 수신대기열이 있음으로써 통신을 요청한 클라이언트가 얼마간 기다린후에 자..
일반적으로 프로젝트를 빌드하면 그때 나오는 결과물들은 $\$$(SolutionDir)$\$$(Platform)\$\$$(Configuration)\ 위 경로에 저장된다. 하지만 출력 디렉토리를 조절하면 빌드의 결과물들을 개발자들이 원하는 디렉토리에 저장되게끔 할 수 있다. 빌드 결과물들이 저장될 디렉토리를 구성속성 $\rightarrow$ 일반 $\rightarrow$ 출력 디렉토리에 설정하면 된다.
ko.wikipedia.org/wiki/C%2B%2B_%ED%91%9C%EC%A4%80_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC 정의 소프트웨어 개발 시 사용되는 프로그램의 구성요소 공통으로 사용될 수 있는 특정한 기능(들)을 모듈화한 것 대상 환경(플랫폼)에서 바로 실행될 수 있는 형태로 제공됨 $\therefore$ 라이브러리는 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다. 정적라이브러리 만들기 docs.microsoft.com/ko-kr/cpp/build/walkthrough-creating-and-using-a-static-librar..