IT강의 97

메모리의 구조와 저장되는 내용

이번 시간에는 메모리의 구조와 각 영역에 저장되는 내용을 살펴보겠습니다. 요약한 내용은 위의 사진과 같습니다. 메모리는 아래와 같이 4가지 영역으로 나누어져 있습니다. Code: 상수, 명령문(코드)을 저장 Data: 전역 변수, 정적 변수를 저장 Heap: 동적 배열(동적 메모리)을 저장 Stack: 지역 변수, 매개 변수, 정적 배열을 저장 그리고 메모리는 아래와 같이 2가지로 나누어집니다. 정적 메모리(static memory): 프로그램이 실행 되자마자 만들어집니다. 동적 메모리(dynamic memory): 프로그램 실행 후 명령문이 실행될 때 만들어집니다. C++ 소스 코드로 살펴보겠습니다. #include using namespace std; int a = 1; // 전역 변수, 실행 되자마..

내 IP 주소 확인 방법

이번 시간에는 본인의 IP 주소를 조회하는 법을 살펴보겠습니다. 먼저 IP 주소는 사설 IP 주소와 공인 IP 주소로 나누어집니다. (1) 윈도우 명령 프롬프트(cmd)를 열고 ipconfig 라고 입력합니다. 보통은 Wi-Fi 부분에서 'IPv4 주소'에 본인의 로컬 IP 주소가 나와있습니다. 만약 유선랜이면 유선랜 부분을 봐야 합니다. (2) 맥OS, 리눅스, 유닉스, 라즈비안 터미널(Terminal)를 열고 ifconfig 라고 입력합니다. 보통은 'en0' 부분에서 'inet'에 본인의 로컬 IP 주소가 나와있습니다. en0 부분에 inet이 없다면 en1 이나 en2 등 다른 부분을 보셔야 할 것 같습니다.

프로세스와 스레드의 차이

이번 시간에는 프로세스와 스레드를 차이를 살펴보겠습니다. 먼저 요약하면 아래의 사진과 같습니다. 먼저 운영 체제(Operating System)란 시스템 하드웨어를 관리하는 것은 물론 응용 소프트웨어를 실행하기 위해 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어를 의미합니다. 운영 체제 내에서 여러 개의 프로세스가 실행될 수 있습니다. 따라서, 프로세스 (Process) - 컴퓨터에서 실행되고 있는 프로그램을 의미합니다. - 프로세스마다 메모리 영역을 보유하고 있고 메모리 영역은 Code, Data, Heap, Stack으로 구성되어 있습니다. - 하나의 프로세스는 여러 개의 스레드를 보유할 수 있습니다. 스레드 (Thread) - 프로세스 내에서 실행되는 흐름의 단위를 의미합..

GitHub에 새로운 프로젝트 업로드 방법

이번 시간에는 GitHub에 내가 한 프로젝트를 업로드 하는 방법을 살펴보겠습니다. 우선 git을 설치해야 합니다. 터미널에 아래의 명령문들을 그대로 복사+붙여넣기 해서 username과 email을 설정합니다. 이 때 회원가입 한 계정의 username과 email을 넣어주어야 합니다. git config --global user.name "(your username)" git config --global user.email "(your email)" https://github.com/ 잠시 터미널을 닫고 위의 링크(GitHub 사이트)로 들어갑니다. Sign-up 버튼을 눌러서 회원가입 한 다음 Sign-in 버튼을 누르고 로그인합니다. 이 과정은 생략하겠습니다. 로그인을 하면 왼쪽 상단에 New 버..

IT강의/(Others) 2021.07.21

객체지향 프로그래밍 언어의 특징

이번 시간에는 객체지향 프로그래밍 언어의 특징을 살펴보겠습니다. 객체지향 프로그래밍 언어는 아래와 같이 4가지 특징이 있습니다. (1) Data Abstraction (데이터 추상화) - "목록 형태로 정리" - 복잡한 프로그램에서 핵심적인 기능을 간추려 내는 것을 의미합니다. - 가장 대표적인 예시로 구조체와 클래스가 있습니다. 구조체와 클래스에서는 변수와 함수를 정리된 형태로 선언할 수 있습니다. (2) Information Hiding (정보 은닉) - "세세한 건 보여줄 필요 없지" - 구현한 내용 일부를 외부에서 보이지 않게 감추는 것을 의미합니다. - 가장 대표적인 예시로 클래스 내에서의 private 선언이 있습니다. private으로 선언된 변수와 함수는 클래스 내부에서만 접근할 수 있고 ..

웹 해킹 기초

