적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

컴퓨터시스템 23

thread란? + 멀티쓰레드의 장단점

Process & Thread 프로세스 : 실행 중인 프로그램. 자원(resources. 메모리, CPU ...) + 쓰레드로 구성 쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 프로세스 : 쓰레드 = 공장 : 일꾼 싱글 쓰레드 프로세스 = 자원 + 쓰레드 멀티 쓰레드 프로세스 = 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드 여러 작업을 나눠 동시에 수행 가능. 보다 효율적으로 처리할 수 있다. 대부분의 프로그램은 멀티쓰레드로 작성되어 있다. 멀티쓰레드의 장단점 장점 - 시스템 자원을 보다 효율적으로 사용할 수 있따. - 사용자에 대한 응답성(responseness)이 향상된다. - 작업이 분리되어 코드가 간결해진다. 단점 프로그래밍할 때 고려해야..

컴퓨터시스템 2022.05.13

네트워크 기초

네트워크란? 노드들이 데이터를 공유할 수 있게 하는 디지털 전기통신망의 하나. 즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것. 서로 연결되어 있는 하나의 통신망 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터를 교환한다. *노드 : 네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말 전 세계의 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크가 바로 인터넷. (인터넷은 네트워크 망의 한 종류. 세상에서 가장 큰 네트워크 통신망) www (world wide web) 일반적으로 웹이라고 하며, 인터넷상에서 쉽게 정보를 찾을 수 있도록 고안된 세계적인 인터넷망으로, HTTP 프로토콜을 사용하기 위한 인터페이스 는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것. 웹서비스 (http..

컴퓨터시스템 2022.01.06

[네트워크] 네트워크 패킷 분석 및 Wireshark 설치 (mac)

Wireshark 설치 및 http 네트워크 패킷 분석 방법 네트워크 패킷(packet) 이란? 네트워크를 통해 전송하기 쉽도록 자른 데이터의 전송단위. 패킷은 제어 정보와 사용자 데이터(페이로드)로 이루어진다. ex) IP 패킷은 헤더와 페이로드로 이루어진다. 페이로드 : 전송되는 실제 데이터. 전송의 근본적인 목적(필요한 정보)이 되는 데이터의 일부분. 함께 전송되는 헤더와 메타데이터 같은 데이터는 제외한 것. 프로토콜 오버헤드 : 네트워크를 통해 대상으로 라우팅되는 데이터와 함께 전송되어야 하는 정보. 올바른 대상에 도달하기 위해 전송중인 데이터에 추가로 보내지는 정보라고 볼 수 있다. 보통 패킷의 시작 부분, 헤더에 저장되어 Header라고도 함. 목적 : 정보 전송의 신뢰성 확보 및 시스템의 안..

컴퓨터시스템 2022.01.06

사용자 인증 방식 - OAuth, JSON Web Token(JWT)

HTTP 인증 사용자 인증 Authorization : 하나의 세션 동안 사용자의 신원을 확인하여 인증하는 것. 사용자 인증 방식 - 기본 인증 (ID/PW) - 토큰 인증 (OAuth, JWT) - 전자 서명 로그인은 사용자 인증의 한 방식일 뿐. 단순히 http 헤더에 사용자 계정정보(Id/pw)를 넣어 서버에서 식별하게 되면 제 3자에 의해 탈취당했을 때 개인정보가 드러나기 때문에 보안에 좋지 않은 방식이라 할 수 있다. 기본 인증 방식은 보안에 매우 취약한 구조이기 때문에 OAuth JWT 같은 다른 대안들이 떠오르고 있다. 쿠키와 세션 로그인 과정에서만 계정 정보를 서버에 직접 보내고, 그 후로는 세션과 쿠키를 활용하여 인증하는 방식. HTTPS는 Stateless, Connectionless라..

컴퓨터시스템 2021.12.31

low-level / high-level 프로그래밍 언어

