프로그래밍 용어 8

멀티스레딩 Multi-Threading

멀티스레딩은 하나의 프로세스에서 여러개의 작업 단위(Thread)를 동시에 실행하는 기술 Thread스레드는 프로그램(프로세스) 내에서 실행되는 작업 단위를 의미 - 하나의 프로세스는 기본적으로 하나의 메인 스레드를 가짐 - 멀티 스레딩을 사용하면 여러 개의 스레드를 생성해 병렬 작업을 처리할 수 있음 멀티 스레딩이 필요한 이유 1. 작업속도 향상 : 여러 작업을 동시에 실행해 성능을 향상시킬 수 있음   - 물리연산, AI, UI업데이트를 각 다른 스레드에서 처리해 더 부드러운 동작을 진행  2.CPU 사용률 최적화 : 현대 CPU는 여러 코어를 가지고 있으며 멀티 스레딩을 활용하면   이 여러개의 코어를 활용하므로 성능을 극대화 할 수 있음  멀티 스레딩의 주의점 1. Race Condition   ..

마이그레이션이란? Migration

Migration데이터, 시스템같은 애플리케이션을 한 환경에서 다른 환경으로 이동하는 과정이러한 과정은 보통 새로운 플랫폼, 데이터베이스, 서버 를 옮길 때 발생하며 다양한 종류의 마이그레이션이 존재한다. 1. 데이터 마이그레이션데이터를 A 데이터 베이스에서 B 데이터 베이스로 이전하는 것을 의미한다.MySQL 데이터베이스에서 PostgreSQL 로 변경할 때 데이터를 옮기는 과정 2. 애플리케이션 마이그레이션애플리케이션이 동작하는 운영체제나, 플랫폼에서 다른 환경으로 이전하는 것을 뜻한다.윈도우 에서 리눅스로 옮기는 것 3. 서버 마이그레이션기존 서버 환경에서 새로운 서버 환경으로 시스템을 이전하는 것 마이그레이션의 고려사항데이터 무결성 - 데이터가 손실, 변형이 없게한다.호환성 - 새로운 환경에서도 ..

TCP 와 UDP

TCP와 UDP 는 OSI 4계층(전송 계층) 에서 데이터를 전달하는 두 가지 주요 프로토콜이다. TCP Transmission Control ProtocolTCP는 신뢰성 있는 데이터 전송을 보장하는 프로토콜이다.데이터를 보내는 쪽과 받는 쪽 서로 연결을 하고, 데이터가 정확히 도착했는지 확인하며,오류가 발생될 경우 재전송을 통해 이러한 문제를 해결한다. TCP 의 주요 특징은 3-Way Handshake의 통신 방식이다.3-Way Handshake 는 3번의 교류과정을 거친다고 생각하면 된다.1. 송신자가 수신자에게 연결되어 있는지 확인요청2. 수신자는 1의 요청을 확인하고 연결되어 있음을 송신자에게 다시알림3. 송신자는 수신자의 응답을 확인하고 데이터를 전달한다. TCP 장점데이터 전달 과정이 체계..

네트워크와 OSI 7 계층

네트워크란?두 대 이상의 컴퓨터가 데이터를 주고받기 위해 연결된 시스템을 말합니다.네트워크의 목적은 정보를 공유하고 자원을 효과적으로 사용하는것이 목적이며,다양한 프로토콜을 통해 데이터가 안전하고 정확하게 전송될 수 있게 구성된다. OSI(Open Systems Interconnection) 7OSI 7 계층 모델은 네트워크 통신을 7개의 계층으로 나누어 설명하는 모델이다.각 계층은 특정 역할을 담당하는 것이 목적이며, 상호 독립적이면서도다른 계층과 상호작용한 이후 데이터를 전송하게 된다.  1. 물리 계층가장 아래의 계층으로 전기 신호, 무선 신호 등을 물리적 형태로 전송되는 것을 담당한다.컴퓨터가 데이터를 구성하는 0 과 1의 뭉쳐진 형태를 떠올리면 된다. 2. 데이터 링크 계층데이터의 물리적 전송에..

객체지향(OOP) 4대 특징

이러한 이론이 왜 필요할까?결론만 말하면 객체라는 개념을 다뤄 좋은 코드를 작성할 수 있는 특징들이다. 이러한 원칙들은 코드의 재사용성을 높이고, 유지보수, 확장, 유연성에 큰 도움을 줄 수 있다. 객체지향의 4대원칙은 캡슐화, 상속, 다형성, 추상화 라는 습성이 있다.  캡슐화 캡슐 알약을 뜯어보면 내부에는 a라는 약재, b라는 약재와 같이 많은 약재들이 들어있을 것이다.또한 이러한 여러종류의 약재를 한 공간에 묶어 캡슐이라는 껍데기로 감싸주게 된다. 객체지향의 캡슐화 또한 이 특징과 같다.데이터(속성)과 행위(메서드)를 하나의 단위로 묶어 줄 수 있으며내부에서는 어떻게 동작하는지 보이지 않고, 외부에는 이를 접근해 사용만 가능하게 하는 인터페이스를 제공한다. 외부에 보이지 않게 한다는 것은 코드의 보..

객체지향(OOP) - 객체란?

객체지향 Obejct Oriented Programming단어의 뜻을 보면 뭔가 오브젝트를 기반으로 프로그램을 작성하다 라는 의미같다. 이는 컴퓨터 프로그래밍의 패러다음의 하나로 객체라는 개념을 반영하여 설계되고 구현하는것을 의미한다. 그렇다면 객체라는게 뭘까 객체는 데이터(속성) 과 그 데이터를 조작하는 행위(메서드)를 하나로 묶은 개념을 의미한다.그렇다면 객체지향의 의미는 이러한 객체들을 다뤄 프로그램을 작성하는것을 의미하게 된다. 객체는 위 설명처럼 속성과 행동을 포함하는 프로그램의 하나의 단위가 된다.속성은 객체의 상태를 나타내고, 행동은 객체가 할 수 있는 작업을 의미한다. string name1 = "김씨";int age1 = 20;Console.WriteLine($"{age1}살 {name1..

스트림이란? Stream

알고리즘 문제해결을 하면서 시간초과를 겪고 해결방법을 찾던중 알게되었다. Console.ReadLine() , Console.WriteLine() 으로는 해결할수 없었고 좀더 효율적이며 빠른 입출력 방식을 찾아봐야했다. 그와중에 찾게된 StreamReader 와 StreamWriter 를 알게되었고 Reader 와 Writer 는 어떠한 역할을 하는지 대충 감이 오긴한다. Stream 은 요즘 많이 보이는 스트리밍 , 인터넷 방송의 송출과 관련된 용어라고 생각해왔다. Stream 정확히 어떤 뜻을 의미하는지, 프로그래밍의 스트림 이란게 뭘까 해서 찾아보게 되었다. 뭔가 줄줄이 이어지는 듯한 의미로 연속성의 의미를 갖는것같다. 데이터의 관점으로는 " 데이터를 추상화하여 연속적으로 처리할수 있게 하는 메커니..