캡슐화

비슷한 역할을 하는 속성과 메소드들을 하나의 클래스로 모은것을 캡슐화 라고 한다. 캡슐화에 속한 개념으로 정보 은닉이라는것이 있는데, 캡슐 내부의 로직이나 변수들을 감추고 외부에는 기능(api)만을 제공하는것을 의미한다.

 

상속

상속이란 클래스를 재사용 하는것이다. 상위 클래스를 하위 클래스에서 상속 받게 되면 상위 클래스의 멤버변수나 메소드를 그대로 물려 받을 수 있다. 상속이 있기 때문에 코드를 재활용할 수 있고 그렇기 때문에 생산성이 높고 유지보수 하기가 좋다. 

 

추상화

추상화라는것은, 어떤 실체로부터 공통적인 부분이나 관심 있는 특성들만 한곳에 모은것을 의미한다. 예를들어서, 지구를 본따 만든 지구본을 예로 들 수 있다. 지구본은 실제 지구로 부터 관심 있는 특성들(대륙의 위치, 위도,경도)만 뽑아서 만든것이다. 지구를 추상화해서 지구본을 만들었다.

객체지향에서의 추상화는 어떤 하위클래스들에 존재하는 공통적인 메소드를 인터페이스로 정의하는것을 예로 들 수 있다.

 

다형성

다형성은, 같은 모양의 함수가 상황에 따라 다르게 동작 하는것을 의미한다. 오버로딩과 오버라이딩이 있는데, 오버로딩이란것은 함수의 이름은 같으나 함수의 매개변수 숫자, 타입등을 달리해서 다르게 사용하는것을 의미하고, 오버라이딩은 상위 클래스의 메소드를 하위 클래스에서 똑같은 이름으로 재정의 하는것을 의미한다.(덮어씌우기) 이렇게 되면, c++의 경우에는 상위 클래스 타입 변수에 하위 클래스를 담은 상태에서 메소드를 호출하면 상위 클래스의 메소드가 호출되고, 하위 클래스 타입 변수에 하위 클래스를 담으면 하위 클래스의 메소드가 호출된다. 즉, 메소드의 이름은 똑같은데, 상황(상위 클래스의 참조 변수냐 하위 클래스의 참조 변수냐)에 따라 호출 되는 메소드가 다른것이다.

'* > What I did today' 카테고리의 다른 글

JOIN  (0) 2021.08.21
Process vs Thread  (0) 2021.08.20
dto와 entity를 구분해서 구현한 이유  (0) 2021.08.20
Web Server VS WAS  (0) 2021.08.16
스프링 핵심 원리 이해1 - 예제 만들기  (0) 2021.08.06
DNS  (0) 2021.05.02
비전공자를 위한 이해할 수 있는 IT지식 (정리)  (0) 2021.04.13
네트워크 개요  (0) 2021.04.11

DNS의 목적

Domain Name System

호스트명과 IP 주소 매핑을 수행하는 시스템

-ip주소는 0이나 1이 32번 반복되는 비트의 나열이므로 기억하기 힘들다. -> 사람이 알기쉽게 하고자 컴퓨터에 호스트명을 붙이고ㅓ 통신상대를 지정하게 만든것

호스트명으로 통신상대를 지정하더라도 변함없이 통신상대의 IP주소가 필요하므로 호스트명에 매핑된 IP주소를 가져오는 시스템, 이름해석이 필요

 

DNS의 구조

리소스 레코드 : 호스트명과 IP주소의 매핑

 

도메인과 존 

도메인 : 호스트명의 집합

 

http://www.naver.com/ 

www.naver.com :웹서버의 의 호스트명

www.naver.com의 IP주소를 알아내기 위해서 자동으로 DNS서버에 질의

DNS서버의 IP주소가 잘못 지정되어있다면 DNS서버에 네임쿼리가 도달하지않음->이름해석x->접근불가

 

 

 

'* > What I did today' 카테고리의 다른 글

JOIN  (0) 2021.08.21
Process vs Thread  (0) 2021.08.20
dto와 entity를 구분해서 구현한 이유  (0) 2021.08.20
Web Server VS WAS  (0) 2021.08.16
스프링 핵심 원리 이해1 - 예제 만들기  (0) 2021.08.06
캡슐화/추상화/다형성  (0) 2021.08.03
비전공자를 위한 이해할 수 있는 IT지식 (정리)  (0) 2021.04.13
네트워크 개요  (0) 2021.04.11

프로그래밍 :프로그래밍언어로 문서작업하는 행동

 

개발자 : 프로그래밍 언어를 통해 운영체제 위에 돌아가는 프로그램을 만드는 사람, 컴퓨터에게 일을 시킨다. 

 