이번 시간에는 웹 해킹의 기초를 살펴보겠습니다. 먼저 예시로 사용할 프로그램을 소개해드리겠습니다. 이 프로그램은 send 버튼을 누르면 입력한 내용이 그대로 보여지는 웹사이트 입니다. (JSP-Servlet 기반) 밑으로 내려가면 다운로드 할 수 있으니 직접 실행시키고 싶다면 다운받아서 실행시키면 됩니다. 위의 사진에서 표시한 것과 같이 같이 내용을 입력하고 send 버튼을 클릭하겠습니다. 예전에 입력한 내용이 그대로 나타나는 것을 볼 수 있습니다. 웹페이지의 소스 코드를 조회해보겠습니다. 예전에 입력한 내용이 body 태그 안에 담긴 것을 볼 수 있습니다. 그렇다면 이 웹사이트에 해킹을 시도해보겠습니다. 위의 내용은 경고창(alert)을 띄우는 JavaScript 명령문 입니다. 이렇게 입력하고 sen..

DFS와 BFS의 차이

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 DFS와 BFS의 원리를 살펴보고 비교해보겠습니다. 위의 그래프를 가지고 설명하겠습니다. DFS (깊이 우선 탐색, Depth First Search) - "막힐 때까지 나아간다" 라고 이해하시면 됩니다. - 막힐 때까지 계속 접근하다가 막히면(접근할 노드가 더 이상 없으면) 한 발짝만 되돌아간 후 접근하지 않은 노드로 접근합니다. BFS (너비 우선 탐색, Breadth First Search) - "주위를 둘러본다" 라고 이해하시면 됩니다. - 주위를 둘러보다가 더 이상 없으면 한..

회선 교환과 패킷 교환의 차이

이번 시간에는 회선 교환(Circuit Switching) 방식과 패킷 교환(Packet Switching) 방식를 서로 비교해보겠습니다. ** 설명이 부족한 것 같아 보충 설명을 추가하는 중입니다. 제대로 정리해서 집어넣겠습니다. 회선 교환 (Circuit Switching) - 데이터를 전송하는 경로가 절대 바뀌지 않습니다. - 다른 요인에 의해 통신이 방해 받지 않습니다. - 데이터를 전송하려는 노드(Node)에 부하가 크거나 경로가 하나라도 고장나면 네트워크 전체가 마비됩니다. - 데이터를 나누지 않고 그대로 전송하므로 회선 효율성이 낮습니다. 패킷 교환 (Packet Switching) - 상황에 따라 데이터를 전송하는 경로가 바뀝니다. 다시 말해 경로 하나가 고장나도 다른 경로로 전송하면 되기..

TCP와 UDP의 차이

이번 시간에는 TCP와 UDP를 서로 비교해보겠습니다. TCP (Transmission Control Protocol) - 예시: 텍스트(카카오톡 메시지, 웹페이지 내용 등) 전송 - 데이터 전송 시 변질될 확률이 매우 적으므로 신뢰성을 보장할 수 있습니다. (장점) - 3-way handshaking 등으로 상호 연결을 먼저 한 다음 전송해야 하므로 절차가 복잡합니다. (단점) - 패킷을 분할해서 전송한 후 모든 패킷이 오류 없이 전송되었는지 확인하고 순서대로 패킷을 받아 재결합 해야 하므로 전송 속도가 느립니다. UDP (User Datagram Protocol) - 예시: 멀티미디어(이미지, 사운드, 동영상 등) 전송, 온라인 게임 - 별도의 상호 연결 없이 전송하므로 절차가 단순합니다. - 전송 ..

알고리즘 사이트 소개 및 각 장단점

이번 시간에는 알고리즘 사이트를 소개한 다음 장단점을 살펴보면서 비교해보겠습니다. ** 아래의 사이트는 모두 필자가 경험하였으나 일부 주관적 견해가 들어있습니다. (1) 백준 (https://www.acmicpc.net/) - 알고리즘 대회(SCPC, ACM-ICPC 등)를 대비하는 사람들한테 적합합니다. - 문제가 한글로 적혀있어서 국내 유저분들이 접하기 쉽습니다. (장점) - 통과 못한 케이스를 알려주지 않으므로 어디가 잘못되었는지 찾는 것이 조금 어렵습니다. - 코딩하기 위한 틀을 전혀 제공해주지 않으므로 모든 코드를 처음부터 끝까지 다 구현해야 됩니다. 예를 들어 C언어로 코딩한다고 가정하면 '#include' 부터 끝까지 다 본인이 구현해야 됩니다. (단점) (2) 프로그래머스 (https://..

IT강의/(Others) 2021.06.27
728x90
반응형
LIST