최신 글
-
[3] 소켓 프로그래밍
게임 서버 프로그래밍 시 주의사항 - 게임 서버는 TCP를 이용할 경우 클라이언트의 개수만큼 소켓이 있어야 함 - 파일 핸들을 하는 동안 스레드가 대기하는 일이 없어야 함 소켓에 대한 입출력 방식 - 동기 입출력 방식 : 블로킹 소켓(blocking socket) - 비동기 입출력 방식 : 논블로킹 소켓(non-blocking socket), Overlapped I/O, epoll, I/O Completion Port(IOCP) 블로킹 소켓(blocking socket) 1) 블로킹(blocking)이란? - 디바이스에서 처리 요청(받은 데이터를 디바이스에 기록 혹은 호출)을 걸어 놓고 응답을 대기하는 함수 호출 시, 스레드에서 발생하는 대기 현상 - 해당 상태에서는 CPU 사용량이 0%이므로 스레드는 ..
더보기
-
[2] 컴퓨터 네트워크
클라이언트 : 서비스를 이용하는 사용자들의 단말기 서버 : 서비스를 제공하는 무인 컴퓨터 네트워크 스위치 - PC간 랜선으로 연결하여 LAN(Local Area Network)를 형성 OSI 7계층 1. 물리 계층 : 하드웨어를 다루며 데이터의 파형을 결정 2. 데이터 링크 계층 - 프레임(frame)이라는 단위로 통신 - LAN 통신이 가능하게 함 - LAN간 데이터를 전송하지만 반드시 전송되지는 않음 3. 네트워크 계층 - WAN(Wide Area Network)이 가능하게 함 - 즉, LAN 간의 통신이 가능하게 하기 위해 네트워크 스위치간의 데이터가 전송되어야 함 - 이 때, 스위치에 데이터를 한 번에 전달하지 못할 경우, 이를 전달하기 위해서는 라우터(router)를 통함 - IP(Interne..
더보기
-
[1]스레드와 멀티 스레드
개인적으로 취업을 준비하면서 공부한 내용을 정리하는 목적입니다. 틀린 부분은 말씀 주세요. 프로그램(program) = 데이터(data) + 코드(code) 프로세스(process) = 컴퓨터 내에서 실행중인 프로그램의 상태 스레드(thread) = 프로세스 내에서 명령어를 한 줄씩 처리하는 기본 단위 process vs thread - 스레드는 한 프로세스 안에 여러 개가 있음 - 한 프로세스 안에 있는 스레드들은 같은 메모리 공간을 사용할 수 있음 - 스레드마다 스택을 가짐(각 스레드에서 실행되는 함수의 로컬 변수들이 스레드마다 있음) 로딩 = 프로그램 내에 있는 코드와 데이터를 프로세스 메모리로 불러들임 호출 스택(call stack) - 함수 호출(function call)을 추적할 때 사용, 함..
더보기
-
[Openflow/SDN]Java로 SDN을 위한 Openflow Controller 를 만들기 위해 공부하면 좋은 사전 지식들
이번 포스트는 개인적인 공부를 위해 수시로 업데이트할까 생각중입니다. SDN을 Java에서 구축함으로써 조금 더 좋은 인터페이스로 시뮬레이션을 하기 위함인데, Openflow가 어떻게 동작하는지, 그리고 스위치와 컨트롤러 사이에는 어떠한 프로세스들이 진행되는지를 알고 싶어 검색하던 도중 발견한 귀한 사이트들을 적어두겠습니다. 1) Openflow에 대한 전반적인 지식을 알고 싶은 경우 www.jidum.com/jidums/view.do?jidumId=1076 지식덤프 1. OpenFlow의 개념 - 네트워크 장치의 Control Plane과 Data Plane 간의 인터페이스 위한 표준 통신 프로토콜 - 패킷을 제어하는 기능과 전달하는 기능을 분리하고 프로그래밍을 통해 네트워크를 제어하 www.jidum..
더보기
-
[Linux/Virtual Box Oracle/Ubuntu기초] Virtual Box 가상 머신에 Ubuntu를 설치하기
이번에는 Linux 사용을 위해 Virtual Box라는 가상 머신에 Ubuntu를 설치하는 과정에 대하여 설명드리겠습니다. 1) Virtual Box 다운로드 하기 www.virtualbox.org/ Oracle VM VirtualBox Welcome to VirtualBox.org! News Flash Important November 16th, 2020We're hiring! Looking for a new challenge? We're hiring a VirtualBox senior developer in 3D area (Europe/Russia/India). Important October 27th, 2020We're hiring! Looking for a new challenge www.vir..
더보기
-
[파이썬/Python/인공지능/웹크롤링] Anaconda를 이용해 Jupyter Notebook을 실행해보기
"요즘 가장 많이 쓰는 프로그래묑 언어가 무엇인가?" 라는 질문을 받으면 보통 C언어를 떠올립니다. 저 역시 가장 많이 사용하는 언어는 Java나 C, C++일 것이라 예상했었습니다. 하지만 최근 인공지능이 떠오르면서 사용량이 급증하게 된 프로그래밍 언어가 있습니다. 바로 Python입니다. Google에서는 Tensorflow라는 인공지능 라이브러리를 무료로 배포하는데 이 Tensorflow를 포함한 인공지능 라이브러리들 인해 Python이 떠오른 가장 큰 요인이지 않을까 싶습니다. 저도 Java 위주로 언어를 공부하였고, 부가적으로 C언어를 공부하였지만 Python을 사용하면서 느낀 점은, "깔끔하고 굉장히 쉽다" 였습니다. Java는 기본적으로 코드가 매우 길고 초반 진입 장벽이 높은편(처음 Jav..
더보기