컴파일러 :프로그래밍 언어를 사용해 컴파일러에게 명령을 전달하면 컴파일러가 그 명령을 기계어인 0과 1로 변환해 컴퓨터에게 전달을 하는방식

 

IDE : 개발자들의 작업을 도와주는 기능들이 있는 프로그램 , 통합 개발 환경 Intergrated Development Environment

     개발하기위한 모든것들을 제공해주는 환경

ex, 안드로이드 위에 올라가는 애플리케이션을 만들기위해서는 안드로이드 스튜디오 IDE사용

 

 

프로그래밍언어를 구분하는 하나의 기준:

-고수준 : 인간 친화적인 언어, 저수준보다 작동이 느리다(사양에 따라 다름) ,스마트폰, 데스크탑

-저수준 : 컴퓨터 친화적인 언어 , IPTV,스캐너,프린터,프로젝트

 

컴퓨터 구성요소

 메인보드에..

-CPU : 컴퓨터의 머리역할 (프로그램의 실행)

-메모리(RAM) :CPU의 개인 작업공간  (CPU가 더이상 보조기억장치에 필요한 데이터를 요청하지않고, 데이터뭉치를 보조기억장치에서 메모리로 한번에 옮겨놓고 메모리안에서만 작업)

-하드디스크(HDD) : 컴퓨터의 창고

-보조기억장치(SSD) : 컴퓨터의 창고 (바탕화면에서 포토샵더블클릭, 보조기억장치에 저장된 프로그램실행)

 

운영체제 : 하드웨어관리 (하드웨어의 용량, 보조기억장치관리, 프로그램 설치,실행) , CPU와 메모리등을 관리

-윈도우 by 마이크로소프트 :C#, visual basic, c++, JavaScript

-맥 OS, IOS by 애플 : Object-c, swift

-안드로이드 by 구글 : java,kotlin

 

JVM(Java virtual machine) : 각 운영체제 위에 JVM이라는 소프트웨어가 만들어짐

자바로만 프로그램을 만들어도 모든 운영체제에서 사용 할 수있다

 

네트워크

LAN : 컴퓨터가 연결된 작은 지역  Local Area Network

MAN : Metropolitan Area Network, 도시의 여러 LAN을 하나로 연결

WAN : 도시와 도시, 나라와 나라를 모두 연결

 

앱스토어에서 카톡다운로드시 : 나의 스마트폰 "카톡설치파일보내줘" -> 컴퓨터가 연결되어있는 네트워크 "142,203,124,152주소로 카톡설치파일보내줘" -> 애플이 켜놓은 컴퓨터"파일이거받아 - >컴퓨터가 연결되어있는 네트워크 - >나의 스마트폰

 

서버 : 클라이언트 요청에 응답하는 컴퓨터, 데이터를 주는 컴퓨터

리눅스 : made by 리누스 토발스 (깃도 만듬)

리눅스 위에서 서버프로그램을 돌린다

리눅스 : 하드웨어를 관리해서 사용자가 프로그램을 사용하기 쉽게 도와주는 윈도우나 맥같은 운영체제, 그래픽 UI없이 명령어로 동작

우분투 : 리눅스 버전중 하나

안드로이드 : 리눅스의 개량버전 

 

호스팅업체 : Cafe 24, 가비아 . 아마존의 AWS 등 , 서버제공

 

API: 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계

API는 서버 개발자가 개발하고 ,클라이언트 개발자는 그 API를 사용

ex, 서버주소/A라고 신호를 보내면 서버가 로그인 기능을 수행하고 응답

API를 통해 요청과 응답을 주고 받을때는 데이터도 같이 담긴다

CRUD : 데이터를 다룰떄 기준이 되는 요청

C : creat  타임라인에 사진을 올리는 요청

R :  read 타임라인에 사진을 불러오는 요청

U : upgrade 바꾸는 요청

D : delete

CRUD관심에서 데이터를 바라봐야한다

 

RESTful API : Representational State Transfer, 상황마다 다양한 방식으로 변형해서 사용

 

Creat : POST

Read : GET

Update : PUT(전체) / PATCH(일부)

Delete : DELETE

 

클라이언트에서 요청을 보내면 서버는 응답을한다. 이때 잘됐어, 잘안됐어에 체계가있다.

잘됐어는 200번대

잘안됐어

-클라이언트의 요청때문 : 400번대

-서버내부적문제 : 500번대

 

404 : 보통 정의되지 않은 요청을 보낼때 나타난다. 서버는 문제없이 돌아가는데 요청이 이상하다는 얘기

 

API : 소프트웨어가 다른 소프트웨어의 기능을 쓰기위해 중간에 필요한 체계.

  기능을 사용하기 위해 주소로 요청을 보내면 응답을 해주는 소프트웨어끼리의 체계

 