고급 프로그래밍 언어 high-level programming language 사람이 이해하기 쉽게 작성된 프로그래밍 언어. 가독성이 높고 다루기 간단하다는 장점. 컴파일러나 인터프리터에 의해 low-level programming language로 번역되어 실행됨. C, 자바 등 대부분의 프로그래밍 언어는 고급언어에 속한다. 추상화의 정도에 따라 프로그래밍 언어의 high / low 레벨이 나뉨..? 저급 프로그래밍 언어 low-level programming language 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어. (기계어, 어셈블리어) 실행속도가 매우 빠르지만 배우기 어렵고, 유지보수가 힘든 것이 단점 기계어(machine code) - 특별한 변환과정 없이 컴퓨터가 직접 처리할 수 있는 유..

컴퓨터시스템 2021.11.22

CRUD

CRUD란? 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말. 사용자 인터페이스에서 새로운 정보를 추가 / 검색 / 편집 / 삭제 하는 기능을 가리키는 용어로도 사용된다. 다음과 같이 표준 SQL문으로 대응 가능하다 이름 조작 SQL Create 생성 INSERT Read(또는 Retrieve) 읽기 SELECT Update 갱신 UPDATE Delete 삭제 DELETE

컴퓨터시스템 2021.05.21

SDK? API?

SDK란? Software Development Kit 소프트웨어 개발 키트 특정 소프트웨어 프레임워크, 컴퓨터 시스템, 운영 체제 등을 위한 응용 프로그램 등을 만들 수 있게 해주는 개발 도구의 집합. 응용 프로그램을 만들기 위해서는 특정한 SDK를 다운로드 받아야 하는데, 안드로이드 앱 개발을 위해서는 Java를 포함한 SDK, iOS 개발을 위해서는 Swift가 포함된 iOS SDK, MSWindows를 위해서는 .NET을 포함한 .NET Framework SDK가 필요하다. (SDK 안에는 개발에 도움이 될 개발 도구 프로그램, 디버깅 프로그램, 문서, API 등이 있다. ) API란? Application Programming Interface 응용 프로그램에서 사용할 수 있도록, 운영 체제나 ..

컴퓨터시스템 2021.04.28

http vs. https 차이

URL이란? Uniform Resource Locator : 웹 사이트 혹은 컴퓨터 네트워크 상 자원의 위치를 알려주는 참조 주소. url에 접속하기 위해서는 해당 url에 맞는 프로토콜을 알고, 그와 동일한 프로토콜로 접속해야 한다. HTTP인 경우 웹 브라우저를 사용하여 접속해야 함. HTTP란? HTTP - 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자 : 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜 정보를 텍스트로 주고받기 때문에 네트워크에서 전송 신호를 인터셉트하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. 이러한 보안 취약점을 해결하기 위한 프로토콜이 HTTPS HTTPS란? HTTPS - 하이퍼 텍스트 전송 프로..

컴퓨터시스템 2021.04.19

[Programming Paradigm] 객체지향 vs. 절차지향

객체지향 프로그래밍과 절차적 프로그래밍은 둘 다 명령형 프로그래밍의 하위 개념으로, 객체를 사용하느냐 사용하지 않느냐에 따라 구분한 것일 뿐 서로 반대되는 개념이 아니다. Object Oriented Programming 객체지향 프로그래밍 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 '객체'들의 모임으로 파악하여 객체간의 상호작용으로 프로그램의 동작을 구현하고자 하는 것. 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다. 상호작용하는 객체들의 집합 왜? Procedur..

컴퓨터시스템 2021.04.16

[Programming Paradigm] declarative(선언형) vs. imperative(명령형) programming

명령형 imparative : 어떤 방법으로 어떻게 하려고 하는가 writing sequence of introductions that the program follows (uses statements that change a program’s state?) - 실행될 알고리즘을 명시하고 목표는 명시하지 않음 - 객체지향 프로그래밍(Swift UIKit, Java 등), 절차적 프로그래밍 등이 명령형 선언형 declarative : 무엇을 하려고 하는가 expresses the logic of a computation without describing its control flow. don’t specify how to achive - 목표를 명시하고 알고리즘을 명시하지 않음. - 함수형 프로그래밍(Sw..

컴퓨터시스템 2021.04.01
728x90
반응형