내 소프트웨어 "API요청"-> 다른소프트웨어 "한글번역기능"응답

 

SDK : software development kit 의 약자

소프트웨어를 개발할때 도움을 주는 다른 소프트웨어

ex. 내소프트웨어에 구글지도 SDK설치, 구글지도 SDK에서 제공해주는 API사용

 

요청과 응답을 주고 받을때의 형식

XML

JSON : 중괄호로시작, 키와 값으로 이루어짐, 키와 값은 콜론으로 구분 

클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON형식으로 주고받는다

 

애플리케이션 : 운영체제위에 올라가는 프로그램, 설치해야하는 프로그램, 응용프로그램, 어플, 앱 

 


 

HTTP :운영체제나 프로그램에 상관없이 일정한 형식이 언제나 동일하게 보이도록 하는 개념등장

태그 ; HTML을 구성하는 코드

HMTL: 브아루저가 볼 수있는 문서를 적는 언어

Javascript :  사용자가 a를 쳤단느 것을 감지 -> a에 해당하는 실시간 검색어 목록을 조회하는 API요청을 네이버 서버로 보냄(GET요청)->네이버서버가 a에대한 실시간 검색어 목록을 정리해서 응답(JSON형식)->javascript는 그 응답을 열어서 HTML로 바꿈

 

관계형 데이터 베이스 관리 시스템 (RDBMS) : 관계형 데이터베이스의 철학으로 만들어진 관리시스템

MS SQL, Oracle DB, MySQL, MariaDB

 

-로컬,대부DB,네이티브, 클라,프론트

-서버,API,DB,백

 

프레임워크 : 각종 라이브러리와 코드들이 모여 프레임워크가 된다

라이브러리 : 더 작은 개념 가위같은 도구

 

깃: 개발 단계별로 깃발을 꽂을 수있다. 그 행위를 커밋이라고 한다

커밋로그 : 무슨개발했는지 적어두는 메모

체크아웃 : 깃발이 꽂힌 부분의 코드로 옮겨다닐수있다.

브랜치 : 새로운 가지를 뻗는것

새로운 방향의 개발을 추가할때 기존개발에 이어서 작업하지않고, 새롭게 가지를 쳐서 작업

머지 : 코드 합치는 기능 

'* > What I did today' 카테고리의 다른 글

JOIN  (0) 2021.08.21
Process vs Thread  (0) 2021.08.20
dto와 entity를 구분해서 구현한 이유  (0) 2021.08.20
Web Server VS WAS  (0) 2021.08.16
스프링 핵심 원리 이해1 - 예제 만들기  (0) 2021.08.06
캡슐화/추상화/다형성  (0) 2021.08.03
DNS  (0) 2021.05.02
네트워크 개요  (0) 2021.04.11

데이터를 주고받는 주체

데이터를 송수신하는 통신의 주체는 애플리케이션

애플리케이션간의 통신은 양방향이다.

애플리케이션간의 통신 방식은 클라이언트 서버 애플리케이션 과 피어두피어 애플리케이션으로 분류된다

 

통신에서 이용하는 언어

통신하기 위한 데이터 형식 등의 규칠을 프로토콜이라고 부른다

복수의 프로토콜을 조합한 네트워크 아키덱처에 기반하여 통신한다

현재는 네트워크 아키덱처로서 TCP / IP를 이용한다

 

네트워크의 구성

PC나 서버, 네트워크 기기에는 네트워크에 접속하기 위한 인터페이스가 갖추어져 있다.

인터페이스끼리 전송매체로 연결하고 링크를 구성해서 네트워크를 만든다.

인터페이스는 0,1 의 디지털 데이터와 물리적인 신호의 경계다.

 

 


프로토콜 : 통신하기위한 규칙

헤더 : 데이터를 보낼때 필요한 정보를 데이터에 추가한 정보. 저장되거나 전송되는 데이터의 맨앞에 위치하는 추가적인 정보데이터. 데이터의 내용이나 성격을 식별 또는 제어하는데 사용  

캡슐화 : 데이터를 상대방에게 보낼때 각 계층에서 헤더를 포함하여 나가는것 <->역캡슐화

 

'* > What I did today' 카테고리의 다른 글

JOIN  (0) 2021.08.21
Process vs Thread  (0) 2021.08.20
dto와 entity를 구분해서 구현한 이유  (0) 2021.08.20
Web Server VS WAS  (0) 2021.08.16
스프링 핵심 원리 이해1 - 예제 만들기  (0) 2021.08.06
캡슐화/추상화/다형성  (0) 2021.08.03
DNS  (0) 2021.05.02
비전공자를 위한 이해할 수 있는 IT지식 (정리)  (0) 2021.04.13

+ Recent posts